В этой серии публикаций я хочу поделиться с вами историей создания своего первого робота под управлением микроконтроллера, а также об ошибках и упущениях, которые я допустил во время всего процесса. Скажу сразу, что программная часть робота еще не доделана и реализована только часть функций, но я продолжаю бороться с багами и ленью и в будущем обязательно доделаю все, что задумал, прошу строго не судить. Если я вас заинтересовал — прошу. Часть первая, проектировочная.
Наверно, все началось с того, что я захотел проводить свое свободное время более продуктивно. Решение построить робота было молниеносным и непоколебимым — всегда любил статьи на тему робототехники и различного 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.
Кстати, присмотревшись к колесам, можно увидеть на них вырезы, которые явно были сделаны специально.
Мои мысли подтвердила компания Sparkfun со своим набором таких же колес с оптическими энкодерами. Тут я загорелся идеей считывать количество оборотов колес (хотя бы примерное).
Но не покупать же еще один набор колес, это не по нашему! Решил сделать свою версию энкодера. Попыхтев вокруг колес и моторов с штангенциркулем, понял, что повторить спаркфановскую платку мне не удастся. Но что приходит на ум, если оптические энкодеры в разработке использовать неудобно — правильно, магниты и датчики Холла! На 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.
Итак, еще несколько дней ушло у меня на проектирование нашей небольшой схемы.
Как видите, я решил использовать 8 датчиков линии и соответственно использовать все 8 каналов АЦП нашего МК, благодаря 74HC4051D сократил количество нужных пинов для зажигания светодиодов датчиков. Для работы с мониторчиком был взят буфер SN74LVC245ADW, который должен решить вопрос с уровнями напряжений. Его питает маленькая микросхема линейного стабилизатора на 150мА с крайне низким падением напряжения LTC1844. Еще добавил датчики разряда Li-Po батареи, на всякий пожарный.
Дальше меня ждал самый «трудоемкий» этап при изготовлении любого электронного устройства — создание печатной платы.
После нескольких вечеров раскидывания элементов по печатной плате родилось нечто:
На всю разводки и допилку платы ушло около 2-х недель. В итоге полноценная pcb выглядела приемлемо:
На этом я закончу первую часть своего рассказа. Надеюсь, вам было интересно.
Надеюсь на вашу конструктивную критику по оформлению и подаче моего хабропоста. В любом случае сделаю еще одну или две части, в которых будет описан процесс создания самой печатной платы, расскажу немного о том, как собирался весь робот, покажу фото готового устройства, поговорим о программе для компьютера, ну и выложу небольшое видео работы робота.
Наверно, все началось с того, что я захотел проводить свое свободное время более продуктивно. Решение построить робота было молниеносным и непоколебимым — всегда любил статьи на тему робототехники и различного 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.
Кстати, присмотревшись к колесам, можно увидеть на них вырезы, которые явно были сделаны специально.
Мои мысли подтвердила компания Sparkfun со своим набором таких же колес с оптическими энкодерами. Тут я загорелся идеей считывать количество оборотов колес (хотя бы примерное).
Но не покупать же еще один набор колес, это не по нашему! Решил сделать свою версию энкодера. Попыхтев вокруг колес и моторов с штангенциркулем, понял, что повторить спаркфановскую платку мне не удастся. Но что приходит на ум, если оптические энкодеры в разработке использовать неудобно — правильно, магниты и датчики Холла! На 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.
Итак, еще несколько дней ушло у меня на проектирование нашей небольшой схемы.
Как видите, я решил использовать 8 датчиков линии и соответственно использовать все 8 каналов АЦП нашего МК, благодаря 74HC4051D сократил количество нужных пинов для зажигания светодиодов датчиков. Для работы с мониторчиком был взят буфер SN74LVC245ADW, который должен решить вопрос с уровнями напряжений. Его питает маленькая микросхема линейного стабилизатора на 150мА с крайне низким падением напряжения LTC1844. Еще добавил датчики разряда Li-Po батареи, на всякий пожарный.
Дальше меня ждал самый «трудоемкий» этап при изготовлении любого электронного устройства — создание печатной платы.
После нескольких вечеров раскидывания элементов по печатной плате родилось нечто:
На всю разводки и допилку платы ушло около 2-х недель. В итоге полноценная pcb выглядела приемлемо:
На этом я закончу первую часть своего рассказа. Надеюсь, вам было интересно.
Надеюсь на вашу конструктивную критику по оформлению и подаче моего хабропоста. В любом случае сделаю еще одну или две части, в которых будет описан процесс создания самой печатной платы, расскажу немного о том, как собирался весь робот, покажу фото готового устройства, поговорим о программе для компьютера, ну и выложу небольшое видео работы робота.
Комментарии (9)
evr1ka
07.04.2015 08:37Еще, еще!
Баловался роботом POP-BOT. Хочу собрать в закрытый корпус компоненты в виде гоночной машинки (жестянная, от печеньев). Сначала возможно на прототипной основе, потом более компактно.
Поэтому смотрю варианты за двигатели, и заинтересовал момент в вашей статье по энкодерам.
Так что жду продолжения…
Dorrin
Делал подобный проект, диплом жене, местами сложнее(манипулятор, поворотная камера), местами проще(от розетки, но позиционировали как защиту от хацкеров)
Чтобы не перетаскивать сюда все, напишу вкратце.
1) Робота решил делать с двумя ведущими колесами и одним поворотным — не самая лучшая идея, потому что им сложно управлять, проблематично правильно распределить нагрузку и карту перемещений непросто описать.
Решение: четырехколесная платформа с возможностью осевого вращения.
2) По размерам захотел уложиться в максимум 200х200 мм, так как всегда нравились небольшие и даже миниатюрные роботы;
Или малинка с вафлей или шилд(но дорого)
Решение: старый нетбук.
2) Использовать печатную плату как шасси для уменьшения габаритов показалось хорошей идеей;
Если кроме покатушек планов нет, то идея хорошая, а если есть полезная нагрузка, то не очень))
Alexeyslav
Почему же, текстолит есть толщиной в 10мм выдержит любую полезную нагрузку которую вообще сможет такой мелкий сдвинуть с места.
Dorrin
Ну если вы на нем будете все кишки распаивать, то честь вам и хвала.
AlexBolm Автор
В следующей части публикации опишу пару проблем, которые связаны с вашими предложениями почти на прямую :)