Драйвер двигателя L298N: различия между версиями
Root (обсуждение | вклад) Нет описания правки |
Artecoll (обсуждение | вклад) Нет описания правки |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 4: | Строка 4: | ||
Драйвер позволяет просто и понятно управлять скоростью вращения моторов в обоих направлениях с помощью ШИМ (раздельно для каждого мотора). | Драйвер позволяет просто и понятно управлять скоростью вращения моторов в обоих направлениях с помощью ШИМ (раздельно для каждого мотора). | ||
== Спецификация модуля L298N: == | |||
* напряжение питания двигателей: до 35 В; | * напряжение питания двигателей: до 35 В; | ||
Строка 12: | Строка 12: | ||
* вес: 33 г. | * вес: 33 г. | ||
== Контакты драйвера == | |||
* '''OUT1 и OUT2''' – разъёмы для подключения первого щёточного двигателя или первой обмотки шагового двигателя; | * '''OUT1 и OUT2''' – разъёмы для подключения первого щёточного двигателя или первой обмотки шагового двигателя; | ||
Строка 29: | Строка 29: | ||
Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения. | Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения. | ||
== Контакты управления == | |||
Контактов по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB. | Контактов по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB. | ||
Строка 58: | Строка 58: | ||
Если нам необходимо резко остановить мотор, то выбираем режим блокировки. Для плавной остановки — выбираем «отключение мотора» | Если нам необходимо резко остановить мотор, то выбираем режим блокировки. Для плавной остановки — выбираем «отключение мотора» | ||
== Подключение драйвера L298N к Arduino uno == | |||
[[Файл:Схема подключения драйвера к Arduino uno.png|мини|Схема подключения драйвера к Arduino uno]] | [[Файл:Схема подключения драйвера к Arduino uno.png|мини|Схема подключения драйвера к Arduino uno]] | ||
Для управления скоростью вращения, уберем перемычку с контакта ENA. | Для управления скоростью вращения, уберем перемычку с контакта ENA. | ||
Строка 64: | Строка 64: | ||
Перемычка питания стабилизатора установлена на драйвере. Поэтому arduino можно запитать от вывода +5В. | Перемычка питания стабилизатора установлена на драйвере. Поэтому arduino можно запитать от вывода +5В. | ||
== Программа для драйвера мотора L298N == | |||
Программа, которая вращает мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью. | Программа, которая вращает мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью. | ||
[[Файл:Внешний вид макета.png|мини| | [[Файл:Внешний вид макета.png|мини|Внешний вид макета]] | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
byte ena = 3; | byte ena = 3; | ||
byte in1 = 4; | byte in1 = 4; | ||
Строка 94: | Строка 94: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Файл:Внешний вид макета с двумя двигателями.jpg|мини|Внешний вид макета с двумя двигателями]] | [[Файл:Внешний вид макета с двумя двигателями.jpg|мини|Внешний вид макета с двумя двигателями]] | ||
== Программа для управления двумя двигателями == | |||
Перемычки на контактах ENA и ENB убраны - можно менять скорость вращения. | Перемычки на контактах ENA и ENB убраны - можно менять скорость вращения. | ||
Перемычка питания стабилизатора на драйвере убрана. Драйвер не питает 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> |
Текущая версия от 14:18, 11 июня 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сек }