L298N издает звуковые сигналы и дает сбой при получении определенных значений AnalogWrite

  1. Я создал простую схему с UNO, L298N и одним двигателем.

  2. Написал следующий код для проверки управления скоростью двигателя.

  3. Мотор протестирован с помощью функции digitalWrite(), и он работает нормально.

  4. Протестированный двигатель с функцией analogWrite() и от 255 до примерно 70 двигателя работает на различных скоростях.

В: Но начиная с 70 и ниже, L298N начинает издавать звуковой сигнал, и двигатель перестает вращаться. Есть мысли?

int enr = 9;
int inr1 = 8;
int inr2 = 7;


void setup() {
 pinMode(enr, OUTPUT);
 pinMode(inr1, OUTPUT);
 pinMode(inr2, OUTPUT);  
}

void loop() {
  analogWrite(enr, 71);
  digitalWrite(inr1, HIGH);
  digitalWrite(inr2, LOW);
}

, 👍1

Обсуждение

LN298N не должен издавать звуковой сигнал и не должен издавать звуковой сигнал. Может быть это мотор, который пищит? То, что двигатель не движется ниже 71, может быть связано с тем, что трение слишком велико для движения двигателя., @chrisl


1 ответ


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

2

Хорошо, вот моя теория происходящего:

Ротор каждого двигателя имеет определенное трение. Вам нужно передать достаточно энергии, чтобы преодолеть это трение, иначе двигатель не будет двигаться. Когда вы используете analogWrite(enr, 71) или ниже, вы передаете только небольшое количество энергии двигателю, так что он не может преодолеть трение.

Теперь вы должны понять, что на самом деле делает analogWrite(). Он не выводит аналоговое напряжение. Вместо этого он генерирует ШИМ-сигнал. Напряжение изменяется между ВЫСОКИМ и НИЗКИМ уровнями (5 В и 0 В в случае Uno) с определенной частотой. Отношение между временем HIGH и временем LOW называется рабочим циклом. То есть то, что управляет скоростью двигателя. Таким образом, вместо того, чтобы подавать разные напряжения, мы очень быстро включаем и выключаем двигатель. Поскольку ротор имеет относительно большую инерцию (из-за своей массы), он не может реагировать достаточно быстро, чтобы следовать этим импульсам. Мы только даем ему небольшие толчки очень быстро. Вместо этого он интегрируется по всем импульсам. Если рабочий цикл низкий (скорее НИЗКИЙ, чем ВЫСОКИЙ), только небольшое количество энергии передается двигателю.

Итак, что делает двигатель, когда ему не хватает энергии для преодоления трения? Он по-прежнему будет получать небольшие толчки очень быстро, но на самом деле не может вращаться. Вместо этого переданная энергия вызовет вибрации в двигателе, которые имеют частоту ШИМ-сигнала. Затем эти вибрации можно услышать как непрерывный звуковой сигнал.

Если передается достаточно энергии для преодоления трения, ротор вращается правильно и не вибрирует, поэтому звуковой сигнал не слышен.

Что делать сейчас:

Описанный принцип применим к каждому двигателю, поэтому здесь мало что можно сделать. Можно просто пойти по простому пути и не гонять мотор с такими малыми скважностями. Другая причина может заключаться в том, что ваш двигатель любит получать более высокий ток, чтобы дать ему полную мощность. L298N довольно неэффективен, поэтому вы можете заменить его на драйвер H-моста, в котором вместо биполярных транзисторов используются полевые МОП-транзисторы. Также, возможно, вы можете увеличить напряжение, которое вы используете для привода двигателя (в зависимости от не указанного двигателя).

Вы не описали, как вы все подключили, поэтому 2 других момента: вы не можете управлять двигателем от питания цифровых контактов (поскольку цифровой выходной контакт может обеспечить только 40 мА при максимуме, рекомендуется 20 мА), и вы также должны не питайте двигатель через Arduino, так как вы можете сжечь регулятор напряжения или защитный диод. Вы можете избежать этого при использовании небольших двигателей без какой-либо нагрузки, но это плохо масштабируется. Вы всегда должны подключать цепь двигателя напрямую к источнику питания, чтобы ток двигателя не протекал через Arduino.

,

Потрясающая информация! Спасибо. Проблема трения имеет смысл (двигатели питаются от внешнего источника 7,5 В). Я привык к двигателям Lego Mindstorms, которые могут вращаться очень медленно. Сейчас я скорректирую свои ожидания и рассмотрю альтернативные конфигурации в будущем. Я читал, что L258N — это древняя технология, но к тому времени я уже завершил свой проект! Спасибо!, @yannism