В работе описывается методология разработки, реализации и отладки, а также технические решения при создании робота для транспортировки малогабаритных объектов на базе микроконтроллера AVR.
Данная работа может быть рекомендована студентам старших курсов специальностей электроника и приборостроение, робототехника и мехатроника, а также преподавателям и студентам ЦМИТов и других образовательных организаций в области электроники и робототехники.
Ключевые слова: образовательная робототехника, сортировка, arduino, программирование, микроконтроллер, сервопривод, датчик, сдвиговый регистр
На сегодняшний день робототехника имеет весьма динамичное развитие и стремительно становится неотъемлемой частью жизни человека. Одним из ярких примеров является робот-пылесос, помогающий в уборке дома. Существуют также роботы сортировщики, осуществляющие свою деятельность на складах и помогающие обеспечивать логистику: максимально эффективно и быстро производить сортировку, складирование, выдачу различных товаров и объектов. Данный проект — робот для транспортировки малогабаритных объектов, является миниатюрным гибридом вышеописанных роботов, который находит свое применение в условиях домашнего помещения.
В центре робототехники, в котором авторы занимаются преподаванием программирования на Arduino и LEGO MINDSTORM EV3, а также ведут деятельность с дошкольниками, собирая конструкторы, довольно актуальной является проблема уборки различных деталей, которые остаются после занятий с детьми. В виду занятости всех сотрудников центра образовательным процессом и отсутствия времени, проблема становится еще более насущной. Для решения этой задачи было предложено создать робота, способного самостоятельно передвигаться, обходить препятствия, находить малогабаритные объекты, и доставлять в определенное место в комнате, условно названное базой.
В качестве программируемой платформы было решено использовать Arduino UNO, на базе микроконтроллера AVR — ATmega328. В процессе работы были разработаны: структурная схема, алгоритм поведения, электрическая принципиальная схема в среде разработки DipTrace, код программы на языке Си, конструкция робота, на основе которых далее был реализован и запрограммирован первый прототип.
- Описание конструкции робота.
Движение робота осуществляется при помощи двух колес, управляемых двигателями постоянного тока, для ориентации и распознавания препятствий применяется десять инфракрасных датчиков приближения, собранных самостоятельно, один ультразвуковой датчик, необходимый для измерения расстояния до стен и препятствий; схват, предназначенный для захвата детали, и радиомаяк, позволяющий роботу находить базу и доставлять на нее объекты. На основе вышеперечисленных блоков была составлена функциональная схема устройства, представленная на рисунке 1.
Рис. 1. Функциональная схема робота
1.1 Система распознавания препятствий на основе ИК-датчиков.
При конструировании робота было решено использовать самостоятельно собранные оптические датчики приближения. Для этого были использованы ИК светодиоды BL-L513IRAB (940 нм) и ИК фотоприемники TSOP34838.
Рис. 2. Инфракрасный датчик в сборе
Датчики работают по принципу детектирования приемниками модулированного ИК-сигнала от излучателей посредством отражения от любого предмета в зоне видимости, которая составляет 10–15см. Собранный датчик представляет собой печатную плату, на которой располагается ИК-излучатель и приемник, разделяемые светоизолятором для исключения эффекта засвета (Рисунок 2).
Рис. 3. Схема расположения инфракрасных датчиков приближения в конструкции робота
Для того, чтобы робот мог отличить препятствие от предмета для транспортировки применяется система из двух вертикально расположенных датчиков (Рисунок 3). Таким образом, если и верхний, и нижний датчики обнаруживают перед собой объект, то, следовательно, это препятствие, а если объект обнаружен только нижним датчиком — предмет для транспортировки.
Под схватом также располагается ИК-датчик № 10, необходимый для фиксации положения предмета строго напротив схвата. В тот момент, когда датчик обнаружил предмет, робот начинает двигаться вперед до тех пор, пока предмет не окажется между губками схвата. Положение предмета определяется десятым ИК-датчиком № 9, расположенным между губками схвата, и в случае детектирования предмет захватывается.
Рис. 4. Вид схвата снизу
Рис. 5. Вид схвата сверху
При работе с оптическими датчиками возникли две проблемы:
- излучатели засвечивали соседние приемники;
- при таком большом количестве датчиков недостаточно доступных портов ввода/вывода Arduino.
В целях устранения проблем было предложено использовать четыре сдвиговых регистра: два 74HC595 с последовательным входом и параллельными выходами для подключения излучателей и два 74HC165 с параллельными входами и последовательным выходом для приемников. Применение данного решения позволило сократить количество используемых пинов с 20 до 6.
Далее был разработан и реализован отдельный Shield для Arduino Uno, включающий в себя печатную плату и сдвиговые регистры с выходными разъемами для подключения ИК-датчиков, разработка производилась в программном пакете Diptrace (Рисунок 6).
Рис. 6. Shield для подключения ИК датчиков
1.2 Ультразвуковой дальномер.
Вследствие того, что передняя часть конструкции нагромождена объектами и верхний ИК-датчик не может быть установлен, вместо него применяется ультразвуковой дальномер HC-SR04, главной задачей которого является измерение расстояния до препятствий. Устройство питается от линии +5В, может измерять расстояние от 2 до 400см с точностью до 0.3 см.
Рис. 7. Ультразвуковой датчик измерения расстояния HC-SR04
1.3 Конструкция схвата для транспортировки предметов.
Схват собран из деталей, вырезанных на гравировально-фрезерной машине Roland MDX-40A из ДСП толщиной 6 мм. В качестве привода для схвата используется микросервопривод FS90, крутящий момент которого составляет при напряжении 4,8 В, что достаточно для удержания малогабаритных легковесных предметов (Рисунок 4, 5).
1.4 Шасси и драйвер двигателей.
Шасси, материалом которого является акрил, служит базой для всей конструкции робота. В ее составляющие части также входит шаровая опора, двигатели постоянного тока с редукторами и колеса.
1.5 Управление двигателями.
Микроконтроллер, установленный на Arduino, не может непосредственно управлять большой нагрузкой на своих цифровых выходах. Максимально возможный выходной ток с ножки микроконтроллера — 40 мА. Чтобы иметь возможность управлять большой нагрузкой существуют специализированные устройства, созданные на базе H-моста.
Рис. 8. Шасси с двигателями и колесами
H-мост позволяет управлять скоростью и направлением вращения мотора с помощью логических сигналов микроконтроллера. Чаще всего в качестве Н-моста используется микросхема L298P. Motor Shield — плата расширения для Arduino на базе чипа L298P, предназначенная для двухканального управления скоростью и направлением вращения коллекторных двигателей постоянного тока, напряжением 5–24 В в режиме раздельного питания и 7–12 В в режиме объединённого питания и максимальным током до 2 А на канал.
Рис. 9. Драйвер двигателей Motor Shield
1.6 Система питания робота.
Одним из самых ответственных блоков данного устройства является система питания. Для питания необходимо иметь стабилизированный источник +5В для микроконтроллера, серводвигателя, датчиков, а также +10В для двигателей и приемника радиомаяка. Из источников энергии имеется батарейный блок из 4 элементов АА, позволяющий получать напряжение от +4,6 до +6В в зависимости от степени разряженности батарей. В любом случае, применение нестабильного напряжения непосредственно с батарейного отсека является недопустимым, к тому же, необходимо наличие повышенного стабильного напряжения. Исходя из этих критериев система была спроектирована следующим образом: нестабильное напряжение с батареи поступает на модуль импульсного повышающего преобразователя, с выхода которого снимается стабилизированное напряжение +10В для питания двигателей и радиомаяка. Это же напряжение поступает на плату Arduino Uno, где преобразуется в +5В для питания всех остальных устройств (рисунок 1). В качестве модуля повышающего преобразователя применен импульсный DC/DC конвертер на основе микросхемы LM2577 (рисунок 10).
Рис. 10. Модуль импульсного повышающего преобразователя на основе ИМС LM2577
1.7 Радиомаяк для определения местонахождения базы.
Для определения расположения места складирования предметов применяется система на основе радиомаяка: передатчик на базе непрерывно излучает промодулированный радиосигнал с частотой 100 КГц, а находящийся на роботе приемник выдает уровень сигнала в виде величины напряжения зависящего от расстояния до передатчика. Исходя из величины этого напряжения робот определяет свое местоположение относительно передатчика и движется в его сторону. В качестве радиомаяка применяется доработанный набор KIT NN104 (Рисунок 11).
Рис. 11. Конструктор радиомаяк KIT NN104
- Описание общего алгоритма работы.
Был разработан алгоритм поведения робота, на основе которого позже составлена программа на языке Си в среде Arduino IDE. Алгоритм работы программы состоит из 4 частей:
- Движение в пространстве;
- Обнаружение объекта и определение, является ли он препятствием или предметом для транспортировки;
- Захват предмета;
-
Доставка предмета на базу.
- Движение в пространстве.
После запуска робот начинает перемещаться: двигаться вперед некоторое количество секунд и поворачивать на случайный угол до тех пор, пока одна из четырех пар датчиков (рисунок 3) не зафиксирует препятствие либо предмет для транспортировки.
2.2 Обнаружение объекта.
Как уже упоминалось выше, благодаря тому, что робот обладает двумя рядами расположенных вертикально один над другим датчиков, возможно отличить, что именно замечено: препятствие, которое нужно обойти или предмет, который необходимо доставить на базу (рисунок 4).
Соответственно, если один из нижних датчиков фиксирует перед собой некий объект, происходит проверка: видит ли данный объект соответствующий верхний датчик. Если оба датчика срабатывают, значит обнаружено препятствие. Далее, в целях его обхода, робот отъезжает на некоторое расстояние и разворачивается (рисунок 4), после чего возвращается к пункту 1 — движению в пространстве.
Если верхний датчик не фиксирует препятствие, то это означает, что возле этого датчика находится предмет, который необходимо транспортировать на базу.
При обнаружении предмета правыми или левыми боковыми датчиками, робот будет поворачивать вправо или влево соответственно до тех пор, пока предмет не будет зафиксирован датчиком, расположенным прямо под схватом (рисунок 3).
2.3 Захват предмета.
В случае обнаружения предмета датчиком № 10 производятся действия по его захвату. Начинается движение вперед до тех пор, пока предмет не окажется между губками схвата. Наличие или отсутствие предмета определяется при помощи ИК-датчика № 9, расположенного непосредственно в схвате. Если предмет находится в схвате, то губки схвата сжимаются сервоприводом, предмет оказывается зафиксированным и робот переходит к процедуре транспортировки предмета на базу.
2.4 Доставка предмета на базу.
Нахождение базы осуществляется посредством радиомаяка. Маяк, расположенный в месте, куда необходимо складировать предметы, постоянно излучает радиосигнал, который улавливается приемником робота, во время процедуры поиска базы. Как известно, мощность радиосигнала обратно пропорциональна квадрату расстояния от источника излучения, именно по этому принципу робот определяет расположение базы: движение идет в направлении усиления сигнала.
Доставленный на базу предмет остается там же, и далее робот снова возвращается к выполнению процедуры поиска нового предмета.
Рис. 11. Общий алгоритм работы робота
Рис. 12. Изображение готового прототипа
Заключение.
Задача данного проекта — создание робота для помощи преподавателям центра робототехники в уборке малогабаритных предметов (деталей LEGO). Результатом является действующий прототип, построенный с помощью программируемой платформы ARDUINO UNO, ядром которой является микроконтроллер AVR ATmega328P, движение робота в пространстве осуществляется двигателями постоянного тока, установленных на шасси, а обнаружение предметов или препятствий — с помощью 10 оптических датчиков приближения. Для транспортировки предметов применяется схват, управляемый сервоприводом. Ориентация робота в пространстве осуществляется при помощи радиомаяка.
В процессе работы возникли следующие технические проблемы:
- Нестабильная работа ИК-датчиков за счет эффекта их взаимной засветки.
- Недостаточное количество требуемых свободных портов ввода/вывода платформы Arduino.
Для решения данных проблем были использованы сдвиговые регистры двух типов: с параллельными входами и с параллельными выходами. Данное решение позволило дискретно управлять ИК-датчиками и устранить эффекты засветки, а также уменьшить требуемое количество портов ввода/вывода.
В процессе работы над проектом были получены навыки построения алгоритмов, программирования, отладки, разработки электрических принципиальных схем, конструирования, проектирования робототехнических систем, поиска неисправностей и их устранения.
Данная работа и описанная методология может оказаться полезной для людей, занимающихся практической реализацией различных проектов по робототехнике и электронике.
Литература:
- http://www.amperka.ru
- Di Halt Учебник по микроконтроллерам AVR для начинающих — Издательство: http://dihalt.ru/, 2008, — 574 с.
- Белов А. В. Микроконтроллеры AVR в радиолюбительской практике — СП: «Наука и Техника», 2007. — 339 с.
- Шпак Ю. А. Программирование микроконтроллеров на языке СИ. — К.: «МК-Пресс», СПб.: «КОРОНА-ВЕК», 2011–544 с.
- Белов А. В. Самоучитель разработчика устройств на микроконтроллерах AVR. — Изд. 2-е, перераб. и доп. — СПб.: Наука и Техника, 2010. — 528 с.
- Datasheet // Atmel Corporation [Electronic resource]. — 2015. — Mode of access: http://www.atmel.com/images/atmel-8271–8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328–328p_datasheet_complete.pdf — Date of access: 15.05.2016.
- Datasheet // NXP Semiconductors [Electronic resource]. — 2015. — Mode of access: http://www.nxp.com/documents/data_sheet/74HC_HCT165.pdf. — Date of access: 15.05.2016.
- Datasheet // NXP Semiconductors [Electronic resource]. — 2016. — Mode of access: https://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf. — Date of access: 15.05.2016.