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

Наверно, все началось с того, что я захотел проводить свое свободное время более продуктивно. Решение построить робота было молниеносным и непоколебимым — всегда любил статьи на тему робототехники и различного DIY, да и паяльник в руках вроде держал и про микроконтроллеры был наслышан.

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

1) Робота решил делать с двумя ведущими колесами и одним поворотным;
2) По размерам захотел уложиться в максимум 200х200 мм, так как всегда нравились небольшие и даже миниатюрные роботы;
2) Использовать печатную плату как шасси для уменьшения габаритов показалось хорошей идеей;
3) Питаться все это должно от обычного Li-Po аккумулятора (в шкафу валялся сломанный вертолет и аккумулятор вместе с зарядкой у меня уже были).

Дальше настал черед определится с функциями, которые робот должен выполнять:
Следование по линии;
Интерфейс беспроводного обмена данными и управления с компьютера;
Умение автоматически опознавать и объезжать препятствия на пути.

Теперь можно было задуматься о разработке схемы принципиальной нашей будущей платки-шасси. Решил делать схему в Altium Designer (т.к. P-CAD и Eagle уже знал немного и хотелось попробовать новый пакет).

За первую неделю я определился с компонентами и занес их в библиотеку Altiuma, не сильно напрягался с 3D моделями и делал их на скорую руку, ради оценки габаритных размеров, а не ублажения эстетических чувств. Благодаря тому, что статей и видео о роботах я просмотрел достаточно много, у меня почти не было вопросов о элементной базе, которая бы осуществляла все перечисленные функции.

Моторы выбрал с питанием от 3-9В, Китайские марки N20 миниатюрные + колеса шли в комплекте с моторами.
Управление двигателями на типовой L293D (может не самый лучший выбор, но легко было приобрести).
— Для датчиков линии были выбраны дешевые TCRT5000.
— За обмен данными с компьютером отвечает всем известный Bluetooth module HC-05.
Систему обнаружения препятствий захотел реализовать на УЗ дальномере HC-SR04 который планировалось крепить на обычной 9гр. серве.
Мозг для устройства был выбран также из числа популярнейших, им стал ATmega16A, он вполне удовлетворял требованиям и даже с излишком.
— Чуть забегая вперед скажу что еще на этапе проектирования схемы решил забить свободные пины контроллера добавив в схему разъем для LCD мониторчика от Nokia 5110.

Кстати, присмотревшись к колесам, можно увидеть на них вырезы, которые явно были сделаны специально.

image

Мои мысли подтвердила компания Sparkfun со своим набором таких же колес с оптическими энкодерами. Тут я загорелся идеей считывать количество оборотов колес (хотя бы примерное).

image

Но не покупать же еще один набор колес, это не по нашему! Решил сделать свою версию энкодера. Попыхтев вокруг колес и моторов с штангенциркулем, понял, что повторить спаркфановскую платку мне не удастся. Но что приходит на ум, если оптические энкодеры в разработке использовать неудобно — правильно, магниты и датчики Холла! На ebay были найдены почти идеальные по форме редкоземельные магниты, там же были заказаны датчики Холла марки US1881.

О подключении и работе со всей электронной периферией есть немало статей. Вопросы появились при проектировании питающей части схемы. Аккумулятор у меня был Li-po 2S1P с напряжением 7.4В и емкостью 800 мА/ч. Контроллер, серву, блютуз-модуль и УЗ датчик нужно было питать от 5В, а LCD мониторчик вообще был нежным и ждал от нас 3.3В, ну а мотор логично было питать напрямую от аккумулятора.

И вот тут я совершил первый огрех, за который схемотехники и инженеры могут меня побить. Выбирая 5В стабилизатор питания не стал детально рассчитывать потребление всех элементов и прикинул его примерно в районе 300мА, да и имеющаяся микросхема LT1763 на 5В уже давно пылилась у меня в кладовке и жаждала быть запаеной в робота. Эта самая LT1763 является небольшим линейным регулятором на 500мА с малым падением напряжения и с входным напряжением от 1.8В до 20В.

Ну, что же, давайте прикинем, сколько может потреблять вся схема, питающаяся от 5В. Возьмем максимальные цифры:

— Ядро МК по даташиту должно потреблять 15мА при тактировании от 16Мгц, мы будем использовать 12Мгц, но будем ориентироватся на то что МК будет потреблять в среднем 30мА;
— Серва у нас будет почти без нагрузки и в идеале потреблять 150-200мА;
— Логика L293D заберет максимум 60мА;
— Блютуз модуль в состоянии передачи потребляет не больше 10мА;
— Датчики линии в совокупности должны потреблять 15-20мА;
— УЗ датчик в состоянии замера 15мА;
— Дисплей даже с подсветкой не должен кушать больше 40мА;
— Датчики Холла возьмут на себя 10мА;
— Ну и накинем сверху 10мА на буферы и подтяжки.

В итоге получаем ~400мА, но при включении всей техники и максимальном потреблении, что крайне маловероятно. Я бы сказал что на питании 5В в реальности не должно быть больше 300мА. Так что выбор LT1763 нельзя назвать ошибкой, но в любом случае в следующей версии робота я лучше поставлю LT1963 или какой нибудь DC-DC.

Итак, еще несколько дней ушло у меня на проектирование нашей небольшой схемы.

image

Как видите, я решил использовать 8 датчиков линии и соответственно использовать все 8 каналов АЦП нашего МК, благодаря 74HC4051D сократил количество нужных пинов для зажигания светодиодов датчиков. Для работы с мониторчиком был взят буфер SN74LVC245ADW, который должен решить вопрос с уровнями напряжений. Его питает маленькая микросхема линейного стабилизатора на 150мА с крайне низким падением напряжения LTC1844. Еще добавил датчики разряда Li-Po батареи, на всякий пожарный.

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

image
image
image
image

На всю разводки и допилку платы ушло около 2-х недель. В итоге полноценная pcb выглядела приемлемо:

image

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

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

Комментарии (9)


  1. Dorrin
    06.04.2015 15:22
    +1

    Делал подобный проект, диплом жене, местами сложнее(манипулятор, поворотная камера), местами проще(от розетки, но позиционировали как защиту от хацкеров)
    Чтобы не перетаскивать сюда все, напишу вкратце.
    1) Робота решил делать с двумя ведущими колесами и одним поворотным — не самая лучшая идея, потому что им сложно управлять, проблематично правильно распределить нагрузку и карту перемещений непросто описать.
    Решение: четырехколесная платформа с возможностью осевого вращения.
    2) По размерам захотел уложиться в максимум 200х200 мм, так как всегда нравились небольшие и даже миниатюрные роботы;
    Или малинка с вафлей или шилд(но дорого)
    Решение: старый нетбук.
    2) Использовать печатную плату как шасси для уменьшения габаритов показалось хорошей идеей;
    Если кроме покатушек планов нет, то идея хорошая, а если есть полезная нагрузка, то не очень))


    1. Alexeyslav
      06.04.2015 16:28

      Почему же, текстолит есть толщиной в 10мм выдержит любую полезную нагрузку которую вообще сможет такой мелкий сдвинуть с места.


      1. Dorrin
        06.04.2015 16:32
        -1

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


    1. AlexBolm Автор
      06.04.2015 21:40

      В следующей части публикации опишу пару проблем, которые связаны с вашими предложениями почти на прямую :)


  1. zim48
    06.04.2015 20:34

    Как называется программа в которой печатную плату чертили?


    1. Dorrin
      06.04.2015 21:30
      -1

      Не хочу показаться грубым, но вы не знаете что такое скриншот? altium designer


    1. AlexBolm Автор
      06.04.2015 21:36

      Altium Designer 14.1


  1. evr1ka
    07.04.2015 08:37

    Еще, еще!
    Баловался роботом POP-BOT. Хочу собрать в закрытый корпус компоненты в виде гоночной машинки (жестянная, от печеньев). Сначала возможно на прототипной основе, потом более компактно.
    Поэтому смотрю варианты за двигатели, и заинтересовал момент в вашей статье по энкодерам.
    Так что жду продолжения…


    1. AlexBolm Автор
      08.04.2015 22:20

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