Драйвер двигателя L298N: различия между версиями
Root (обсуждение | вклад) Нет описания правки |
Root (обсуждение | вклад) Нет описания правки |
||
Строка 98: | Строка 98: | ||
Перемычки на контактах ENA и ENB убраны - можно менять скорость вращения. | Перемычки на контактах ENA и ENB убраны - можно менять скорость вращения. | ||
Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает Arduino.< | Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает Arduino. | ||
<source lang="c" line start="1"> | |||
byte ena = 9; | byte ena = 9; | ||
byte in1 = 7; | byte in1 = 7; | ||
Строка 136: | Строка 137: | ||
delay(3000); // пауза 3сек | delay(3000); // пауза 3сек | ||
} | } | ||
</ | </source> |
Версия от 13:33, 15 мая 2021
L298N - драйвер коллекторных двигателей на 2 канала, который может также применяться для управления одним шаговым мотором. Представляет собой полный H-мост, главная функция которого — менять полярность на нагрузке. Если в качестве нагрузки будет мотор постоянного тока, то смена полярности приведет к смене направления его вращения.
Драйвер позволяет просто и понятно управлять скоростью вращения моторов в обоих направлениях с помощью ШИМ (раздельно для каждого мотора).
Спецификация модуля L298N:
- напряжение питания двигателей: до 35 В;
- рабочий ток (на каждый канал): 2 А;
- периодический ток (80% — вкл, 20% — выкл): 2,5 А;
- кратковременный ток: 3 А;
- вес: 33 г.
Контакты драйвера
- OUT1 и OUT2 – разъёмы для подключения первого щёточного двигателя или первой обмотки шагового двигателя;
- OUT3 и OUT4 – разъёмы для подключения второго щёточного двигателя или второй обмотки шагового двигателя;
- VSS – вход для питания двигателей (максимальный уровень +35V);
- GND – общий провод (не забываем соединить с аналогичным входом Arduino!!!);
- Vs – вход для питания логики +5V. Через него непосредственно запитывается сама микросхема L298N. Есть ещё второй способ питания, при котором 5V для L298N берётся от встроенного в модуль стабилизатора напряжения. В таком случае на разъём подаётся только питание для двигателей (Vss), контакт Vs остаётся не подключенным, а на плате устанавливается перемычка питания от стабилизатора, который ограничит питающее моторы напряжение до приемлемых 5V.
- IN1, IN2 – контакты управления первым щёточным двигателем или первой обмоткой шагового двигателя.
- IN3, IN4 – контакты управления вторым щёточным двигателем или второй обмоткой шагового двигателя.
- ENA, ENB – контакты для активации/деактивации первого и второго двигателей или соответствующих обмоток ШД. Подача логической единицы на эти контакты разрешает вращение двигателей, а логический ноль – запрещает. Для изменения скорости вращения щёточных моторов на эти контакты подаётся ШИМ-сигнал. Для работы с шаговым двигателям, как правило, на эти контакты ставят перемычки, обеспечивающие постоянную подтяжку к +5V.
Логика микросхемы L298N питается напряжением 5 Вольт. Для этого на модуле предусмотрен стабилизатор напряжения 78M05. На вход этого стабилизатора можно подавать напряжение до 35 В, а на выходе всегда получается 5 В. Рабочий ток у 78M05 небольшой — до 500 мА.
Тройная клемма снизу отвечает за питание модуля. Самый левый контакт — питание моторов. Сюда можно подавать до 35 В. Средний контакт — земля, которая должна быть общей для модуля и контроллера. Правый контакт имеет двоякую функцию. Если на модуле стоит перемычка питания стабилизатора, то на этом контакте будет +5В и к нему можно ничего не подключать, либо питать от него контроллер. Но если перемычку убрать, то к этому контакту нужно будет непременно подключить +5В от контроллера, чтобы питать драйвер.
Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения.
Контакты управления
Контактов по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB.
С помощью контактов IN1,IN2,IN3,IN4 задаётся режим работы моторов. Таблица режимов для двигателя A имеет вид:
Режим работы | IN1 | IN2 |
---|---|---|
Вращение в одну сторону | 1 | 0 |
Вращение в обратную сторону | 0 | 1 |
Блокировка мотора | 1 | 1 |
Отключение мотора | 0 | 0 |
Если нам необходимо резко остановить мотор, то выбираем режим блокировки. Для плавной остановки — выбираем «отключение мотора»
Подключение драйвера L298N к Arduino uno
Для управления скоростью вращения, уберем перемычку с контакта ENA.
Перемычка питания стабилизатора установлена на драйвере. Поэтому arduino можно запитать от вывода +5В.
Программа для драйвера мотора L298N
Программа, которая вращает мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью.
byte ena = 3;
byte in1 = 4;
byte in2 = 5;
void setup() {
pinMode(ena, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
}
void loop() {
// выставляем 100% мощность на моторе А - 255 из 255
analogWrite(ena, 255);
// выставляем режим мотора - вращение по часовой
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
delay(3000); // пауза 3сек
// выставляем мощность на мотора А - 150 из 255
analogWrite(ena, 150);
// режим мотора - вращение против часовой
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
delay(3000); // пауза 3сек
}
Программа для управления двумя двигателями
Перемычки на контактах ENA и ENB убраны - можно менять скорость вращения.
Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает Arduino.
byte ena = 9;
byte in1 = 7;
byte in2 = 6;
byte enb = 3;
byte in3 = 5;
byte in4 = 4;
void setup() {
pinMode(ena, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enb, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// выставляем 100% мощность на моторе А - 255 из 255
analogWrite(ena, 255);
// выставляем 100% мощность на моторе B - 255 из 255
analogWrite(enb, 255);
// выставляем режим моторов - вращение по часовой
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
delay(3000); // пауза 3сек
// выставляем мощность на мотора А - 150 из 255
analogWrite(ena, 150);
// выставляем мощность на мотора B - 150 из 255
analogWrite(enb, 150);
// режим моторов - вращение против часовой
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(3000); // пауза 3сек
}