Робот Sumo на Arduino nano.

 

Кравченко А.В.г Киев.

 

Сборка робота – это увлекательное занятие, особенно если робот будет принимать участие в соревнованиях. Конечно, спортивное состязание mini Sumo привлечет много зрителей и любителей микроконтроллерной техники. В соревновании mini Sumo роботы устанавливаются на поле, напротив друг друга. Задача роботов, самостоятельно вытолкнуть соперника за пределы поля. Что бы это сделать, робот имеет программу, алгоритм которой позволяет прибегнуть к хитрости, или к силе. Но собрать робота из электронных деталей не всегда возможно. И времени на конструирование мало и знаний недостаточно. В продаже появились платы для конструирования микроконтроллерных систем. Такие платы помогают быстро собрать конструкцию. Одна из них Arduino nano. Полное описание платы микроконтроллера можно получить на www.arduino.cc. [1]

 Итак, робот собран на основе Arduino nano, поэтому, мы вправе его назвать Sumoard. Что роботу Sumoard необходимо? Общий вес робота не должен превышать 500 грамм, габаритные размеры по ширине и длине не более 120 мм. Поле для сражения в диаметре не более 900 мм.

Концепция робота Sumoard заключается в его треугольной форме, в виде поваленной призмы. Во время боя краеугольная конструкция позволяет на большой скорости подцепить соперника и сделать его неуправляемым рис 1. Неуправляемость соперника дает преимущества, так как его можно легко вытолкнуть за поле поединка и выиграть состязание. Для обнаружения соперника у робота есть фотосенсоры. Чтобы соперник не смог повредить фотосенсоры, они расположены повыше над щитом. Такое расположение фотосенсоров позволяет увидеть соперника и не выйти из строя во время боя. Фотосенсоры имеют отражатели. Отражатели позволяют максимально сфокусировать сенсоры на соперника. Шит, имеет контактный датчик удара. Робот чувствует, когда попал на соперника. В этот момент робот направляет всю свою силу на удар. Робот прилагает всю мощность, чтобы вытолкнуть соперника за поле. Но если соперник сумел увернутся, и ударил сзади, то у робота так же есть сзади контактный датчик. Робот чувствует удар сзади и выполняет маневр разворота на месте. Что бы лицом к лицу встретится с противником. В программе робота заложено поведение во время боя. Робот постоянно ищет соперника на поле. На соперника робот нападает осознанно без помощи человека. Развивая и дополняя программы робота, можно полностью сформировать самостоятельное поведение робота.

Блок схема Sumoard имеет классическую структуру рис 2 [2]. В основе схемы управления заложена плата МК Arduino nano. На блок схеме рис 2 инфракрасные (ИК)  датчики положения PHS1-PHS4 определяют границу поля, на котором находится робот. Генератор 36 кГц генерирует импульсы для светодиодов Led1-Led2, которые засвечивают объекты перед роботом. ИК датчики PH1, PH2 улавливают отражения от объектов и сообщают на плату МК о приближающемся сопернике. МК получает информацию об окружающей среде и управляет двигателями М1, М2. Для работы двигателей предусмотрены реверсивные драйверы. Питание драйверов двигателей М1, М2 поступает с управляемого стабилизатора U стаб.

Схема Sumoard рис 3 собрана на четырех микросхемах и дополнительной платы МК Arduino nano. На плате Arduino nano установлен МК ATmega 168 – 20, цепи сброса, а также стабилизатор напряжения питания +5 В и приемо - передатчик схема сопряжения с USB портом на основе микросхемы FT232RL. Для питания плат, напряжение с аккумуляторов 7,5 В подается на разъем SV4. Через выключатель питания S1 нестабилизированное напряжение 7,5 В попадает на IC2 и плату управления Arduino nano (вывод 1 SV1). На плате Arduino nano есть стабилизатор напряжения, формирующий +5,0 В. Стабилизированное напряжение +5,0 В питает микросхемы IC1, IC3, и ИК датчики IC4 PH1, PH2, PHS1-PHS4. Рассмотрим работу ИК датчиков столкновения PH1, PH2. Согласно документации [3]   для работы фотодатчика TSOP4636 необходим генератор световых импульсов с частотой 36 кГц. Такой генератор можно организовать на МК или сделать на отдельной микросхеме. Что бы упростить программу, генератор 36 кГц выполнен на NE555 IC1. С помощью цепочек C2, C3,  R5, R7, R12 на генераторе формируются прямоугольные импульсы 36 кГц. R7 может изменять частоту в небольших пределах. Для засветки двух ИК диодов необходим ток около 15 мА. Q3 выполняет функцию усилителя по току. R8 ограничивает ток базы. R9, R10 ограничивает ток ИК диодов LD1, LD2. Световые ИК импульсы генерируются LD1, LD2 и отражаясь от препятствий попадают на PH1, PH2. ИК фотодатчики PH1, PH2  выделяют из общего светового фона ИК лучи с частотой 36 кГц с помощью встроенного полосового фильтра частот и в случае обнаружения ИК лучей открывают выходной транзистор датчика.  Данные с датчиков PH1, PH2 поступают на 10, 11 вывод SV1 платы МК Arduino nano. Этот сигнал обрабатывается входным аналого-цифровым преобразователем (АЦП) в цифровой код. Код попадает в программу, где анализируется и в зависимости от результата, выполняет следующие шаги программы. Для определения границ поля дополнительно подключаются оптосенсоры. Оптосенсоры на ИК лучах PHS1-PHS4 [4] также подают сигналы к выводам 5,6 и 8,9 разъема SV1 платы МК. Данные от датчиков поступают на каналы АЦП, и преобразуются в цифровой код. В результате программа решает заступил робот за границу поля или нет. Работа программы в МК формирует выходные сигналы с платы управления МК Arduino nano на выводы 9-15 SV2. Рассмотрим управление электродвигателей. В ходе программы, выполняется управление драйверами двигателей. Питание драйверов IC3, IC4 двойное. Для управления выбрано напряжение 5,0 В, для питания двигателей регулируемое от 2,0 В до 7,0 В. Электродвигатели  [5] имеют начальный пусковой ток около 600 мА, затем ток снижается до 180 мА. Ток и обороты вращения вала электродвигателя зависят от напряжения питания. Для формирования напряжения с различной величиной установлен регулируемый стабилизатор IC2 LM2576T-ADJ. С помощью полевых транзисторов Q1, Q2 плата управления МК может ступенчато изменить выходное напряжение стабилизатора IC2. Регулировка выходного напряжения стабилизатора выполняется путем подачи регулируемого напряжения на 4 вывод IC2. Преобразователь напряжения IC2 позволяет из 5,0-7,5 В сделать стабильное 3.0 В, 2.5В,  2.0В для питания двигателей.  IC 2 работает в генераторном режиме и формирует прямоугольные импульсы. На дросселе L1 и электролитическом конденсаторе С5 сглаживаются эти импульсы и формируется напряжение необходимое для электродвигателя. Использование стабилизатора IC2, позволит экономить энергию аккумуляторов, и предотвращает выход из строя драйверов IC3, IC4. Кроме этого, используется полезная функция робота - автоматически изменять скорость передвижения, в зависимости от ситуации. Например, что бы вытолкнуть соперника, необходима максимальная скорость и максимальная мощность электродвигателей. В то же время для отступления от границы поля необходимо не торопится, а потихоньку отъехать и изменить траекторию движения на средней скорости. В обоих случаях скорость движения робота различная. При передвижении по полю можно ехать с средней скоростью.  Все эти действия робота, позволяет сделать стабилизатор IC2 и драйверы IC3, IC4. Таким образом, имеем экономию энергоресурса и изменяемую скорость движения. Но, при столкновении с роботом соперником возникают ситуации, когда необходимо сделать маневр. Например, если соперник подъехал сзади, то надо развернутся. Если соперник находится спереди, то надо ехать прямо с максимальной мощностью и вытолкнуть его за границы поля. За эти функции отвечают два микровыключателя S2, S3. Микровыключатель S2 находится спереди платформы робота, S3 –сзади фото 2. Дополнительно имеется еще одна функция управления. Для настройки фотодатчиков и правильного направления вращения электродвигателей установлен DIP переключатель SW1. Разные положения SW1 существуют для выбора режима тестирования. Через разъем SV3 подключаются электродвигатели. Средний провод подключается к корпусу электродвигателей.

Монтажная плата имеет основную, силовую плату рис 4а и съемную плату Arduino nano. Разводка платы показана на рис 4. Во время монтажа необходимо изолированным проводом соединить 4 вывод IC1 с 10 выводом IC4. Оптосенсоры PHS1-PHS4  и микровыключатели S2, S3 выносятся за плату, с помощью удлинения проводами выводов элементов. Это необходимо для уменьшения количества разъемов и исключения их ненадежной работы, особенно в условиях поединков. Перед монтажом на светодиоды LD1, LD2 надеваются и клеятся трубки, а на фотодатчики PH1, PH2 отражатели. Это необходимо для  более эффективной и направленной работы сенсоров, обнаруживающих противника. Плата Arduino nano поставляется в двух версиях. Стандартная плата имеет расстановку выводов как указано в [1].  Совместимая плата Arduino nano отличается входами А0-А7 расставленными в обратном порядке. Это необходимо учитывать при монтаже. Для совместимой платы необходимо перепаивать входы А0-А7 с помощью навесного монтажа.

Детали Sumoard таблица 1: электродвигатели NMB PPN7PA10C (пусковой ток 567 мА, рабочий ток 157 мА, напряжение питания 2,0-5,0В )[5], стабилизатор напряжения LM2576T-ADJ [6],  драйвер LB1642 рабочее напряжение от 4,0 до 16,0 В, ток до 0,7А[7], дроссель L1 100 мкГн максимальный ток 1,0А –RCH110NP-101K [8], полевые транзисторы -ST4NF [9].

Программа листинг1, листинг2. Фактически робот не имеет полноценного зрения, и только видит габариты соперника. Поэтому ему необходима ориентация в пространстве.  Двигаясь прямо и обнаруживая опто сенсорами границу поля, робот может воссоздать план местности. По условиям состязания mini Sumo, поле должно быть круглым, диаметром не более 900 мм. Это позволяет, исходя из одной точки соприкосновения с краем поля, сориентировать робота в пространстве. В дальнейшем, робот выбирает стратегию, согласно которой, ведет обнаружение противника. Стратегия может быть различной. Например стратегия обнаружения соперника заключается в движении по кругу поля (по спирали), или движение робота по траектории крест накрест, или в движении переходя из квадранта в квадрант, или робот убегает (объезжает вокруг соперника) и ударяет сбоку (сзади), или робот стоит ожидает удара, а в момент приближения соперника уходит от удара и ударяет сбоку (сзади). В рассматриваемой программе стратегия выбрана, как движение крест – накрест. Даже при неидеальном перекрестном движении, существует вероятность обнаружения противника 90%, тогда как остальные стратегии дают более низкую вероятность обнаружения. Программа написана на языке ассемблер. Программа использует всего 15% от общей памяти программ МК ATmega168.

В начале программы расположен вектор прерываний (в данной программе используются прерывания от контактных датчиков, и трех таймеров). Далее производится настройка и обнуление портов ввода, вывода, установка программного стека и обнуление переменных. При входе в начале программы в зависимости от положения DIP выключателя происходит ветвление на подпрограммы. DIP 1-ON, 2-OFF подпрограмма Motor. DIP 1-OFF, 2-ON подпрограмма Pet. DIP 1-ON, 2-ON подпрограмма Test. DIP 1-OFF, 2-OFF подпрограмма Start. Прежде всего подпрограмма Motor. Эта подпрограмма необходима для правильной коммутации электродвигателей. Подпрограмма начинает работать сразу и включает последовательно электродвигатели. Сначала включается левый электродвигатель движение робота вперед, потом правый – вперед, оба двигателя вперед, оба двигателя назад, левый двигатель назад, правый двигатель назад. Двигатели работают с небольшими промежутками времени, около 0,5 секунды. Если двигатели имеют правильную коммутацию и направление вращения вала, то можно перейти к следующему тесту фотосенсоров. Если неверное вращение, то необходимо пере подключить электродвигатели. В подпрограмме Motor используются программные временные задержки, подпрограмма zader, zader1. Подпрограмма Pet необходима для старта робота с паузой в начале движения 5 секунд. Это условие необходимо для выполнения правила состязания mini Sumobot. По истечении 5 секунд, программа Pet переходит к подпрограмме Start. Подпрограмма Test необходима для выполнения теста оптических датчиков, расположенных по периметру робота. В настройках робота более подробно описан этот тест. Если все работает, то можно перейти к основной программе. Если фотосенсоры срабатывают плохо, необходимо ввести коррекцию в подпрограммах фотосенсоров perfo и подпрограммы границы поля datch.  Подпрограмма Start управляет роботом в состязании mini Sumobot на поле. Так как стратегия выбрана крест на крест, то программа выполняет записанные заранее шаги. Шаги стратегии записаны в конце программы, в ходе программы они переписываются в оперативно запоминающее устройство (ОЗУ) и выполняются по мере прохождения программы. В начале подпрограммы Start запускаются два таймера. Таймер То отсчитывает 16,32 мС, Т2 отсчитывает 1,98 мС. Как только активизируется прерывание по переполнению таймера Т0, то проверяются фотосенсоры границы поля и запускается таймер Т1. Как только активизируется прерывание по переполнению таймера Т1, то проверяются фотосенсоры обнаружения соперника и запускается таймер Т0. Во время действия подпрограмм прерывания, робот может изменить траекторию движения, в зависимости от данных с фотосенсоров. Так если фотосенсор обнаружил границу поля, то робот должен отойти от этой границы. При столкновении с соперником, активизируется прерывание INT0, INT1 и в зависимости от удара спереди или сзади активизируется маневр движения прямо или разворота на месте. В остальных случаях программа действует согласно стратегии крест на крест. То есть робот ищет соперника и как только находит его, нападает и выталкивает за границу поля.

Конструкция робота состоит из основания 100х100 мм (с боковыми сторонами высотой 10 мм). Основание сделано из крышки флоппи дисковода (жесть 0,3 мм). К основанию крепятся боковые стороны, изготовленные из треугольных линеек 100х110х150 мм. К боковым сторонам прикреплены редукторы с двигателями (заимствованы от китайских игрушек). В основании установлены два отсека для аккумуляторов АА по две штуки и по три штуки фото 3. Переднее колесо заимствовано от плеера. Во время движения робота колесо  самостоятельно поворачивается фото 4. Монтажная плата установлена как распорка между боковыми сторонами, что придает прочность конструкции. Монтажная плата крепится к боковым сторонам с помощью уголков. К передним уголкам прикреплен щит винтами с пружинами. Пружины позволяют сглаживать удары во время столкновения. В верхней части щита прикреплены фотосенсоры обнаружения противника. В средней части щита установлены светодиоды подсветки противника. В средней части щита в основании робота установлен контактный датчик столкновения спереди. Фотосенсоры границы поля установлены по углам основания робота. В задней части робота прикреплен контактный датчик столкновения сзади. Выключатель питания находится на плате управления фото 5.

Настройка Sumoard начинается с прошивки программы на плату управления. Далее с помощью DIP переключателей включается режим мотор. В этом режиме поочередно включаются левый и правый двигатели. Этот режим необходим для установки правильного вращения двигателей. В случае неверного вращения, перекидываются провода на двигателе. После чего осциллографом проверяется генерация импульсов с 3 вывода IC1. Частота импульсов должна быть 36 кГц. Частота настраивается резистором R5. Как только генератор 36 кГц настроен, проверяются датчики границы поля. Для этого изменяют комбинацию включения DIP переключателей для активации подпрограммы Test и включают питание робота. Во время теста робота ставят на пьедестал высотой примерно 5 см. К фотодатчикам спереди подносят листочек белой бумаги, так что бы отражение от светодиодов попадало на фотосенсоры и проверяют реакцию робота. В зависимости от фотосенсора робот должен включать левый или правый электродвигатели. Так же проверяются сенсоры границы поля, расположенные по периметру робота. Как только все настроено, DIP переключатели устанавливают в положение Start. Робот готов к эксплуатации.

Эксплуатация. Себестоимость робота около 57 евро таблица 1. Вес с аккумуляторами 419 грамм, габариты с учетом датчиков и колес 130х130 мм. Габариты основания 100х100 мм. Во время состязания, роботов устанавливают напротив друг друга на поле. Включают питание и активируют паузу 5 секунд. Далее роботы двигаются самостоятельно. Как только один из роботов вытолкнул соперника за поле, то  робот становится победителем.

Автор приглашает к состязанию радиолюбителей, построивших модели роботов, соответствующих правилам mini Sumobot.

 

Литература:

 

1.      User manual. Arduino Nano (V2.3) 2008.

2.      Кравченко А.В. Sumobot// Радиоаматор.-2009.-№2, 3-4

  1. Datasheet. TSOP4836. Photo modules for PCM remote control systems. Vishay.
  2. Datasheet. HOA0149-2. Reflective sensor. Honeywell.
  3. Datasheet. PPN7. Specifications. NMB.
  4. Datasheet. LM2576.  Simple switcher step-down voltage regulator. National Semiconductor.
  5. Datasheet. LB1642. Bidirectional motor driver with braking function. Sanyo.
  6. Datasheet. RCH110NP. Power inductor. Sumida.

9.      Datasheet. ST4NF. Power mosfet. STmicroelectronics.