Управление DC-моторчиками с помощью L298N

Самобеглая самокатка на Arduino UNO

В 1752 г. Леонтий Шамшуренков создал самобеглую коляску:

В 1791 г. Иван Кулибин построил самокатку:

В XXI веке люди увлекающиеся (изобретателями их назвать никак невозможно:-) строят самобеглые самокатки на соответствующей элементной базе, например:

А мы что, хуже?! Да ни в коем случае!
Почта Росси доставила с AliExpress посылку:

К сожалению, платформа, изготовленная из хрупкого пластика, оказалась расколотой. Упаковка была не жёсткой, а транспортировка, судя по всему, наоборот. Пришлось склеивать:

Как видно, в наборе имеется даже некий документ:

с пошаговой инструкцией сборки на простом и понятном китайском языке:-))

Процесс по шагам – это сейчас исключительно модно. Куда ни глянь – везде пошаговые алгоритмы. У меня даже возникает мысль: а не лишает ли это нас, человеков разумных, некоего творческого начала?

1. Процесс сборки:
1.1. ставим стойки крепления DC-моторчиков и выключатель питания

1.2. изнутри на оси редукторов устанавливаются диски, в которых сделаны радиальные прорези. Что это? Вентиляторы? Или элементы возможных оптических энкодеров?!!

1.3. крепим моторчики

1.4. ставим батарейный отсек

1.5. ставим колёса

Итог:

Практически то же самое (на трёх колёсах) было и у Ивана Кулибина. Наш размер, правда, поменьше.
Всё-таки китайские деятели сэкономили на гаечках и винтиках:

Хотя они не дефицитны, можно было и с запасом положить за такую-то цену!

2. Подключение DC-моторчиков к Arduino
Имеется девайс:

Это модуль «L298N Motor Driver» для Arduino. Он может контролировать скорость и направление вращения двух DC-двигателей или управлять шаговым двигателем. Именно оно и нужно. Дело в том, что микросхема L293D слабовата по току, следовательно – по мощности, и в ней используются биполярные транзисторы. Она нагревается и весьма желательно применить теплоотвод.
А вот параметры L298N:
► Напряжение питания логики модуля: 5 В
► Потребляемый ток встроенной логики:  36 мА
► Напряжение питания драйвера: 5 В – 35 В
► Рабочий ток драйвера: 2 А (пиковый ток 3 А)
► Габариты: 43.5 мм х 43.2мм х 29.4мм
Схема L298N:

Кое-кто утверждает, что в ней стоят MOSFET’ы, но из Datasheet’a этого НЕ СЛЕДУЕТ! Тем не менее, по параметрам она меня вполне устраивает. Да и модуль по конструкции – тоже.

Схема подключения двух DC-моторчиков к модулю L298N:

Источник http://robotchip.ru/obzor-drayvera-motora-na-l298n/

На плате модуля есть перемычки (я называю их «джамперами»):

1-й джампер (жёлтый со стрелкой) связан с напряжением, подаваемым на стабилизатор модуля. Он ДОЛЖЕН БЫТЬ УСТАНОВЛЕН, если на модуль подаётся напряжение в пределах +6-12В, которое поступает на двигатели и на вход стабилизатора. Стабилизатор же подаёт на логику Н-моста +5В. При этом отдельно +5В на клемму (красная стрелка) подавать НЕ НАДО.


Если моторчики питаются напряжением БОЛЕЕ +12В (оранжевая стрелка), джампер (жёлтая стрелка) следует УБРАТЬ и ПОДАТЬ на клемму +5В с Arduino ОТДЕЛЬНО (красная стрелка). Дело в том, что ВХОДНОЕ НАПРЯЖЕНИЕ СТАБИЛИЗАТОРА не более +12В. Забудем убрать джампер – спалим стабилизатор модуля!

Установленный джампер ENA+5V подаёт на управляющий вход высокий уровень, в результате чего мы не можем регулировать скорость вращения левого (OUT1, OUT2) двигателя. Аналогично, если установлен джампер ENB+5V, мы не можем регулиовать скорость вращения правого (OUT3, OUT4) двигателя.

3. ЭКСПЕРИМЕНТ
3.1. ОДИН DC-моторчик без регулировки скорости. Джамперустановлен на ENB+5V.
Эскиз:

Поскольку подключен (условно назову) «ПРАВЫЙ» DC-моторчик, наличие джампера на ENA+5V не имеет значения.

Реально:

Код:

Моторчик вращается в одну сторону 5 с, останавливается на 1 с, вращается в другую сторону5 с, останавливается на 1 с, и цикл снова повторяется.
Подключил, загрузил – никакого движения! Оказалось, что аккумуляторы разрядились и забыл подключить GND Arduinoк МИНУСУ батареи. Исправил:

Правое колесо вращается в соответствии с программой. Изменения скорости вращения, естественно, нет.

3.2. ОДИН DC-моторчик с регулировкой скорости. Джампер ENB+5V УДАЛЁН.
Эскиз:

ENB подключёнк Digitalpin 3 (PWM). Меняя скважность ШИМ-сигнала, можно менять скорость вращения моторчика. Значения скважности задаются функцией analogWrite (pin, число), где число берётся в диапазоне от 0 до 255. Для наглядности используются четыре конкретных значения – 55, 105, 255 и 0, при которых моторчик стартует с низких оборотов, набирает средние, выходит на максимальные, останавливается, и всё повторяется.
Код:

Реально:

Digitalpin 3 (PWM)подключён к ENB (синяя стрелка).

На самых низких оборотах мой моторчик не вращается, а лишь издаёт какое-то жужжание.

3.3. ДВА DC-моторчика с регулировкой скорости. Джамперы ENА+5V и ENВ+5V УДАЛЕНЫ.
Эскиз:

Код:

В скетче с сайта обозначения пинов не соответствуют эскизу. В программе я их изменил так, чтобы было полное сооствествие.
Скетч загружен:

Моторчики работают:

Разгоняясь, они вращаются в одну сторону, останавливаются, снова разгоняются и вращаются в противоположную сторону, затем всё повторяется.

4. Пока самобеглая самокатка на Arduino крутит колёсами в подвешенном состоянии. Настал момент, когда пора ей попробовать сделать первые самостоятельные «шаги».
Собираем всё  в кучку, в том числе батарейку 9 В для питания Arduino, включаем:

Колёса крутятся ка надо!

Ставим на пол. Поехали!

Итак, первые « шаги» самобеглая тележка сделала. Правда она не желает ехать по прямой. Причина понятна – ни моторчики, ни редукторы не являются прецизионными. В дальнейшем предстоит несколько усовершенствовать внешний вид, компоновку и поэкспериментировать с программами.

Олежек запускает «самобеглую» коляску.

SEkorp, 8 июня 2019


НАЗАД на страницу РАДИОардуино