Контроллер шасси

Шасси в сборе
Шасси в сборе

Как и обещал, выкладываю силовую часть робота. Она уже встала в шасси на боевое дежурство, так что больше изменений не планируется.

Блок питания

У нас же стоит свинцовый аккумулятор на 12 вольт, а контроллеру нужно 5 вольт. Вот я и сварганил импульсный блок питания. Можно было, конечно, поставить какой нибудь LM7805 (как у меня на макетке) и на нем сбросить напряжение, но это тупой метод. Дело все в том, что разницу напряжений LM7805 отрыгнет в виде тепла. Так что КПД данного девайса будет ниже 50%, а питание у нас батарейное. Так что выход один это DC-DC преобразование.

В качестве контроллера взял проверенный временем, популярный, доступный и дешевый MC33063A. Изобретать ничего не стал и взял типовую понижающую схему (Step Down) из его даташита. Как работает схема этого блока питания я расскажу несколько позже, отдельным постом. После выхода статьи в Хакер, где я толкнул статью про источники питания.

Схема силового блока робота
Схема силовой части робота
Вид спереди
Вид спереди
Датчик касания - обычная кнопка
Датчик касания обычная кнопка

Питальника я сделал два один на 5 вольт, второй будет скорей всего на 3.3 вольта. Он будет нужен для питания разных датчиков, которые любят делать на низкое напряжение. Его я даже еще не распаивал, просто развел под него дорожки. Как видишь они одинаковые, разные будут только номиналы резисторов, определяющие выходное напряжение. Дроссель стоит CW68 221K 220/450, 220 микро Генри, способный держать ток в 450мА. Это с большим запасом, реально там и 100мА за глаза.

Силовой мост L293D

Данная микросхема предназначена для управления двигателем постоянного тока. Содержит в себе четыре мощных усилителя. Если на вход усилка подается 1, то на выход сажается на 12 вольт, если на вход подается 0 то вывод сажается на землю.

Таким образом, подавая комбинации 0 и 1 на разные входы, можно сажать выводы двигателя на шины разной полярности, вращая движок в разные стороны.

Если подать одновременно два нуля или две единицы, то, по сути, оба вывода двигателя будут закорочены и произойдет динамическое торможение двигателя. В этом режиме движок работает генератором, нагружаясь на короткое замыкание, что дает резкий тормозной момент.

Также есть вход разрешения. Подавая на него 1 мы разрешаем вращение, а если подать 0, то выводы переходят в Z состояние, а мотор останавливается выбегом. Если туда подать ШИМ сигнал, то меняя скважность (отношение длительности 1 к длительности 0) можно плавно регулировать скорость вращения двигателя. Этим я и буду потом пользоваться.

12 вольт для питания двигателй заводится на 8 вывод L293D, сама же она питается от 5 вольт. Максимальный ток, который может выдавать L293 около ампера. В этот диапазон с лихвой укладывается двигатель от Maxon, а также вполне можно запитать движок от китайского магнитофона, он тоже потребляет не более ампера. Причем надо учитывать и пусковой ток, он выше рабочего раз в пять. Узнать пусковой ток просто нужно заклинить двигатель и подать питание, ток через остановленный якорь равен пусковому.

Различия L293

Включение защитных диодов
Включение защитных диодов

Есть несколько видов этой полезной микросхемы, а также несколько видов корпуса. Бывает в виде 16 ногой и в виде 28 ногой микросхемы. А также надо различать наличия индекса D. Те, которые с индексом D, имеют внутри встроенные защитные диоды, разводяobt индуктивный ток при отключении двигателя. Без этих диодов микросхему выбьет в момент. Так что если удалось достать только L293 то подправь плату, чтобы поставить диоды.

Также есть микросхема L298 которая представляет из себя то же самое, только способна тянуть ток аж в 4 ампера. Разумеется у нее другой корпус, куда более мощный Multiwatt15 или PowerSO, с прицелом на радиатор. Одно время L298 (и не только ее) можно было намутить нахаляву на сайте ST.COM, но ныне халявку прикрыли. Хорошо хоть я успел запастись этой дивной микросхемой основательно 🙂

На разьем Х4 выведено питание двигателей, питание ИК светодиодов, одометрических датчиков, а также входы и земли с фотодиодов/фототранзисторов. Так что мне остается только подключить редуктор шлейфом напрямую и не парится.

У меня также стоят два подстроечных резистора. Синие такие. Я их исключил из финальной схемы, заменив на 680 ом. Так как мои опасения не оправдались и снижать яркость светодиодов не потребовалось. А вот один светодиод я даже спалил, у меня стоят переменники на 15к, это слишком много, но других не было. Поэтому неосторожно крутнув я сопротивление с 1к резко завел в нуль, светодиод , получив 5 вольт, от такой радости аж задымился.

Лирическое отступление, при желании можно его пропустить

Кстати, я разобрался почему не работал одометр есть у меня гадская привычка отлаживать экспериментальные куски кода не в новом проекте, а встраивая их в код открытой в студии проги. Потом удаляю. Тут я забыл удалить строку CLI, в результате прерывания все похерились, и таймер не считал.
Также экспериментально было выяснено, что один оборот той шестерни редуктора это 10мм хода шасси. На дистанции в метр
погрешность не более двух миллиметров набежала.

На плате выведены на разьем Х2 все неиспользованные порты, а также последовательные интерфейсы UART и I2C.

Открою страшную тайну на самом деле вот эта мега это не главный процессор. Это всего лишь контроллер двигателя. Потом же, когда я нагружу его под завязку, он выродится в контроллер шасси и будет связан по шине I2C с другим, куда более мощным процессором. Возможно это будет ATMega 128 или даже AVR32, а если попрет то и какой нибудь из ARM с линухом на борту. Вообще делать все на одном процессоре это не интересно.

Я предпочитаю на каждый болт ставить по своему контроллеру, увязывать все это в сеть и ставить над ними нечто более мощное. Согласись куда приятней приказать шасси ехать от сюда и до обеда, контроллеру датчиков скреативить ка мне карту местности и следи чтобы шасси не заблудилось, а самому вычислять глобальную стратегию захвата мира 🙂 Я же предупреждал, что это только начало.

Лирическое отступление, при желании можно его пропустить
Кстати, это уже вторая ревизия 🙂 Первая была более навороченной и была построена на контроллере АТ89С2051, недостаток ее в том, что для перешивки этого контроллера его надо извлекать из платы, вставлять в спец программатор (серия AT89Cxxxx шьется только высоковольтным программатором). Плюс ко всему там из периферии было всего два таймера и UART.
Зато там был контроллер шагового двигателя. Тут я пока не стал его делать если понадобится, то потом будет отдельным модулем. К сожалению у меня убился исходник прошивки под этот 2051, а там уже столько всего было написано, и ШИМ, и i2c slave и все программно, филигранная работа была, почти всю прошивку забил под завязку. Хорошо мне сносило мозг во время написания той проги.

Ну и распиновка разьемов.

Плата сверху
Плата сверху
Плата снизу. Второй DC-DC не запаян.
Плата снизу. Второй DC-DC не запаян.

Х1 стандартный разьем ISP, через него шьется контроллер.
X2 входы слева направо, если держать этим разьемом вверх.

 GND земля
 P вход дополнительного фотодиода
 6 PD6
 F2 передний датчик касания левый
 7 PB7
 B2 задний датчик касания левый
 6 PB6
 B1 задний датчик касания правый
 GND земля
 F1 передний датчик касания правый
 T TxD выход UART
 R RxD вход UART
 D SDA данные I2C
 S SCL строб I2C
 H вход 12В питания от аккумулятора
 GND земля
 GND земля
 GND земля

Х3 выход питания со стабилизаторов напряжения. Также слева направо.

 3 3.3 вольта
 5 5 вольт
 G GND

X4 вывод на подключение редуктора, в том же порядке:

 L+ подключение левого двигателя плюс
 L- подключение левого двигателя минус
 А анод левого светодиода
 GND земля
 GND земля
 * выход левого фотодиода
 * выход правого фотодиода
 GND земля
 GND земля
 А анод левого светодиода
 R+ подключение правого двигателя плюс
 R- подключение правого двигателя минус

Печатная плата в формате Sprint Layout

Вроде бы ничего не забыл. Если что спрашивайте, отвечу, зафоткаю.

5 1 голос

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии