Arduino постоянно перезапускается с L9110 и двигателем постоянного тока
Я пытаюсь управлять двигателем постоянного тока с помощью драйвера двигателя L9110 и Arduino MEGA 2560. Вот код.
#include <Arduino.h>
const int rightA = A3;
const int rightB = A2;
void setup() {
Serial.begin(9600);
pinMode(rightA, OUTPUT);
pinMode(rightB, OUTPUT);
}
void loop() {
Serial.println("tick");
digitalWrite(rightA, HIGH);
digitalWrite(rightB, LOW);
Serial.println("waiting for 1s...\n");
delay(1000);
Serial.println("stopping");
digitalWrite(rightA, LOW);
digitalWrite(rightB, LOW);
Serial.println("waiting for 5s...\n");
delay(5000);
}
То есть, он должен вращать двигатель 1 секунду, затем ждать 5 секунд и повторять. Это происходит всего один или два раза, после чего Arduino либо зависает, либо перезапускается, а двигатель продолжает работать.

Я использую отдельный источник питания для платы драйвера, подключил землю Arduino и драйвера, а также подключил конденсатор ёмкостью 100 нФ. Это первые очевидные проблемы, которые я нашёл на других форумах, так что проблем быть не должно. Внешний блок питания рассчитан на 5 В и 1 А, а ток, потребляемый двигателем, не должен превышать 500 мА. Однако он всё равно не работает. Может кто-нибудь подсказать, где искать?
Я использую эти моторы
@Jozef Cipa, 👍1
2 ответа
Ток запуска двигателя, вероятно, во много раз превышает ток работающего двигателя. Как только ток двигателя превысит допустимую мощность источника питания, напряжение питания, вероятно, упадёт. После того, как ток опустится ниже уровня напряжения на контактах Arduino A1 или A2, двигатель попытается потреблять ток через контакты ввода/вывода Arduino. Это может вызвать ряд проблем. В том числе, например, попытку питания от USB-порта Macbook.
При выборе источника питания многие выбирают вдвое больший ожидаемый ток. С двигателями сложно работать, потому что чем больше работы они совершают, тем больший ток они могут потреблять.
Если вы ограничены источником питания 5 В/1 А, попробуйте решить эту проблему программно. Можно использовать ШИМ-сигнал для «плавного запуска» электродвигателя.
Или приобретите блок питания, рассчитанный на гораздо больший ток, чтобы покрыть пусковой ток двигателя.
Ваш адаптер питания 5 В 1 А может не обеспечивать достаточный ток для двигателя и платы драйвера. Двигатели могут потреблять больше тока при запуске или под нагрузкой. Попробуйте использовать источник питания с более высоким номинальным током, например, 5 В 2 А или более. Измерьте напряжение на контактах Vcc и GND драйвера двигателя во время работы двигателя. Если напряжение значительно падает ниже 5 В, питания недостаточно. Для лучшего сглаживания сигнала добавьте электролитический конденсатор ёмкостью 10 мкФ или 100 мкФ параллельно керамическому конденсатору ёмкостью 100 нФ. Вы также можете собрать модуль L9110 самостоятельно:
https://www.pcbway.com/project/shareproject/DIY_Motor_Control_Building_and_Using_the_L9110_Module_679076e3.html
Привет, спасибо за ответ. В конце концов я решил проблему, заменив модуль L9110 на TB6612FNG., @Jozef Cipa
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как управлять 4 двигателями постоянного тока с помощью Arduino?
- Измерение скорости двигателя постоянного тока с помощью поворотного энкодера
- Почему Arduino сбрасывается во время управления двигателями?
- Запуск нескольких двигателей одновременно
- Переменная скорость разгона для двигателей, управляемых джойстиком
- Как заставить двигатели постоянного тока работать одновременно?
- Нужна помощь в создании кода, который перемещает двигатель постоянного тока CW или CCW с помощью двух разных кнопок
Спасибо за советы. В конце концов, я исправил проблему, используя драйвер TB6612FNG с МОП-транзисторами, а также ШИМ для плавного запуска двигателей., @Jozef Cipa