L298N Драйвер двигателя постоянного тока, головоломка
Я пытаюсь управлять одним двигателем постоянного тока с помощью драйвера двигателя постоянного тока L298N. У меня есть двигатель 12 В, подключенный к Out1 и Out2, батарея 7,4 В, подключенная к 12 В и общему заземлению, общее заземление m/m, идущее от arduino grnd к общему заземлению L298N, и у меня есть IN1 и IN2, подключенные к цифровым контактам 2 и 3. Я питаю Uno с помощью USB. Я также провожу провод m/m от Uno 5v к L298N (мне это не нужно), чтобы питать L298N
Я использую базовый код для тестирования двигателя
int motor1pin1 = 2;
int motor1pin2 = 3;
void setup() {
// put your setup code here, to run once:
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
delay(1000);
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, HIGH);
delay(1000);
}
Если я подключу липо-аккумулятор 7,4 В непосредственно к L298N, красный светодиод не загорится. Это происходит только тогда, когда я подключаю провод 5 В от Uno к L298N. И все же я не получаю никакой реакции от мотора. Однако если я запускаю землю от arduino непосредственно к out1 или out2, двигатель поворачивается в этом направлении. У кого-нибудь есть идея, что я делаю не так?
@Matthew Kerry, 👍3
2 ответа
Я не вижу никаких проблем в вашей проводке и коде. Единственное, что не совсем оптимально, так это то, что напряжение, обеспечиваемое батареей, недостаточно высокое. Напряжение питания L298N должно быть не менее чем на 2,5 В выше логического напряжения питания (точнее, логического ВЫСОКОГО уровня). Это составит 7,5В - у вас есть только 7,4В.
Это звучит как крошечный зазор, но напряжение батареи может упасть еще больше под нагрузкой.
"запустите заземление от arduino непосредственно к out1 или out2" - вы не должны этого делать, так как это может создать короткое замыкание, в зависимости от состояния контактов EN и IN.
Предполагая, что у вас есть перемычка ENABLE для включения управления двигателем, вы сможете управлять двигателем на полной скорости вперед или назад вообще без кода UNO-просто используйте линии +5V и GND от UNO в качестве "датчиков логического уровня".
Согласно моей логической таблице, НИЗКИЙ УРОВЕНЬ (GND) на L1 и ВЫСОКИЙ (+5 В) НА L2 заставят двигатель, подключенный к OUT1/2, вращаться в одну сторону, а реверсирование логики на L1/2 заставит его вращаться в другую сторону - на полной скорости (полная скорость-это что угодно напряжение питания аккумулятора может обеспечить).
Как только у вас есть двигатель(ы), который вращается правильно, вы можете добавить сложность в попытке контролировать скорость и направление программно. Код, который вы показали, делает точно то же самое, что и просто использование выводов +5 и GND в качестве зондов - с задержкой в 1 секунду между разворотами.
Надеюсь, это поможет
Фрэнк
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Согласно моей таблице данных, L298N требует, чтобы входное напряжение было выше 6 В только при использовании регулируемого выхода 5 В - в противном случае это 5-35 В, @user3765883
Похоже, у вас не включен выход регулятора +5V, а это значит, что вам нужен +5V от UNO. Из спецификации: "Модуль включает в себя бортовой регулятор. При включении перемычкой в качестве выхода предоставляется +5В. При отключении требуется отдельный вход +5 В для управления схемой логического уровня этого модуля", @user3765883