Когда я использую AnalogueWrite, напряжение не меняется должным образом.

У меня есть проект, в котором я хочу управлять насосом, я использую Arduino, подключенную к драйверу L298N, и подключаю контакты 5, 6, 7 Arduino к контактам IN2, IN1, ENA драйвера. соответственно и двигатель будет подключен к выходу

Моя техника:

  • Ардуино Уно R3
  • Мультиметр
  • Arduino IDE 2.1.1

Проблема: Когда я использую функцию AnalogWrite, напряжение варьируется только между двумя значениями (0 В или 5,5 В). В качестве контакта использовался цифровой контакт №7, отмеченный кодом 7.

Код:

#define PUMP_DIR_1 5
#define PUMP_DIR_2 6
#define PUMP_PWM 7
#define INVERTED 0

void setup() {
  Serial.begin(9600);
  pinMode(PUMP_PWM, OUTPUT);
}

void set_pump_speed(int speed){
  Serial.print("Set speed ");
  Serial.print(speed);
  Serial.print("\r\n");
  analogWrite(PUMP_PWM, speed);
}

void loop() {
  set_pump_speed(255);
  delay(3000);
  set_pump_speed(0);
  delay(3000);
  set_pump_speed(125);
  delay(3000);
}

В качестве вывода я получил:

00:32:17.184 -> Установить скорость 0
00:32:20.175 -> Установите скорость 125
00:32:23.178 -> Установите скорость 255
00:32:26.182 -> Установить скорость 0
00:32:29.197 -> Установите скорость 125
00:32:32.201 -> Установить скорость 255

Из мутлиметра я получил:

0 В, когда скорость = 0
0 В при скорости = 125
5,5 В при скорости = 255

Ардуино ни к чему не подключен

, 👍1


1 ответ


Лучший ответ:

1

Пин 7 не является контактом ШИМ. Используйте, скажем, контакт 6, и вы получите правильные результаты. Выводы ШИМ отмечены знаком «~». на плате.

,

Спасибо за ваш ответ, я чувствую себя глупо, потому что я не первый раз использую ШИМ на Arduino и никогда не принимал это во внимание., @Nept0

@Nept0 Не волнуйся! Должно быть, в прошлый раз это сработало случайно, теперь вы знаете, почему. :), @Nick Gammon