Шасси в сборе |
Как и обещал, выкладываю силовую часть робота. Она уже встала в шасси на боевое дежурство, так что больше изменений не планируется.
Блок питания
У нас же стоит свинцовый аккумулятор на 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 вольт, от такой радости аж задымился.
Лирическое отступление, при желании можно его пропустить
На плате выведены на разьем Х2 все неиспользованные порты, а также последовательные интерфейсы UART и I2C.
Открою страшную тайну на самом деле вот эта мега это не главный процессор. Это всего лишь контроллер двигателя. Потом же, когда я нагружу его под завязку, он выродится в контроллер шасси и будет связан по шине I2C с другим, куда более мощным процессором. Возможно это будет ATMega 128 или даже AVR32, а если попрет то и какой нибудь из ARM с линухом на борту. Вообще делать все на одном процессоре это не интересно.
Я предпочитаю на каждый болт ставить по своему контроллеру, увязывать все это в сеть и ставить над ними нечто более мощное. Согласись куда приятней приказать шасси ехать от сюда и до обеда, контроллеру датчиков скреативить ка мне карту местности и следи чтобы шасси не заблудилось, а самому вычислять глобальную стратегию захвата мира 🙂 Я же предупреждал, что это только начало.
Кстати, это уже вторая ревизия 🙂 Первая была более навороченной и была построена на контроллере АТ89С2051, недостаток ее в том, что для перешивки этого контроллера его надо извлекать из платы, вставлять в спец программатор (серия AT89Cxxxx шьется только высоковольтным программатором). Плюс ко всему там из периферии было всего два таймера и UART.
Зато там был контроллер шагового двигателя. Тут я пока не стал его делать если понадобится, то потом будет отдельным модулем. К сожалению у меня убился исходник прошивки под этот 2051, а там уже столько всего было написано, и ШИМ, и i2c slave и все программно, филигранная работа была, почти всю прошивку забил под завязку. Хорошо мне сносило мозг во время написания той проги.
Ну и распиновка разьемов.
Плата сверху |
Плата снизу. Второй 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
Вроде бы ничего не забыл. Если что спрашивайте, отвечу, зафоткаю.
Оцените статью!