Драйвер двигателя L298N: различия между версиями
Root (обсуждение | вклад) Нет описания правки |
Root (обсуждение | вклад) Нет описания правки |
||
Строка 68: | Строка 68: | ||
Программа, которая вращает мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью. | Программа, которая вращает мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью. | ||
[[Файл:Внешний вид макета.png|мини|'''Внешний вид макета''']] | [[Файл:Внешний вид макета.png|мини|'''Внешний вид макета''']] | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
byte ena = 3; | byte ena = 3; | ||
byte in1 = 4; | byte in1 = 4; | ||
Строка 99: | Строка 99: | ||
Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает Arduino. | Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает Arduino. | ||
< | <syntaxhighlight lang="c"> | ||
byte ena = 9; | byte ena = 9; | ||
byte in1 = 7; | byte in1 = 7; | ||
Строка 137: | Строка 137: | ||
delay(3000); // пауза 3сек | delay(3000); // пауза 3сек | ||
} | } | ||
</ | </syntaxhighlight> |
Версия от 13:36, 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сек }