Итак, как и обещал, выложу детальное описание своего робота тут. Опыта ручной работы у меня немного, оборудования подходящего нет, т.к. работаю программистом, поэтому просьба не пинать за кривизну сборки.
Итак, общий вид телеги. Начну с самого начала его постройки.
Так робот выглядел сразу после постройки шасси и изготовления каких-никаких простеньких органов управления. В основу конструкции лёг старый CD-ROM дисковод, от которого осталась только металличесткая коробка, остальное было отправлено на помойку. Для робота были закуплены металлические мотор-редукторы на 6V 77об/мин, и колёса "Скала" из магазина dvrobot (не сочтите за рекламу). Аккумулятор я поставил свинцовый, на 6V, 3.3Ач, выбрал его из-за простоты зарядки и дешивизны, схему зарядки распаял прямо на силовом контроллере (ближняя плата на фото выше). Передний бампер сделан из старой аллюминиевой гардины, распиленной вдоль, недостающая часть днища спереди и задняя стенка вырезаны из текстолита. На задней крышке расположен разъем для зарядки и тумблер для включения.
Конструкция получилась весьма увесистой благодаря свинцовому аккумулятору, ехала неторопливо, но уверенно. Никаких датчиков на нем небыло, ехал он только прямо. В таком виде я вынес его первый раз на улицу и запустил по первому снегу, отсюда и вода. Первая поездка по снегу выявила основные недостатки - маленький клиренс и большой вес задней части из-за аккумулятора. Телега (а на тот момент роботом назвать это язык не поворачивался ) постоянно застревала на снегу и беспомощно вращала колёсами в воздухе, а тяжёлая задняя часть не позволяла заезжать по снегу на пригорки.
Затем на бампер в специальные "крепления" из текстолита были установлены ультразвуковые дальномеры HC-SR04, написана кое-какая логика для простейшего объезда препятствий. Робот стал более-мене нормально самостоятельно передвигаться по комнате. Так же я заказал новые большие колёса, чтобы увеличить клиренс.
В такой конфигурации клиренс существенно возрос, увеличилась и скорость, но возрос ток моторов, ощутимо упал момент. Впрочем, на ковре эта штука спокойно разворачивалась на месте.
Затем я заменил тяжелый свинцовый аккумулятор на самодельную батарею 2S из старых ноутбучных 18650. Сперва хотел позаимствовать идею Slom'a со шприцами, но потом прикупил в ближайшем магазине радиодеталей специально предназначенные для этого battery case. Без ручного вмешательства, правда, все равно не обошлось. Стандартные провода от держателей батарей годились разве что на помойку и были заменены на МГШВ 0.75. Выйгрыш в весе оказался просто колоссальный, робот перестал проваливаться в снег, и стал ехать даже по целине! Так же возросла и скорость, т.к. напряжение стало 7.4В против 6В.
Ультразвуковые дальномеры тоже зарекомендовали себя не с лучшей стороны - для замера нужен сложный код, само измерение занимает много времени, а при пониженной температуре, от 0 и ниже, они и вовсе сходили с ума - то не срабатывали на препятствие, то постоянно выдавали ложные срабатывания, и я заказал инфракрасные датчики SHARP GP2Y0A21. Они конечно не могут похвастаться таким диапазоном измеряемых значений, но зато код работы с ними предельно прост, т.к. они аналоговые.
Эти датчики работают на холоде точно так же как и в помещении, а расстояния 80см мне вполне хватает, так как робот быстро не ездит.
Теперь об электронике. Вся электроника разделена на 3 части:
1) Силовой контроллер (сверху слева)
Он занимается зарядкой аккумулятора, мониторингом напряжения и отключением нагрузки когда аккумулятор разряжен. Также с помощью него можно узнать текущий заряд батареи, нажав на кнопку. Заряд отобразится с помощью импровизированного индикатора из 2х светодиодов. Зарядка построена на микросхеме MC34063, заряжать ей можно только свинцовый аккумулятор. Нагрузка коммутируется с помощью реле, управляет всем этим контроллер Attiny45.
2) Ходовой контроллер (сверху справа)
Эту роль выполняет Attiny2313. Занимается включением и выключением моторов, больше ничем не занимается) Получает команды от центрального контроллера по i2c и выполняет. Если в течение 5 секунд не пришло никаких команд, то отключает моторы. Команда представляет собой 4 байта - [направление левого мотора][скорость][направление правого мотора][скорость]. Умеет разгонять моторы плавно, чтобы сберечь мотор-редукторы. H-мост (точнее их два, на левую и на правую сторону) самопальный, состоит из реле на переключение (верхние ключи), и 2х N-канальных мосфетов (нижние ключи). Схема с реле предельно проста, не надо париться с открытием верхних P-канальных полевиков, из недостатков - щелчки при смене направления движения и меньшая долговечность. Шим заведен на затворы полевиков через вспомогательные транзисторы. Силовые ключи (IRLZ44N) вобще не греются, даже без радиаторов.
3) Центральный контроллер (зеленая плата внизу)
Запрявляет всем. Главный мозг - Atmega644P, на ней крутится вся логика, работа с датчиками, алгоритмы объезда препятствий и т.д. Отдает команды на движение ходовому контроллеру, выполняет сзять по bluetooth с компом. На плате есть два семисегментных индикатора, очень помогает при отладке алгоритмов и DIP-переключатель (храсная хреновина с рычажками), чтобы можно было менять какие нибудь параметры не перепрошивая контроллер. Сюда же в дальнейшем будет подключен GPS и компас для автономной навигации. Возможно, добавлю еще и акселерометр, чтобы не переворачиваться при наезде на высокое препятствие.
Программа для управления с компьютера еще до конца не доделана и пока что выглядит вот так
Код робота весь написан на сях, морда написана на C++ Qt и кроссплатформенна, возможно выложу когда причешу. Могу и сейчас срез выложить, если кому-то очень хочется взглянуть.
В планах:
* GPS и компас для навигации
* купить нормальный 2S аккумулятор
* акселерометр против переворачивания
* заменить bluetooth на NRF24L01+ с усилителем и внешней антенной, заявленная дальность до 1км в прямой видимости
* хотелось бы добавить видеокамеру для FPV