Робот-танк управляемый акселерометром

Сайт LMR  был одним из первых мест, которые познакомили меня с увлечением робототехникой. Занимаюсь строительством роботов каждое лето в течение последних нескольких лет, и этот робот является уже моим 4-тым или 5-тым. Я начал строить его в конце июня 2012 года и завершил около 80% работ к концу лета. Остальное доделывал с августа по ноябрь, в основном по выходным.

Я построил этого робота, как личный проект, просто для удовольствия. Хотя на самом деле начал планировать его в течение зимы 2011 года, когда наткнуться на  акселерометры, которые я никогда раньше не использовал в своих проектах.  Так что идея создать робота, который управляется наклоном пульта,  стала мне довольно интересной.

Видео:

Для постройки мне понадобилось много труда, а также опыт в работе с акселерометром, беспроводной связью (XBee), Arduino, I2C, мультиплексированием, C + +, изготовлением печатных плат, использование ЖК-интерфейса, и так далее… Таким образом, всё было довольно весело.

Этот проект претерпел  многие изменения, прежде чем я  начал его строить, а также в процессе  создания. Честно говоря, я очень удивлен, что все получилось так хорошо.

Робот управляется с помощью беспроводного пульта управления, в котором установлен акселерометр. Контроллер  определяет наклон  и  передает информацию    роботу о том, как нужно управлять двигателями. Контроллер управления  также имеет круглый светодиодный дисплей, который отображает наклон пульта и    направление, в котором должен следовать робот.

Робот запрограммирован таким образом, что чем сильнее вы наклоните пульт вперёд /назад – тем быстрее он будет двигаться.

Я приложил свой программный код прошивки в архиве. Но его необходимо оптимизировать под вашу вариацию схемы.

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

Схема пульта управления и робота

Схема довольно проста и не нуждается в пояснениях. Двигатели робота рассчитаны на питание от аккумуляторов 3В, а вся схема робота на питание от 9В батареи. ATmega328P выступает в качестве мультиплексора для светодиодного дисплея. В роботе имеется два выключателя, первый нужен для отключения питания схемы, второй для отключения питания двигателей.

В контроллере содержится Arduino Pro Mini, которая вводит данные из акселерометра  ADXL335. ADXL335 выводит на контроллер различные напряжения в зависимости от  наклона осей X, Y, Z. Pro Mini вычисляет угол наклона и сохраняет  данные. После обработки  Pro Mini отправляет данные к модулю передатчику XBee и на ATmega328P через I2C. ATmega328P дальнейшем обрабатывает некоторые данные и определяет, какие светодиоды на индикаторе должны гореть.

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

Arduino Pro Mini обрабатывает большое количество данных, и может выводить данные последовательно к компьютеру. Этот скриншот показывает данные, отправленные Pro Mini на компьютер, данные  используются при отладке.

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

 Код управления двигателями несколько раз переделывался. Приводные двигатели, управляются с помощью трёх сигналов: PWM(ШИМ), A и B. Сигналы А и B определяют в какую сторону должен вращаться вал двигателя,  ШИМ-управляет скоростью вращения. Программа работает следующим образом: во-первых, Arduino определяет, в какую сторону наклонён контроллер в  вперед или назад, а двигатели направляют робота  в этом направлении. Далее определяется, наклонен ли контроллер влево или вправо. Вся эта информация хранится в 2-х  переменных, Xang и yAng, в них  содержатся данные расчёта наклона, в диапазоне от -90 до 90градусов. В Xang записываются данные по  ‘оси х’, в то время как в  yAng по ‘оси у’. Информация левого / правого наклона также используется для присвоения значений. Далее значения Xang и yAng перемножаются, и  произведение становится скоростью вращения двигателя.

Сборка

В качестве привода я использовал сдвоенный мотор – редуктор Tamiya. Привод работает довольно хорошо, хотя не дает достаточно крутящего момента, что, вероятно, связано с низкопробными двигателями, идущими в комплекте.

Пайку электроники я начал с акселерометра ADXL335 3.  Я в первый раз использовал в своём устройстве акселерометр.    SparkFun для ADXL335 уже имеет необходимые конденсаторы, поэтому акселерометр не требует никакой внешней обвязки.

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

Вид сбоку- схема робота.

 Два гнезда по краям платы  предназначены для подключения двигателей.

На плате есть разъемы для радио модуля XBee, драйвера двигателя, а также ЖК-дисплея, хотя окончательно робот не содержит LCD из-за ограничений по размеру. Небольшая плата, крепится к основной через ленточный кабель, и имеет 2 ползунковых переключателя — один для полного отключения питания,  другой для отключения приводных двигателей.

Первый прототип контроллера, на макетке. Справа Arduino Pro Mini, середина с акселерометром и XBee, все работает от 4.5V батареи. Перед окончательным монтажом я все схемы отлаживал на макетной плате. 

Для программирования ATmega328 у меня не оказалось  ISP программатора, поэтому для загрузки прошивки я использовал ARDUINO. Если честно я не помню, как я это сделал, поэтому почитайте материалы вот по этим ссылкам:   

http://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/

http://arduino.cc/forum/index.php?topic=108270

Первый «рабочий» прототип  робота. Я сделал его просто для проверки кода, но платформа снова вышла не очень удачно т.к. треки были слабо натянуты, и хотя о он выполняет свою работу, но не может хорошо развернуться.

Печатные платы я приобрёл в магазине SparkFun. Они имеют очень интересный дизайн, каждая площадка  на самом деле имеет по 3 отверстия – одно большое  и два поменьше – что значительно мне пригодилось.

Это почти законченный контроллер, в центре платы находится  акселерометр ADXL335. В левой части платы расположен  ATmega328P, который общается с Pro Mini по I2C и работает как драйвер для светодиодного индикатора наклона. Вдоль нижнего края установлены разъёмы для программирования микроконтроллера.

У светодиодного индикатора было не типичное расположение выводов, поэтому его не получилось припаять на макетку, мне пришлось сделать свою печатную плату, ЛУТ методом.

   

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

Сверление печатной платы

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

Светодиодный дисплей

Это первое испытание светодиодного дисплея установленного на плате контроллера. Дисплей содержит 16 красных светодиодов, каждый светодиод освещает по 2 сегмента. Дисплеем управляет ATmega328P, который общается с Arduino Pro Mini через I2C.

Платформа робота выполнена из бальзы. Так — как это довольно крепкий и лёгкий в обработке материал.

Распорки осей крепятся на резьбовые шпильки к платформе.

Я потратил  довольно долгое  время  на то чтобы найти правильную длину гусениц, кроме того, их натяжение  —  должно быть не слишком свободным, но и не слишком тугим. Чтобы уменьшить трение гусениц, при развороте, я добавил 3 ​​комплекта колес посередине.

Шляпки винтов, на которые был прикручен мор-редуктор, мешали установке электроники и прочего оборудования. Потому было решено сделать промежуточную крышку. 

Промежуточная крышка вырезана из старого коврика для мышки.

Готовая робо-платформа

Обратите внимание, что чёрное покрытие немного уже чем сама платформа. Это необходимо для установки бортиков, из всё той же бальзы.  

Бортики приклеены с помощью обычного школьного клея.

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

На этом фото робот уже почти собран, нахватает лишь верхней крышки.

Батарея идеально вписывается в передней части робота, сверху устанавливаются платы электроники.

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

Готовый робот

Готовый контроллер

Лишние отверстия в центре индикатора, могут понадобиться, если будет нужно установить дополнительные элементы управления

Вероятно это лучшая вещь которую я когда либо сделал.

Небольшой переключатель в левой части платы, управляет подачей напряжения на схему.  Второй — позволяет выбирать между программированием Pro Mini и WTH XBee.

Как вы можете видеть, контроллер получился очень эргономичным.

Возможные улучшения:
— Корпус для контроллера управления.
— Установка мотор – редукторов с большим крутящим моментом.
— Оптимизация кода, улучшить программу управления.
— Можно использовать круговые индикаторы других цветов.
— Заменить блок питания с 9V батареи на что-нибудь более надёжное.
— Заменить гусеницы на колёса, чтобы улучшить управление.

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

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.