Motor Shield L293D для Arduino своими руками (DIY)

Опубликовано 27.02.2013 22:39:00


Плата улучшена. Смотрите Z- Motor Servo Shield своими руками (DIY)

Занимаясь роботостроением нам рано или поздно придется задуматься о сборке платы для управления двигателями. В случае если вам нужна фиксированная скорость моторов, без потери мощности, то лучше собрать реле шилд. В случае, если вам нужна плавная регулировка скорости вращения моторов и вы готовы ограничиться максимально потребляемым током мотора в 600мА, тогда читаем эту статью и собираем плату управления на широко известной микросхеме L293D. Встречайте Motor shield L293D.

Танк собранный на базе самодельной Ардуино

 

 

Плат управления на базе L293D собрано уже немало, но односторонней платы для домашнего изготовления я так и не нашел.

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

Более ранние версии включают в себя L293D и микросхемку 74HC00.

Посмотрев даташит на последнюю микруху, можно понять, что она включает в себя 4 логических элемента И-НЕ. Возможна замена 74HC00 на советские аналоги К155ЛАЗ  К155ЛА8. Принцип его работы можно понять, посмотрев на рисунок приведенный ниже (в зависимости от подаваемых сигналов на входы а & b мы получаем значение на выходе с). На рисунке также приведена "таблица истинности" для данного элемента.

таблица истинности логических элементов входящий в состав микросхемы 74HC00 

 

Смыслом использования микросхемы 74HC00 в нашем устройстве является возможность менять единицу и ноль местами на выводах Output1 и Output2 микросхемы L292D, реверсируя этим направление вращения мотора, используя для этого только один вывод контроллера.

соединение логических элементов 74HC00

 

Направление вращения моторов мы задали, но без подачи питания на вывод Enable1 двигатель вращаться не будет. Подачей ШИМ сигнала именно на этот вывод мы и будем управлять скоростью вращения мотора. Более подробно про принцип работы L293D можно почитать здесь

Управление 1ым мотором  ( пин 4 – задаем направление вращения, пин 3  ( ШИМ ATmega 168,328 ) разрешение вращения и регулировка скорости )

Управление 2ым мотором  ( пин 7 – задаем направление вращения, пин 5  ( ШИМ ATmega 168,328 ) разрешение вращения и регулировка скорости )

В завершение вышесказанного, прикрепляю принципиальную схему (кликабельна). 

Принципиальная схема Arduino DIY L293D motor shield

Для управления скоростью моторов, выбраны оставшиеся ШИМ выводы ( 3, 5 ), которые, правда, доступны только на ATmega168, 328.

На мой взгляд, при использовании Мега8 лучше потерять возможность регулирования скорости движения, зато у вас будут доступны 3 свободных вывода ( ШИМ на ATMEGA8 ( 9, 10, 11 )) для управления сервоприводами, да и 8ую на 328ую можно заменить в любой момент, получив этим доступ к регулировке скорости.   


 

Работа с серво

На плату установлены четыре разъема для подключения сервоприводов (6, 9, 10, 11). 

На плате Ардуино уже имеется стабилизатор напряжения серии 7800, а именно 7805, который должен обеспечивать стабильное напряжение для работы контроллера. Во избежание просадки напряжения в цепи питания контроллера при резком запуске мощных сервоприводов - решено питать силовую серво часть от отдельного стабилизатора.

КР142ЕН5А является линейным стабилизатором, а это подразумевает, что вся преобразуемая энергия переводится в тепло и при подключении нагрузки стабилизатор начинает нагреваться прямо пропорционально величине потребляемого тока.  Ввиду этого рекомендуется посадить стабилизатор на радиатор.

При использовании маломощных сервоприводов типа 9G рекомендую использовать пятивольтовый стабилизатор с маркировкой 7805 он же КР142ЕН5А. Пяти вольт для питания сервоприводов такого типоразмера будет достаточно с головой.

Для более мощных, к примеру MG995, возможна установка шестивольтового стабилизатора с маркировкой 7806 он же КР142ЕН5Б. 

Подключение сервоприводов к самодельному мотор шилду

 

Монтаж стабилизатора на плату

Стабилизатор, крена, 7805


 

Прочее

Вдобавок ко всему на плате установлена дублирующая кнопка сброса МК (RST).

На плату выведен светодиод, подключенный к 13 пину, который можно отключить, сняв джампер  (JP LED13).

На плате имеются джамперы (JP1 и JP2), позволяющие выбирать схемы подключения питания

JP1 и JP2 замкнуты - Ардуина, стабилизатор и силовая часть реле шилда питаются от одного источника питания.

JP1 разомкнут, JP2 замкнут- Ардуина питается от одного источника, стабилизатор и силовая часть реле шилда от другого.

JP1 замкнут, JP2 разомкнут- Ардуина и стабилизатор питаются от одного источника, силовая часть реле шилда от другого. Сделано это с целью того, что:

- входное напряжение стабилизатора не должно превышать 15 Вольт, а то время как максимальное входное напряжение на L293D равно 36 Вольтам. 

- в обвязке стабилизатора установлены конденсаторы 100uFx16v, которые, при превышении максимального напряжения, могут взорваться.

JP1 разомкнут, JP2 разомкнут- питание Ардуины и силовой части шилда раздельное, стабилизатор не используется.


 

Примеры управления разными типами двигателей

1. Моторы постоянного тока

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

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

 

 

2. Сервоприводы

Просто порулим четырьмя сервоприводами от 0 до 180 градусов

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

 

 

3. Шаговый двигатель

В данном скетче мы повернем выводной вал на 360 градусов ( сделаем 48 шагов из даташита) в обе стороны с определенной скоростью.

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

 



скачать архив

В архиве лежат две папки  и список деталей 

Папка MSV1DIY1 включает в себя шаблон ПП совместимой ТОЛЬКО с Arduino DIY ( USB, COM ), имеющими дополнительный выход VTG INPUT, напряжение на котором берется еще до защитного диода. При такой совместимости возможно запитывать и Ардуину от шилда, и силовую часть шилда от Ардуины, и стабилизатор для питания сервоприводов от Ардуино.

Папка MSV1DIY2 включает в себя шаблон платы совместимой с оригинальными Arduino.

Открываем фото => Печать => Во всю страницу

Разница состоит в том, что возможное соединение питаний происходит на пине Vin Arduino. Напряжение на этом выходе получается равным входному минус потеря напряжения на защитном диоде (подаем к примеру 8 Вольт на разъем питания Ардуино, получаем примерно 7.4 Вольт на выходе Vin, а, следовательно, и на питание силовой части реле шилда), также и максимальный ток через диод ограничен 1000мА. Терять 0.7 вольта впустую не всегда позволительно. Выход из этой ситуации прост: запитывать не шилд от Ардуины, а Ардуину от шилда,тем самым минуя защитный диод. 

Этот вариант также можно использовать и с самодельными версиями Ардуино по тому же принципу.


 

Для облегчения распайки smd компонентов с обратной стороны платы, где нет маркировки, приведу картинку.

MSV1DIY1

Монтажная схема SMD компонентов

MSV1DIY2

Монтажная схема SMD компонентов


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