Драйвер двигателей L293D подключение к Arduino

Опубликовано 23.02.2013 12:35:00


В данной статье мы разберем популярную, широко распространенную миросхему L293D.

Микросхема включает в себя сразу два драйвера для управления слаботочными моторами. Для дальнейшего удобства условно обозначим их как правый борт и левый борт.

Драйвер двигателей L293D распиновка

 

 

Начнем наш рассказ с краткого обзора технических характеристик L293D.

Несомненным плюсом данной микросхемы является раздельное питание логической части микросхемы, напряжение питания которой лежит в приделах 4.5-5 вольт (VSS), и силовой части питания двигателей (VS). 

Используя данную микросхему мы можем управлять двигателями с довольно широким диапазоном питающего напряжения от 4.5 до 36 вольт, но при этом, L293D может выдать всего лишь 600mА продолжительного тока нагрузки на каждый канал. Пиковый (максимальный) ток может кратковременно подскочить до 1.2A.

Так же из положительных сторон данной микросхемы следует отметить её непривередливость к напряжению входных сигналов подаваемых на выводы INPUT.

Логический "0" распознается микросхемой когда входное напряжение <1.5Вольт.

Логическая "1" появляется при входном напряжении лежащем в пределах от 2.3 до 7Вольт. 

Диапазон рабочих температур от -40°C до +150°C

Скорость переключения до 5 kHz


 

Итак, разберем по полочкам левый борт. Вывод ENABLE1 это главная фигура в управлении левым каналом, без лога единицы на его выводе (или ШИМ, об этом чуть позже) ничего работать не будет, вне зависимости от того что творится на выводах INPUT1 и INPUT2.

Выводы INPUT1 и INPUT2 задают направление вращения мотора. Их можно сравнить с рулем машины, тем более, что в данном случае сравнение подходит идеально, ведь мы не можем повернуть руль сразу в две стороны, а необходимо выбирать одну из двух. Из вышесказанного следует, что для поворота нам надо подать логическую единицу на вывод INPUT1, а на INPUT2 подать логический ноль. Для смены направления поменять местами INPUT1 "0", INPUT2 "1".

При подаче одинаковых логов мотор вращаться не будет, следовательно вращение можно остановить либо подачей логического нуля на вывод ENABLE1, при любой конфигурации IN1 и IN2, либо одинаковыми логами на IN1 и IN2, не изменяя конфигурации вывода EN1 (данный вариант мы и рассмотрим ниже).

Контакты GND соединяются с отрицательным полюсом источника питания (земля).

Оставшиеся выводы OUTPUT1 и OUTPUT2 служат непосредственно для подключения мотора.

Правый канал работает абсолютно идентично.


 

Рассмотрим самый простой вариант подключения L293D. Скорость вращения при таком варианте двигателя нерегулируемая, вывод EN1 подключен напрямую к +5V. Питание мотора также берется от стабилизатора установленного на Arduino. Питать таким образом от USB можно только очень слабые нагрузки (в данном случае потребляемый ток моторчика 100mA, и нет никаких внешних воздействий способных повысить потребляемый ток), и то такое подключение крайне не желательно

Драйвер двигателей L293D. Подключение одного маленького моторчика

 

 Заставим моторчик вращаться "вправо" 4 секунды, остановиться на 0.5 секунды, вращаться "влево" 4 секунды, остановка 5 секунд и снова цикл повторяется.

 
Пример программного кода

 


 

Теперь усложним нашу схему, возьмем моторчик побольше. При использовании такого мотора настоятельно рекомендуем использовать внешний источник питания силовой части. Также, в данном варианте, подсоединим вывод EN1 к ШИМ (PWM) выводу Ардуино под номером 9.

Драйвер двигателей L293D. Подключение большого моторчика

 

В данном примере мы подсоединили вывод EN1 к выводу ШИМ. Задействуем возможность драйвера управлять скоростью, меняя скважность посылаемого ШИМ сигнала. Значения скважности задаются функцией

analogWrite(pin, число);

где число изменяется от 0 до 255, прямо пропорционально скважности сигнала. Для наглядности, были подобраны четыре значения при которых двигатель стартует с низких оборотов, набирает средние, выходит на максимальные и останавливается.

 
Пример программного кода

 


 

Ну и напоследок подключим два двигателя с регулировкой скорости.

Драйвер двигателей L293D. Подключение двух моторчиков с регулировкой скорости. Питаем от внешнего источника

 

 В приведенном ниже скетче два мотора будут вращаться в обе стороны с плавным нарастанием скорости.

 
Пример программного кода

 


 

P.S. При резком включении двигателей, L293D начинает очень сильно нагреваться по причине того, что при старте сразу на полную мощность, для сдвига с места и раскрутки якоря (грубо говоря вала) мотор потребляет, хоть и кратковременно, но ток минимум в 2-5 раз больше устаканившегося рабочего тока. При резкой смене направления вращения появляется еще больший скачок тока, так как приходится не только сдвинуть якорь с места, как это было в первом случае, но и побороть противо-ЭДС создаваемую инерцией еще не остановившегося якоря.  

Для снижения этих факторов следует разгонять двигатели плавно, чем дольше тем лучше, в разумных пределах конечно. Так же при реверсе (изменении направления вращения) следует дать промежуток для самостоятельной остановки двигателя (доли секунды), а затем снова плавно разгонять. Приложив палец к ЛДшке разницу почувствуете сразу. Поэкспериментируйте и найдите золотую середину между нагревом и скоростью реагирования для вашей задачи.


 

Статьи в похожей тематике:

•  Модуль L298N подключение к Arduino

•  Adafruit Motor Shield подключение к Arduino


А как же комментарии?