История создания еще одного робота. Часть первая, проектировочная

в 9:06, , рубрики: Atmega, DIY, diy или сделай сам, hc-05, HC-SR04, L293D, микроконтроллеры, программирование микроконтроллеров, Программирование робототехники, Электроника для начинающих

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

Наверно, все началось с того, что я захотел проводить свое свободное время более продуктивно. Решение построить робота было молниеносным и непоколебимым — всегда любил статьи на тему робототехники и различного 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

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

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

Автор: AlexBolm

Источник

Поделиться новостью

* - обязательные к заполнению поля