Идея
Ardusumo – это универсальная платформа с открытым исходным кодом для создания роботов с колесным приводом, которые снабжены инфракрасными датчиками для обнаружения и объезда препятствий и могут следовать по маршруту, отмеченному темными линиями на белом фоне (Рисунок 1).
![]() |
|
Рисунок 1. | Ardusumo – платформа для создания роботов. |
Изначально проект Ardusumo задумывался с целью привлечения студентов и радиолюбителей в мир робототехники: корректно написанный код для Ardusumo позволит роботу выполнять различные автономные движения, платформа объединяет датчики и исполнительные устройства различных типов.
Основа проекта – отладочная плата Arduino. Несущая конструкция (шасси) представляет собой плату, объединяющую механические и электронные узлы. Разнообразие вариантов сборки поддерживается модульной конструкцией и универсальностью подключения.
![]() |
|
Рисунок 2. | Возможный вариант конструкции робота Ardusumo. |
Электронная схема робота Ardusumo очень проста: отладочная плата Arduino UNO, четыре оптических датчика – три впереди и один сзади, два инфракрасных датчика и драйвер электродвигателей. Оптические датчики расположены снизу шасси (направлены вниз) и используются в режиме следования по маршруту, а также для определения пересечения роботом разделительной границы.
Каждый оптический датчик содержит светодиод, направленный на поверхность, по которой двигается робот и приемник отраженного излучения. Таким образом, по интенсивности отраженного света робот может определить маршрут движения (определяется более высокая интенсивность при освещении отражающей поверхности). Передние датчики устанавливаются на одной линии перпендикулярно продольной оси платформы. Средний датчик отслеживает линию движения и обнаруживает уход робота с нее (Рисунок 3). В этом случае микроконтроллер распознает направление смещения и выдает команды корректировки. Задний датчик предназначен для обнаружения приближения робота к краю кольца и в этом случае микроконтроллер подает команду движения вперед для выхода из тупика.
Два инфракрасных датчика – это «глаза» робота, которые располагаются сверху на плате и немного развернуты в разные стороны. Благодаря этим датчикам робот может обнаруживать и объезжать препятствия (Рисунок 3).
Два светодиода, расположенные впереди снизу, используются для подсветки поверхности перед роботом и подключены непосредственно к микроконтроллеру на плате Arduino. Для звукового оповещения используется компактный звуковой излучатель.
Для устойчивости робота снизу шасси устанавливаются две дополнительные шаровые опоры.
Принципиальная схема изображена на Рисунке 4.
![]() |
|
Рисунок 4. | Принципиальная схема робота Ardusumo |
«Сердцем» робота, как упоминалось выше, является плата Arduino UNO. Все необходимые сигналы управления доступны на коннекторах платы. Сигнальные линии D4, D5, D6, D7, D8, D9 и D10 используются для управления микросхемой-драйвером электродвигателей. Сигнал ШИМ, генерируемый микроконтроллером (линии D10 и D5), необходим для управления скоростью двух электродвигателей, обеспечивающих движение и вращение робота.
Контроллер двигателей микросхема TB6612FNG – представляет собой сдвоенный мостовой ШИМ драйвер с интегрированной простой логикой управления. Каждый интегрированный драйвер содержит выходной мост, образованный четырьмя комплементарными MOSFET ключами с защитными диодами.
Каждая секция контроллера двигателей управляется ШИМ сигналом, который подается на входы PWMA и PWMB (соответственно канал A и канал B). Сигнал ШИМ одинаковый для двух электродвигателей M1 и M2. Входы AIN1, AIN2 и BIN1 и BIN2 используются для управления режимами работы выходных мостов каналов A и B, соответственно.
Интегрированная логика используется для управления вращением и остановкой каждого электродвигателя. Вращение по часовой стрелке (в соответствии с полярностью включения двигателя, показанной на схеме) получают установкой лог. 1 на входе AIN1 и лог. 0 на AIN2. Если подать сигналы наоборот, то двигатель будет вращаться против часовой стрелки. Если установить лог. 1 на входе AIN1 и AIN2, то двигатель остановится. Это же справедливо и для логики управления каналом B.
Продолжим анализ принципиальной схемы. К выводам платы Arduino RST и A4 подключены две кнопки: P2 – для сброса микроконтроллера и P1 – для пользовательской функции. Цифровой выход D11 используется для управления двумя красными светодиодами подсветки поверхности впереди робота. К выходу D12 подключен звуковой излучатель BZ1.
К аналоговым входам Arduino A1 и A2 подключаются инфракрасные датчики дистанции Sharp GP2D120 с аналоговым выходом (Рисунок 5). Выходной сигнал датчиков пропорционален расстоянию от него до препятствия. Использование двух датчиков дает нам возможность определения расстояния до препятствия и (приблизительно) его положение.
![]() |
|
Рисунок 5. | «Глаза» робота – инфракрасные датчики расстояния GP2D120. |
Инфракрасные датчики необходимо подключать через трехвыводные коннекторы S1 и S2, к которым дополнительно подводится питание +5 В и «земля» (Рисунок 6).
![]() |
|
![]() |
|
Рисунок 6. | Расположение основных электронных и механических узлов на шасси робота Ardusumo. |
Четыре аналоговых оптических датчика Vishay CNY70 для отслеживания маршрута движения подключаются к A2, D2, D3 и D1 линиям платы Arduino. Каждый оптический датчик состоит из светодиода и фототранзистора. Светодиод излучает свет по направлению к поверхности, а фототранзистор определяет интенсивность отраженного сигнала. Принцип основан на увеличении обратного тока насыщения коллекторного перехода фототранзистора. Чем ближе отражающая поверхность, тем выше интенсивность отраженного света, но стоит обратить внимание на цвет поверхности: если она белая, то интенсивность отраженного света будет больше, чем, если бы она была черной. В цепь эмиттера фототранзистора каждого датчика включен резистор (R8, R2, R4, R6), таким образом на соответствующих входах платы Arduino мы получим напряжение, уровень которого будет пропорционален интенсивности отраженного света.
Для питания робота используются 6 NiMH аккумуляторов, которые обеспечивают номинальное напряжение 7. 2 В. Не исключен вариант питания от шести батареек, в этом случае напряжение будет равно 9 В. Плата Arduino питается от встроенного регулятора напряжения 5 В. Контроль напряжения питания возложен на микроконтроллер: используется аналоговый вход А3 платы Arduino и делитель напряжения на резисторах R12 и R11.
Таблица 1. Список использованных компонентов
Обозначение в схеме |
Номинал | Примечание |
R1, R3, R5, R7, R11, R12 |
47 кОм | |
R2, R4, R8 | 390 Ом | |
R9 | 100 Ом | |
R10 | 270 Ом | |
C1, C2 | 100 нФ 63 В | |
C3, C4, C5, C6 |
470 мкФ 16 В | |
C7, C8 | 1 мкФ 35 В | |
C9 | 100 мкФ 35 В | |
T1, T2, T3, T4 | CNY70 | Аналоговый оптический датчик |
P1, P2 | Миниатюрные кнопки без фиксации | |
BZ1 | Компактный звуковой излучатель | |
SW1 | Выключатель питания | |
U1 | TB6612FNG | Двухканальный драйвер электродвигателей |
LD1, LD2 | Светодиоды 5 мм | |
F1 | Предохранитель 1 А | |
S1, S2 | Коннекторы для подключения ИК датчиков GP2D12 |
Загрузки
Исходные коды программы микроконтроллера (Arduino скетч), которые помогут протестировать функционирование узлов робота и создать свой собственный прототип – скачать