В.Э.Карпов
Мобильные минироботы
Часть III
Спортивная робототехника
Методические материалы
по проведению занятий со школьниками
Москва 2009
УДК ___.___._
ББК __.___
Одобрено __________________________________________.
Карпов В.Э. Мобильные минироботы Ч.3 Спортивная робототехника: метод. материалы по проведению занятий со школьниками / _______ –М., 2009. – 32 с.
Методические материалы содержат сведения теоретического и практического характера, необходимые учащимся для создания мобильных минироботов, решающих задачи из области спортивной робототехники. Рассматриваемый курс является продолжением циклов занятий «Знакомство с автоматикой и электроникой» и «Знакомство с микроконтроллерами и интегральной схемотехникой». Пособие рассчитано на преподавателей робототехнических курсов и кружков.
УДК ___.___._
ББК __.___
ISBN ___-_-_____-___-_
Ó ________________, 2009
Содержание
Соревнования мобильных минироботов
Интегральные стабилизаторы напряжения
Нестабилизированное и комбинированное питание
6. Широтно-импульсная модуляция
10. Работа с регламентами и подготовка к соревнованиям
Данные методические материалы рассчитаны на преподавателей робототехнических курсов. В них излагается порядок и примерное содержание лекционного материала, который должны усвоить обучаемые, а также приведено описание ряда практических занятий.
Курс является продолжением цикла занятий по теме «Мобильные минироботы» и посвящен созданию универсальных (многоцелевых) роботов для решения типовых задач из области спортивной робототехники.
В ходе обучения учащимся будет предложен ряд практических занятий, на которых они познакомятся с некоторыми типами датчиков и иных электронных компонент. Учащиеся будут ознакомлены с некоторыми особенностями регламентов соревнований малых мобильных роботов.
Специфика курса заключается в том, что он предоставляет собой фрагментарное рассмотрение некоторых технических вопросов. Мир схемотехники слишком обширен, а количество возможных датчиков, исполнительных механизмов и способов их применения еще шире, чтобы уместить в рамках одного пособия исчерпывающую информацию о способах решения задач спортивной робототехники. Кроме того, очень многое зависит и от конкретных регламентов соревнований, для которых создается робот, и от фантазии робототехника, и от того, наконец, какая материальная база имеется в распоряжении. Поэтому приведенные в предлагаемом курсе решения можно рассматривать как некоторые частные или возможные варианты, опробированные на реальных задачах.
Очень важным моментом является самостоятельная работа учащихся вне аудитории. Основная задача преподавателя, помимо объяснения теоретического материала и консультаций, заключается в том, что он определяет для каждого учащегося тот перечень задач и работ по созданию электронных компонент, программированию и механике, которые учащиеся выполняют самостоятельно, дома.
Курс рассчитан на 12 занятий и предназначен для школьников старших классов и студентов.
Мир спортивной робототехники очень широк и многообразен. Это и такие «серьезные» соревнования, как робофутбол, и такие «научные», как соревнования Фестиваля мобильных роботов, и Евробот, и многие, многие другие. Здесь же мы будем говорить о соревнованиях мобильных минироботов, центральным событием которых является Турнир Политехнического музея.
Основной особенностью соревнований мобильных минироботов является то, что им не требуется дорогой и сложной инфраструктуры. Полигон зачатую представляет собой нарисованную на листе ватмана или баннерной ткани линию, а габариты минироботов таковы, что для их сборки и отладки достаточно одного стола. Кроме того, и элементная, и конструктивная база, и регламенты обычно таковы, что они допускают очень широкий выбор самых простых и доступных средств для создания минироботов. При этом в некоторых видах состязаний основной упор делается на программную начинку роботов, на то, что преимущество будет у более «умного», оснащенного эффективными датчиками робота. В других же видах большее значение имеют конструктивные характеристики роботов, их динамика.
В этом многообразии видится большая притягательность состязаний мобильных минироботов как для начинающих робототехников, так и специалистов.
Большое количество информации о регламентах состязаний мобильных минироботов приведено на сайте MyRobot.ru. Приведем анонсы некоторых из них. Эти краткие описания позволят с самого начала определить, что потребуется роботу (и его управляющей программе) для их успешного решения.
Это – классическое состязание. За минимальное время робот, следуя черной линии, должен добраться от места старта до места финиша. На прохождение дистанции дается максимум 5 минут. Если робот потеряет линию и/или срежет траекторию движения, он будет дисквалифицирован.
Робот должен пройти от старта до финиша, объехав все банки-препятствия. За необъезд банки или ее сбивание насчитываются штрафные очки.
Используя линию разметки или ориентируясь по стенкам лабиринта, робот должен добраться от старта до финиша за минимальное время.
За минимальное время робот, не выходя за пределы круга, очерчивающего ринг, должен вытолкнуть расположенные в нем кегли. На очистку ринга от кеглей дается максимум 3 минуты. Если робот полностью выйдет за линию круга более чем на 5 секунд, попытка не засчитывается.
Правила соревнования «Кегельринг КВАДРО» базируются на регламенте для соревнований Кегельринг. Здесь робот также должен вытолкнуть банки за пределы ринга, но число банок сокращено до 4-х. Кроме того, существует запрет для робота на полное покидание ринга. Если робот никакой своей частью не находится над белым кругом ринга, ему засчитывается поражение.
Соревнование Кегельринг КВАДРО дает больше преимуществ роботам, способным «видеть» кегли.
Задача состоит в выталкивании противника за пределы площадки. Участники не должны покидать пределы ринга. Поединок состоит из 3-х раундов.
Напомним, что описание этих и других регламентов приведено на сайте http://myrobot.ru/. Далее мы рассмотрим некоторые вопросы, связанные с принципами создания роботов, решающих эти и аналогичные задачи.
Итак, в рамках настоящего курса предстоит изготовить робота, решающего реальные задачи из области спортивной робототехники. Для создания такого робота предстоит:
· Изучить регламенты соревнований мобильных минироботов.
· Определить номенклатуру датчиков и исполнительных механизмов.
· Определить требования к ходовой части и системе питания.
· Изучить вопросы, связанные с реализацией, принципами работы и особенностями использования некоторых видов датчиков.
· Освоить управление исполнительными механизмами на основе ШИМ.
· Ознакомиться с использованием АЦП, научиться работать с осциллографом.
· Изготовить контроллер робота, датчики, ходовую часть.
· Написать управляющую программу.
Определение основных требований к конструкции создаваемого робота.
В качестве контроллера робота мы будем использовать уже знакомую схему, построенную на основе микроЭВМ ATMega8 и имеющую в своем составе микросхему драйвера двигателей L293D.
Эту схему, в зависимости от решаемых задач, необходимо будет дополнять различными датчиками и компонентами.
Рис.2.1. Основная схема контроллера робота
Разумеется, использование этой схемы демонстрирует своеобразную преемственность курса, некий универсализм подходов к построению роботов подобного класса, хотя, следует заметить, что универсализм - далеко не однозначное качество. Чаще всего наиболее эффективными являются не общие, универсальные системы, а системы специализированные, предназначенные для решения вполне определенных задач. Ибо, как известно, «универсальный инструмент - это такой инструмент, который одинаково плохо служит для решения широкого круга задач».
После создания базовой платы контроллера следует подумать о размещении массы вспомогательных узлов - тумблеров, системы питания, различного рода дополнительных схем и т.п. Иногда, если таких узлов немного, их можно разместить и на самой плате контроллера (рис.2.2,б), иногда эти узлы целесообразнее расположить вне основной платы.
а) б)
Рис.2.2. Внешний вид
контроллера на основе микроЭВМ ATMega8
а) - плата контроллера
б) плата, на которой размещены дополнительные узлы: тумблер питания, эмиттерный повторитель, кнопочный переключатель
Прежде, чем перейти к рассмотрению прочих систем робота, хотелось бы сделать небольшое замечание по поводу исполнительных механизмов. Управление дополнительными механизмами робота заключается в том, что микроконтроллер выдает некий управляющий сигнал, который обычно должен быть усилен. Исключением являются, пожалуй, лишь индикаторные диоды. Большинство же остальных возможных потребителей вряд ли удовлетворятся такой мощностью сигнала.
В том случае, когда требуемый потребителю ток будет не более нескольких сот миллиампер, вполне можно обойтись транзисторным ключом. Например, на основе транзистора КТ3102. Для более серьезного потребителя могут потребоваться ключи на транзисторе КТ829 и мощнее.
На рис. 2.3. приведена схема маломощного ключа, достаточная, однако, для управления «пищалкой», гирляндой ИК-диодов для маяка и проч. При желании вместо КТ3102 можно поставить и КТ829, тогда в качестве потребителя сможет использоваться и электродвигатель.
Рис. 2.4. Транзисторный ключ
Даже в случае совсем маломощных нагрузок все равно рекомендуется использовать ключ. Ключ хорош тем, что в случае чего из строя выйдет лишь транзистор, а не порт микроконтроллера.
Пищалка. Очень полезным устройством робота является «пищалка». Пищалка служит для звуковой индикации. Одним из простых вариантов такой пищалки является интегральное устройство типа HCM1206X JL R81. Оно недорогое, весьма компактное и обладает очень хорошо слышным звучанием. Устройство представляет собой цилиндр с двумя выводами питания (5В). Внутри находится генератор и капсуль. При подаче напряжения оно начинает издавать высокий и достаточно противный звук. Для подключения такой пищалки необходим маломощный транзисторный ключ.
Изготовление основной платы контроллера робота.
Очень важным является вопрос организации питания робота. От того, насколько грамотно создана эта система зависит не только продолжительность непрерывной работы робота, но и его - робота - динамические и конструктивные характеристики.
Однако прежде, чем начать создавать систему питания, следует определиться с ее требуемыми характеристиками - габаритами и потребляемой роботом мощностью.
Как уже известно, на микроЭВМ нужно подавать постоянное напряжение около 5 вольт. На самом деле, важнее не превышать это напряжение, т.к. большинство микроконтроллеров могут работать с напряжением питания и ниже этих 5 вольт, где-то от 3 и выше. Микроконтроллеру важнее отсутствие помех по питанию - различного рода паразитных импульсов.
В простейшем случае для получения стабильного постоянного напряжения в 5В можно использовать интегральную микросхему – стабилизатор напряжения типа КР142ЕН5.
На вход стабилизатора подается напряжение от 7 до 12В. Но, к сожалению, этот стабилизатор сильно греется, что чревато не только необходимостью установки радиатора, но и тем, что слишком много энергии уходит именно в бесполезное тепло, сильно ухудшая энергетические характеристики системы питания. Кроме того, мощность этого стабилизатора крайне мала - в лучшем случае мы сможем поиметь с него не более 500mA.
Если нам нужен не слишком большой ток, то можно использовать и маломощные интегральные стабилизаторы. Например, серии LP2950CN. Скажем, стабилизатор LP2950CN-5.0 позволит получить стабильное напряжение 5В, а LP2950CN-3.3 – 3.3 В. Выходной ток у них ограничен 100 мА, зато они достаточно компактны и им не нужен радиатор. Ниже приведена цоколевка стабилизатора LP2950.
Рис.2.2. Стабилизатор LP2950
Вообще же следует помнить, что КПД у подобного рода устройств крайне мал – очень много энергии расходуется впустую, в тепло прежде всего.
Если нам необходимо стабилизировать напряжение в широком диапазоне, да к тому же работать с большими токами, то вместо использования КР142 или LP2950 придется собирать более сложную схему - импульсный стабилизатор питания. Ниже приведена схема стабилизатора питания на 2 канала - регулируемый канал (от 1 до 9В) с пропускной способностью до 3А, построенный на микросхеме LM2576S-ADJ и канал на 5В на микросхеме L7805DC (некий улучшенный аналог КР142).
Рис.2.3. Схема импульсного стабилизатора питания
Кроме того, на этой же схеме есть вход для регулировки уровня выходного напряжения (X2), а также схема индикации недостаточного уровня заряда аккумулятора (выход X5).
Схема достаточно сложна по сравнению с незамысловатым вариантом с КР142, однако усилия, затраченные на ее создание, с лихвой окупятся в процессе эксплуатации.
Рис.2.4. Внешний вид импульсного стабилизатора питания
Иногда можно обойтись и вовсе без стабилизатора питания. Бывает достаточно подключения батареи в 4.5 В (по крайней мере - до 5В). Контроллер работать, конечно, будет и останется лишь защититься от помех. Но проблема в том, что в ходе эксплуатации, по мере того, как батарея будет «садиться», начнут ухудшаться ходовые свойства робота - двигатели будут вращаться все медленнее и робот будет вести себя все менее предсказуемо.
Бывают ситуации, в которых целесообразно использовать комбинированную систему питания. Например, когда необходимо высокое (больше 5В) напряжение питания для двигателей робота, то можно взять батарею необходимого номинала и запитывать от нее исполнительную часть. А то стабилизированное напряжение, которое требуется микроконтроллеру (5В) получать из дополнительной цепи питания. Причем, поскольку обычно потребляемый микроконтроллером ток крайне невелик, то стабилизировать это напряжение можно с помощью обычного стабилитрона.
Рис.2.5. Комбинированное питание
Определение требуемой системы питания и ее изготовление.
Изготовление ходовой части робота является одним из наиболее сложных и непредсказуемых этапов при создании робота. Зачастую проще изготовить и отладить электронные и силовые компоненты устройства, нежели найти удачное решение для корпуса, двигателей и движителей и проч.
Разумеется, можно попробовать обойтись и той простейшей конструкцией, которая состоит из платформы с двумя двигателями:
Рис.4.1. Простейшая ходовая
Однако, очевидно, что с такой ходовой частью решать более сложные, нежели езда по линии, задачи крайне проблематично.
Мотор-редукторы. Вполне приемлемым вариантом является использование готовых двигателей, интегрированных с редуктором (мотор-редукторы). Например, достаточно доступным является вариант использования мотор-редуктора IE-BO2-48M. Это электродвигатель постоянного тока с редуктором 1:48.
Рис.4.2. Мотор-редуктор IE-BO2
Для создания маленьких роботов его вполне достаточно. По нагрузкой он потребляет около 200 mA при напряжении питания от 3 до 6В, а его вращающего момента и скорости хватает для реализации устойчивого управления динамичным роботом.
На рис.4.3. показано шасси робота с установленными редукторами.
Рис.4.3. Шасси робота с мотор-редуктором IE-BO2
Игрушки. Некой альтернативой являются мотор-редукторы, извлеченные из детских игрушек. Либо ходовые части игрушек, взятые целиком или частично. На самом деле, поиск подходящей игрушки для последующего использования ее, как основы робота - крайне непростое дело. Трудность состоит в том, что искомая игрушка должна:
а) иметь надежную ходовую часть (чтоб не рассыпаться на соревнованиях в самый ответственный момент);
б) двигатели должны быть экономичными;
в) ходовая часть должна отвечать тем задачам, для которых строится робот.
Последнее означает, что, например, замечательная гусеничная платформа вряд ли подойдет для скоростных состязаний, а элегантная колесная - для робосумо.
Ниже приведены примеры минироботов, для изготовления которых использовались шасси от отечественных игрушечных вездеходов.
Рис. 4.4. Универсальный робот RK10DS («Кегельринг», «Линия»)
а) б)
Рис. 4.5. а) Робот
«Охотник» («Рободуэль»
б) Робот «АМУР» («Линия», «Биатлон», «Рободуэль»)
Перевертыши. Говорят также, что неплохих результатов можно добиться при использовании т.н. «машинок-перевертышей», у которых иногда бывают неплохие редукторы и колеса с хорошим сцеплением. Для изготовления робота потребуются две такие машинки, т.к. они оснащены лишь одним двигателем.
Рулевые- и серво- машинки. И еще один вариант заключается в использовании рулевых машинок (или сервомашинок), используемых в радиоуправляемых моделях. Это – достаточно дорогие устройства, включающие в себя мотор-редуктор и свою систему управления. Для управления подобными сервоприводами необходимо использовать т.н. ШИМ-сигнал, о котором мы поговорим позже. А пока следует отметить, что рулевые машинки отрабатывают лишь угол поворота, а для того, чтоб реализовать непрерывное вращение необходимо их несколько модифицировать (отключить резистор обратной связи). Эти машинки обладают весьма большим моментом, однако крайне медленны при работе в режиме непрерывного вращения (хотя угол поворота в штатном режиме отрабатывают быстро).
В том случае, если не удается раздобыть мотор-редукторы или готовую ходовую, остается использовать уже знакомые безредукторные системы, в которых робот приводится в движение осями двигателей. Вариантов здесь может быть масса. Начиная с простейших двухмоторных ходовых с пластиковыми платформами и заканчивая многомоторными (и много потребляющими) системами. Неплохие с точки зрения динамики (скорости) роботы получаются при использовании различного рода металлических контрукторов, а также готовых корпусов (мыльницы, старые мыши и проч.). На рис. 4.6. и 4.7 приведены примеры роботов с безредукторными ходовыми, использующими детали металлического конструктора.
Рис. 4.6. Двухмоторный робот с опорным колесом
Рис. 4.7. Четырехмоторный робот с контроллером
Определение требований, характеристик и конструкции ходовой части. Создание ходовой части.
Как фотодатчики, так и датчики полосы могут быть построены по такому же принципу, что и в предыдущем курсе - на основе фототранзисторов (фотодиодов и фоторезисторов), подключаемых ко входу микроконтроллера. Подключение датчиков в случае подтянутых к единице входам изображено на рис.5.1,а, а если вход микроконтроллера подтянут к нулю, то см. рис. 5.1,б.
Рис.5.1. Подключение датчиков к подтянутому к единице (а) и к нулю (б) входу
Однако в этом курсе, когда мы имеем дело с более сложными, серьезными задачами, требующими от робота большей стабильности и надежности, рекомендуется все-таки использовать не прямое подключение фототранзистора к микроконтроллеру, а использование эмиттерного повторителя, выход которого подключается к АЦП микроконтроллера. О работе с АЦП мы будем говорить ниже.
Рис.5.2. Схема эмиттерного повторителя
Самым простым видом датчиков препятствия являются контактные датчики. Изготавливаться они могут из кнопочных переключателей с дополнительной прижимной пластиной, из металлического штыря, касающегося контактной пластины или кольца и проч. Подобного рода датчики весьма просты и надежны и могут применяться для обнаружения препятствия в непосредственной близости от робота.
К недостаткам контактных датчиков можно отнести, пожалуй, их слишком малую область действия.
Подключение контактного датчика в случае подтянутого к единице входу изображено на рис.5.3 и достаточно очевидно. При замыкании контакта на входе микроконтроллера будет «0», а иначе - «1» (нога «в воздухе»).
Рис.5.3. Подключение контактного датчика к подтянутому к единице входу
Датчики, использующие инфракрасное излучение, позволяют обнаруживать препятствия на значительном расстоянии. Например, ИК-датчик препятствий GP2D120 производства фирмы SHARP обнаруживает препятствия на расстоянии до 30-40 см.
Правда, у ИК-датчиков есть свои особенности, которые необходимо учитывать. Во-первых, они дороже контактных датчиков. Во-вторых, обычно у них достаточно узкая диаграмма направленности. В-третьих, они бывают чувствительны как к помехам, так и к материалу, из которого изготовлено препятствие, а также иногда к цвету препятствия.
Рис. 5.4. ИК-датчик препятствий GP2D120 производства фирмы SHARP
При создании робота интересно бывает использовать и иные, «нештатные» датчики. О двух таких датчиках – сенсорном датчике и датчике температуры – мы поговорим ниже.
Сенсорные датчики определяют приближение или прикосновение любого предмета к датчику, причем они умеют делать это даже через толстый слой стекла, пластика, камня, керамики и дерева.
Одним из таких датчиков является сенсорный датчик QT100. Этот датчик представляет собой микросхему, реализующую множество таких важных функций, как автоматическая самокалибровка, устранение дрейфа и фильтрация шумов. Датчик обладает хорошей устойчивостью к влажности. Выход этой микросхемы представляет собой логическую единицу, что бывает достаточно удобно для в эксплуатации.
Для использования этого датчика требуется собрать крайне простую схему, приведенную на рис. 5.5.
Рис.5.5. Схема включения датчика QT100
Здесь важно наличие обвязки - резистора на 10К, конденсатора на 10нФ и сенсорной площадки размером примерно 10x10мм.
На рис.5.6. приведено изображение этого датчика «вживую». Обратите внимание на индикаторный (отладочный) диод на рис.5.6.,б.
Рис.5.6. Датчик QT100
на плате. а) крупный план;
б) индикаторный диод для проверки датчика
Примечание. При использовании этого датчика крайне рекомендуется использовать RC-цепочку. Без этой цепочки (фильтра) датчик будет работать неустойчиво. Подробнее об этой цепочке будет рассказано в следующем параграфе.
Интересного поведения можно добиться, оснастив робота датчиком температуры. Их существует великое множество – от простейших терморезисторов до интегральных схем, оснащенных массой полезных компонент.
Одним из таких интегральных датчиков температуры является датчик AD22100KT(Z). При температуре –50°C на выходе датчика будет напряжение +0.25 В, а при to +150°C напряжение будет составлять +4.75 В (при напряжении питания датчика 5В).
Внешний вид датчика и его цоколевка приведены на рис. 5.7.
Рис.5.7. Датчик температуры AD22100KT
Этот датчик очень прост в использовании и для работы с ним требуется АЦП. На рис.5.8. приведена схема включения этого датчика.
Рис.5.8. Схема включения датчика
Обратите внимание на фильтр - RC-цепочку. Резистор - от 100 Ом до 1 кОм, конденсатор - от 10нФ до 0.1мкФ. RC фильтр нужен для устранения помех и т.н. импульсов активности (15мкс). Без фильтра использовать подобного рода датчики весьма проблематично.
Имея этот датчик, а также умея работать с АЦП и обладая средствами вывода информации (например, на терминал по интерфейсу RS232), вполне можно создать цифровой термометр или что-нибудь аналогично полезное.
Создание схемы эмиттерного повторителя. Определение требований к составу и параметрам системы датчиков. Реализация датчиков.
Одним из весьма распространенных методов управления является использование т.н. широтно-импульсной модуляции (ШИМ). Этот метод используется для управления различного рода сервоприводами, такими, как рулевые машинки, отрабатывающие заданный угол поворота, сервомашинки с регулируемой скоростью вращения и проч. Часто такие сервоприводы используются в радиоуправляемых моделях или в андроидных роботах.
а) б) в)
Рис.6.1. Рулевые машинки (а), андроидный робот (б) и нога робота крупным планом (в)
Управляющий сигнал представляет собой последовательность прямоугольных импульсов с амплитудой 3-5 В и длительностью от 0.9 до 2.1 мс. Импульсы следуют с частотой 50 Гц (интервал - 20 мс) При этом длительность импульса и определяет положение (скорость) исполнительного механизма. При ширине импульса 1 мс шток рулевой машинки разворачивается в крайнее левое положение; при ширине импульса в 1.5 мс шток занимает центральное положение, а при ширине в 2 мс - крайнее правое положение. Аналогично на ширину импульса реагирует и сервомашинка, только аналогами крайних положений является скорость вращения (против и по часовой стрелке), а при ширине импульса 1.5мс двигатель останавливается.
Рис.6.2. Управляющие импульсы
Обычно такие сервоприводы питаются от постоянного напряжения в пределах от 4.8 до 6 В. Чаще всего в них используется универсальный трехпроводной разъем, содержащий три контакта: черный - общий провод или земля (GND), красный - напряжение питания (+Vcc), желтый (или другого цвета) - управляющий сигнал.
Программная реализация ШИМ. Для управления подобного рода устройствами контроллер должен уметь генерировать импульсы необходимой частоты и ширины. Для этого можно использовать библиотечные функции, реализующие т.н. программный ШИМ.
Для работы с программным ШИМом используются следующие глобальные переменные и функции:
Переменные:
int ShimRegime - флаг включения режима программного ШИМа.
int SHIM_NCH - количество ШИМ-каналов (от 0 до 6).
Функции:
void ShimReset() - инициализация ШИМ-каналов, т.е. установка сигналов в «центральное» положение 1.5 мс.
void ShimSetAng(int channel, int angle) - установка в ШИМ-канале номер channel значения ширины импульса, соответствующего углу поворота angle. Значение номера канала channel - от 0 до SHIM_NCH-1, angle - угол поворота (от -60 до +60).
Библиотечные функции поддерживают работу до 6 каналов программного ШИМа, т.е может быть реализована работа 6 ШИМ-устройств. При этом каналы ШИМ обозначаются так: канал 0 - вывод Out1 (D.2), канал 1 - вывод Out2 (D.3), ..., канал 5 - Out-6 (D.7), см. рис.6.3.
|
|
|
|
|
|
|
|
|
|
|
1 |
PC6 (RESET) |
ATMega8 |
28 |
ADC-2 |
||
|
|
2 |
PD0 (RXD) |
PC4 (ADC4) |
27 |
ADC-1 |
|
|
|
|
3 |
PD1 (TXD) |
PC3 |
26 |
In-6 |
|
|
|
Out-1 |
4 |
PD2 |
PC2 |
25 |
In-5 |
|
|
|
Out-2 |
5 |
PD3 |
PC1 |
24 |
In-4 |
|
|
|
Out-3 |
6 |
PD4 |
PC0 |
23 |
In-3 |
|
|
|
|
7 |
VCC |
AGND |
22 |
|
|
|
|
|
8 |
GND |
AREF |
21 |
|
|
|
|
|
9 |
PB6 |
AVCC |
20 |
|
|
|
|
|
10 |
PB7 |
PB5 (SCK) |
19 |
|
|
|
MR.2 |
Out-4 |
11 |
PD5 |
PB4 (MISO) |
18 |
|
|
|
MR.1 |
Out-5 |
12 |
PD6 |
PB3 (MOSI) |
17 |
|
|
|
ML.2 |
Out-6 |
13 |
PD7 |
PB2 |
16 |
In-2 |
|
|
ML.1 |
Out-7 |
14 |
PB0 |
PB1 |
15 |
In-1 |
|
|
|
|
|
|
|
|
|
|
|
Рис.6.3. Выводы контроллера
Пример программы, использующей программный ШИМ:
#include "m8inc.h"
void main(void)
{
InitCM8();
ShimRegime = 1; // Включение ШИМ-режима
SHIM_NCH = 2; // Количество ШИМ-каналов = 2
ShimReset(); // Инициализация ШИМ-каналов
ShimSetAng(0, -60); //Канал 0 (D.2): минимальная ширина импульса (1 мс)
ShimSetAng(1, 60); //Канал 1 (D.3): максимальная ширина импульса (2 мс)
}
Режим PWM. Программная реализация ШИМ-управления имеет серьезный недостаток. Дело в том, что рассмотренные выше библиотечные функции используют задержки, реализованные функциями delay. Это чревато тем, что, во-первых, задержки делают программу неуправляемой. Стоит использовать в программе функцию delay, как тут же нарушатся значения временных интервалов, определяющих длительность и скважность ШИМ-импульсов. Кроме того, если потребуется реализовать «настоящий» или «полный» ШИМ, при котором скважность и длительность импульсов должны варьироваться в произвольных пределах, то в этом случае программа вовсе перестанет делать что-либо еще, кроме реализации задержек. Речь идет о том, что надо уметь реализовывать ШИМ-управление более «умно», не «в лоб».
Для этого можно использовать реализованные в большинстве контроллеров режимы аппаратной поддержки ШИМ (или PWM).
Например, выводы PORB.1 и PORTB.2 микроконтроллера ATMega8 могут быть использованы для генерации ШИМ-сигналов. Для переопределения этих выводов для работы на вывод и инициализации отвечающего за этот режим таймера Timer 1 используется функция InitPWM, а для установки параметров ШИМ-сигнала на выводах B.1 и B.2 можно использовать функцию SetPWM. Эти функции позволяют работать с импульсами частотой 50 Гц.
void InitPWM(void) - Инициализация аппаратного ШИМа (PWM)
void SetPWM(int A, int B) - Установить значение ШИМ для OC1A и OC1B (PORTB.1 и PORTB.2). Значения A и B указываются в процентах (от 0 до 100).
Пример программы, использующей аппаратный ШИМ:
// Chip type : ATmega8
// Clock frequency : 7,372800 MHz
#include <io.h>
#include "m8inc.h"
void main(void)
{
InitCM8();//инициализация контроллера
ShimRegime = 0; // Флаг режима ШИМ. Программный ШИМ надо отключить
// Инициализация аппаратного ШИМа (PWM): PORTB.1 и PORTB.2
InitPWM();
SetPWM(50, 50); // Скважность импульсов на обоих каналах – 50%
…
}
При использовании режима аппаратного ШИМа схема контроллера должна быть несколько видоизменена. В ней входы Enable1 и Enable2 драйвера двигателей L293 должны быть заведены на выводы контроллера B.1 и B.2. Именно эти входы разрешения и будут определять скорость вращения двигателей (до этого на них постоянно подавался высокий уровень напряжения).
Написание программы, реализующей управление ШИМ-устройствами. Проведение экспериментов с сервоприводами.
Часто бывает важно не только знать наличие или отсутствие сигнала на входе контроллера, но и уметь определять значение величины сигнала от датчика. Датчик, например, может иметь на выходе напряжение, пропорциональное значению измеряемой им величины. Тот же ИК-датчик препятствий GP2D120 выдает напряжение, величина которого зависит от расстояния до препятствия. То же наблюдается и при использовании датчика температуры AD22100KT. Эти датчики имеют на выходе т.н. аналоговый сигнал, который необходимо уметь измерять. В отличие от них такие датчики, как контактный или сенсорный, на выходе выдают либо логический ноль, либо логическую единицу (напряжение, большее 2.5В). Это - датчики с т.н. логическим выходом.
Для измерения физических величин, таких, как напряжение, ток, частота, время и т.п. существуют специальные схемы, называемые аналого-цифровыми преобразователями или АЦП. Задача АЦП состоит в том, чтобы измерить непрерывную физическую величину и преобразовать результаты измерений в цифровой вид, т.е. число. С этим числом - значением входного сигнала - уже можно работать, т.е. использовать в вычислениях, реализуя те или иные алгоритмы.
Микроконтроллер ATMega8 имеет «на борту» 6 встроенных АЦП. Эти АЦП служат для измерения напряжения. Причем в качестве входов АЦП используются входы порта C: C.0, C.1, C.2, C.3, C.4, C.5. Уже говорилось, что порты микроконтроллера могут быть настроены и как вход, и как выход. Для удобства на плате контроллера выделены входы C.4 и C.5. Они сгруппированы отдельно, а функция инициализации контроллера InitCM8() содержит код, определяющий, что C.4 и C.5 настроены именно как входы АЦП.
Примечание. При желании можно и все остальные входы порта C настроить как входы АЦП. Для этого достаточно вставить следующие строки в основную программу:
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
Для работы с АЦП можно использовать две библиотечные функции - InitADC и ReadADC.
Функция InitADC. Инициализация АЦП. Ее прототип описывается так:
float InitADC(unsigned char rtype)
Параметр rtype определяет режим работы АЦП, точнее - верхнее значение измеряемого напряжения. Значение rtype - это ADCE5 (измерение до 5В) или ADCI25(измерение до 2.5В).
Функция ReadADC. Считывание (измерение) значения сигнала. Ее прототип описывается так:
float ReadADC(int adcnum)
Параметр adcnum - это номер канала АЦП (от 0 до 5). Функция возвращает действительное число - значение измеренного напряжения. Измеряемое напряжение должно быть от 0 до 5 В.
Обозначение каналов и их соответствие портам микроконтроллера приведено в таблице:
Номер АЦП (adcnum) |
Порт |
Обозначение на плате |
0 |
In-3 |
|
1 |
C.1 |
In-4 |
2 |
C.2 |
In-5 |
3 |
C.3 |
In-6 |
4 |
C.4 |
ADC-1 (дополнит.) |
5 |
C5 |
ADC-2(дополнит.) |
При работе в штатном режиме можно воспользоваться макросами для номеров выделенных АЦП - ADC1 и ADC2. Определения этих макросов:
#define ADC1 4
#define ADC2 5
Приведем далее пример программы, использующей АЦП. Прогамма в цикле измеряет величину входного напряжения и выводит его значение на экран (на терминал по интерфейсу RS232):
// Проверка АЦП M8K
#include "m8inc.h"
void main(void)
{
float u1, u2;
InitCM8();
InitADC(ADCE5); // Инициализация АЦП. Будем измерять до 5В
printf("ADC-1 ADC-2\r\n");
while(1)
{
u1 = ReadADC(ADC1); // Измеряем напряжение на входе C.4.
u2 = ReadADC(ADC2); // Измеряем напряжение на входе C.5.
printf("%5.2f %5.2f\r",u1, u2);
delay_ms(100); // Задержка
}
}
Написание программы, реализующей измерение сигнала от фотодатчика с помощью АЦП. Проведение экспериментов с сервоприводами.
Задачи, решаемые роботом, становятся слишком сложными для того, чтобы обойтись без средств отладки при написании управляющих программ. Одним из наиболее эффективных методов отладки является использование отладочной печати, а также управление роботом дистанционно, например, с помощью клавиатуры удаленной ЭВМ.
Связь удаленной ЭВМ с контроллером робота может быть реализована на основе последовательного интерфейса RS232. Для его реализации на контроллере устанавливается микросхема MAX202, представляющая драйвер последовательного порта микроконтроллера (UART). Именно этот драйвер позволяет использовать трехпроводной кабель, подключаемый к контроллеру и последовательному порту компьютера (COM-порт).
Организация связи требует для последовательного порта контроллера UART двух сигналов: RXD (чтение) и TXD (передача). Третий контакт - это земля GND. С аппаратной точки зрения изготавливается трехпроводной кабель, на одной стороне которого - вилка подключения к контроллеру, на другой - разъем DB9, идущий на соответствующий разъем последовательного порта компьютера.
Вилка подключения RS232:
Тип: OWF-3: Контакты разъема DB-9: (3), (2), (5)
Разъем DB-9 |
Сигнал |
Вилка OWF-3 |
2 |
RXD |
1 |
3 |
TXD |
2 |
5 |
GND |
3 |
9 |
+5V (опционально) |
|
Схематично это выглядит так:
Ввод-вывод информации осуществляется с помощью любой терминальной программы (стандартный HyperTerminal или терминал в среде CodeVision). При этом устанавливаются следующие параметры связи: скорость - 9600, 8 бит данных, 1 стоповый бит, без контроля четности.
С программной точки зрения для операций ввода-вывода используются стандартные библиотечные функции printf(), putc(), getchar() и т.п.
Написание программы, реализующей функции ввода-вывода по интерфейсу RS232.
Часто возникают задачи, связанные с определением некоторой цели - маяка. Это может быть просто обнаружение маяка-излучателя, установленного на роботе-сопернике. И тогда мы получаем возможность реализации групповых состязаний. Или это может быть обнаружение системы маяков для задачи ориентации робота в пространстве. А если и маяк-излучатель, и приемник установлены на роботе, то мы можем получить датчик препятствий, регистрирующий собственный отраженный сигнал (это то же самое, что делает рассмотренный выше ИК-датчик препятствий GP2D120).
Задача создания системы, регистрирующей некоторое излучение весьма сложна. Мы не будем говорить о системах, использующие сигналы радиодиапазона или ультразвук. С практической точки зрения для наших задач гораздо лучше подходят приемники и излучатели ИК-сигналов.
Итак, необходимо создать систему, которая могла бы определять наличие ИК-сигнала на значительном расстоянии и при этом такую, чтоб она была устойчива к помехам (именно помехи в виде внешней засветки не позволяют, например, эффективно использовать видимый спектр). Начнем с приемника.
Приемник. В качестве приемного элемента проще всего использовать микросхему интегрального фотоприемника типа TSOP17, внешний вид которого и его схема приведены на рис.9.1.
Рис.9.1. Элемент TSOP. Внешний вид и его структурная схема
Суть этого устройства состоит в том, что этот фотоприемник предназначен для приема сложного сигнала, представляющего собой короткие пакеты (пачки) импульсов с определенной рабочей частотой - от 30 кГц до 56 кГц. Пакеты импульсов и паузы между ними необходимы для того, чтоб система смогла отфильтровать полезный сигнал и свести неизбежные при приеме помехи к минимуму.
Существует целы ряд таких элементов. Обозначаются они как TSOP17xx, где последние две цифры и обозначают рабочую частоту. Например, TSOP1736 - это фотоприемник с рабочей частотой 36 кГц, а TSOP1756 рассчитан на частоту 56 кГц.
Излучатель. Итак, чтобы избежать помех необходимо уметь генерировать сигналы сложной структуры. Излучающим элементом может быть любой ИК-диод, длина волны которого находится в районе 950 нм. На этот диод надо подавать пачки импульсов. Для увеличения мощности можно использовать транзисторный ключ.
Ниже представлена диаграмма излучателя и того сигнала, который получается на выходе элемента TSOP. Обратите внимание, что активный уровень выходного сигнала низкий: когда на вход приемника поступает пачка импульсов, на выходе получается низкий уровень. Второй особенностью, о которой не следует забывать, является то, что на выходе приемника будет не непрерывный сигнал, а огибающая пачек - импульсы. Их придется преобразовывать к постоянному уровню. Для этого можно использовать интегратор - простой RC-фильтр.
Рис.9.2. Входной (от излучателя) и соответствующий выходной сигналы (приемник)
Генерировать пачки можно программно. Микроконтроллер вполне может справиться с этой задачей. А можно использовать специальные схемы - генераторы. Ниже рассмотрим пример системы, использующей элемент TSOP и генератор, собранный на основе микросхемы NE556. Это - схема из набора NK083 - «Инфракрасный барьер» от «Мастер Кит» (http://www.masterkit.ru/).
На рис. 9.3. представлена схема приемника. Фильтр образован элементами R1, D2, C3. Реле K1, транзистор VT1, а также элементы D3, R3, HL1 можно из схемы исключить, оставив лишь TSOP, фильтр и стабилизатор на элементах R2, C1, D1 и C2.
Рис.9.3. Схема приемника
Схема передатчика приведена на рис.9.4. Он построен на сдвоенном интегральном таймере NE556.
Рис.9.4. Схема передатчика (излучателя)
Описание принципа работы приемника и передатчика можно найти на сайте производителя. Там же можно найти информацию о различных способах применения и особенностях работы этого устройства.
Здесь лишь хотелось бы отметить, что на основе приведенных схем вполне несложно собрать как отдельные маяки, так и датчики препятствий (маяк и приемник вместе, причем приемник должен ловить отраженный сигнал). Если говорить о внешних маяках, то следует учесть, что излучать маяк должен равномерно по всем направлениям (иметь круговую диаграмму направленности). Для этого можно взять 2 пары трех последовательно соединенных диодов. Эти пары включаются параллельно. При этом необходимо использовать транзисторный ключ.
Рис.9.5. Излучающие диоды передатчика
Разумеется, генерировать ИК-сигнал можно и с помощью микроконтроллера (вовсе не обязательно собирать отдельную схему генератора). Иногда это получается даже удобнее – собрать на «стандартном» микроконтроллере и излучатель (генератор), и приемник. В этом случае мы сможем получить даже более гибкую систему, которая сможет в дальнейшем дорабатываться для реализации более сложных систем. Например, речь может идти о реализации помехозащищенных каналов, использующих различного рода ортогональные коды (М-последовательности, коды Баркера и проч.).
Примечание. При создании и отладке подобного рода систем очень полезным прибором оказывается осциллограф.
Создание схемы ИК-датчика на основе TSOP. Создание схемы передатчика. Проведение экспериментов.
Создание спортивного робота является, прежде всего, творческой задачей, имеющей, в зависимости от фантазии и степени подготовленности автора, множество решений. Кроме того, регламенты соревнований мобильных минироботов очень разнообразны. Исходя из этого, здесь возможно ограничиться лишь некоторыми рекомендациями самого общего плана.
Внимательное изучение регламентов. В регламентах бывает много подводных камней и тонких моментов. При работе над роботом регламенты должны быть всегда под рукой. Работа над проектом начинается именно с обсуждения регламентов.
Средства отладки. При создании робота основными средствами отладки являются световая (светодиоды) и звуковая индикация (пищалка типа HCM1206X JL R81 с транзисторным ключом) и интерфейс RS232. Усилия, затраченные на создание вывода диагностики состояния робота, с лихвой окупятся. Очень полезно ставить индикацию на датчики, т.к. большинство проблем бывает связано именно с некорректной работой датчиков.
Механизм калибровки. При решении задач, связанных с измерением аналоговых сигналов крайне полезным оказывается механизм калибровки датчиков. Например, при решении задачи определения полосы можно реализовать простейшую процедуру настройки датчиков на темный (линия) и светлый фон. Для этого робот ставится сначала на светлую поверхность (фон) и далее происходит замер освещенности в этом месте (разумеется, с применением АЦП). Затем робот устанавливается датчиками на темную линию и вновь измеряется сигнал от датчиков. Таким образом определяется максимальная и минимальная освещенность для данных условий проведения соревнований. А дальше программа строится таким образом, чтобы учитывать эти измерения при движении. В зависимости от программистской подготовки эту процедуру можно полностью или частично автоматизировать.
Подготовка к соревнованиям. Это, разумеется, множество пробных заездов и раундов с обязательным протоколированием результатов. Причем в условиях, максимально близко к описываемым в регламентах. Главное здесь - не увлечься и вовремя остановиться, чтоб не превращать процесс подготовки в процедуру постоянного улучшения конструкции (последние улучшения и модификации делаются обычно накануне соревнований и до добра не доводят).
Реализация единого комплекса на основе созданных ранее датчиков и исполнительных механизмов. Написание программы. Отладка программы и подготовка к соревнованиям.
Спортивная робототехника
12 занятий.
Продолжительность занятия - 120 минут.
Программа рассчитана на школьников старших классов и студентов.
Одной из наиболее сложных, зрелищных и интересных задач робототехники является создание спортивных роботов, участвующих в различного рода специальных соревнованиях. При этом в мире спортивной молодежной робототехники большой популярностью пользуются соревнования мобильных минироботов. Одни задачи, решаемые в этих состязаниях, являются инвариантными («классическими»), условия других видов меняются год от года, а многие виды состязаний разрабатываются специально к соревнованиям. Все это заставляет робототехников искать всякий раз новые технические решения. В рамках этого курса обучаемым предстоит создать робота, решающего некоторые задачи регламентов соревнований мобильных минироботов. Создание такого робота потребует не только знания материалов предыдущих курсов (основ электроники, микропроцессорной техники и программирования), но и умения работать с инструментом и главное - технической фантазии.
За основу системы управления берется созданный на предыдущем этапе (курс «Знакомство с микроконтроллерами и интегральной схемотехникой») базовый контроллер. В силу его универсальности, учащиеся получают возможность использовать его для решения целого ряда более сложных задач.
Целью этапа является создание многофункционального миниробота, ориентированного на решение некоторых задач из области спортивной робототехники.
Для достижения поставленной цели требуется решить следующие задачи:
В теоретическом плане обучаемому требуется усвоить базовые понятия таких разделов, как:
1. Датчики и аналого-цифровые преобразователи.
2. Широтно-импульсная модуляция.
3. Основы помехозащищенной передачи сигналов и данных
4. Последовательный интерфейс.
В практическом плане обучаемый должен освоить:
1. Конструирование и изготовление датчиков препятствий.
2. Использование сервоприводов с ШИМ-управлением, специфика их программирования.
3. Программирование ввода-вывода на базе интерфейса RS232.
4. Работу с АЦП.
5. Работу с осциллографом.
На этом этапе учащиеся должны освоить работу с более широким ассортиментом датчиков (контактные датчики, датчики препятствий и т.п.) и исполнительных механизмов. Большее внимание уделяется ходовой части робота, механике. Учащиеся должны иметь представление и практические навыки работы с различными типами редукторов и движителей.
Для более гибкого управления роботом необходимо изучить работу с АЦП и освоить принципы управления исполнительными механизмами с помощью широтно-импульсной модуляции (ШИМ). Кроме того, требуется оснастить робота приемниками ИК сигналов и изготовить соответствующие помехозащищенные маяки. Для этого учащиеся должны получить навыки работы с таким оборудованием, как осциллограф, генератор и т.п.
Особо важную роль на этом этапе играет программирование, которому должна уделяться значительная часть времени. Решая более разнообразные и сложные задачи, учащиеся должны ознакомиться с рядом новых конструкций и функций языка Си. Освоение языка Си по-прежнему предполагается «от задачи».
Оснащение робота дополнительными датчиками и создание управляющих программ должно позволить роботу решать целый ряд красивых и зрелищных задач из области спортивной робототехники (движение по простой полосе, поиск источника света, робосумо, кегельринг и т.д.).
Этап заканчивается роботурниром – комплексными соревнованиями роботов по ряду состязаний.
Курс подразумевает активную работу учащегося вне аудитории. «Домашними заданиями» являются те работы по программированию, конструированию и реализации электронных компонент, которые учащиеся выполняют самостоятельно. Аудиторные (занятия с преподавателем) часы отводятся на изучение теоретического материала, консультации, отладку и подготовку к самостоятельной работе. Без этого создание полноценного, серьезного робота невозможно.
№ |
Вид занятия |
Содержание |
Часы |
|
1 |
Введение |
Лек. |
Вводная лекция. Спортивная робототехника. Цели и задачи курса. Соревнования малых мобильных роботов. Регламенты. |
1 |
Практ. |
Определение основных требований к конструкции создаваемого робота. |
|
||
2 |
Контроллер робота |
Лек. |
Схема контроллера, его особенности. Дополнительные элементы, транзисторный ключ и пищалка. |
2 |
Практ. |
Изготовление основной платы контроллера робота |
|
||
3 |
Система питания |
Лек. |
Стабилизаторы напряжения. Микросхема КР142ЕН5. Импульсный стабилизатор. Нестабилизированное и комбинированное питание. |
2 |
Практ. |
Определение требуемой системы питания и ее изготовление. |
|
||
4 |
Ходовая часть |
Лек. |
Особенности ходовой части. Скоростные и маневренные системы. Редукторы и готовые ходовые. Безредукторные системы. |
3 |
Практ. |
Определение требований, характеристик и конструкции ходовой части. Создание ходовой части. |
|
||
5 |
Датчики |
Лек.. |
Фотодатчики и датчики полосы. Датчики препятствий. Контактные и ИК-датчики. Сенсорные датчики. Датчик температуры |
3 |
Практ. |
Создание схемы эмиттерного повторителя. Определение требований к составу и параметрам системы датчиков. Реализация датчиков. |
|
||
6 |
ШИМ |
Лек. |
Понятие широтно-импульсной модуляции. Программная и аппаратная реализация ШИМ. Сервоприводы с ШИМ-управлением. |
3 |
Практ. |
Написание программы, реализующей управление ШИМ-устройствами. Проведение экспериментов с сервоприводами. |
|
||
7 |
Работа с АЦП |
Лек. |
Принципы аналого-йифрового преобразования. Определение расстояния до препятствия. Использование АЦП. Пример программы. |
2 |
Практ. |
Написание программы, реализующей измерение сигнала от фотодатчика с помощью АЦП. Проведение экспериментов с сервоприводами. |
|
||
8 |
Интерфейс RS232 |
Лек. |
Последовательный интерфейс RS232. Программирование ввода-вывода. |
2 |
Практ. |
Написание программы, реализующей функции ввода-вывода по интерфейсу RS232. |
|
||
9 |
Маяки и приемники |
Лек. |
Помехозащищенная передача сигналов и данных. Несущая частота. Модулированные сигналы. ИК-излучатели и приемники. Генератор сигнала для ИК-маяка. ИК-приемник на основе TSOP17 |
4 |
Практ. |
Создание схемы ИК-датчика на основе TSOP. Создание схемы передатчика. Проведение экспериментов. |
|
||
10 |
Работа с регламентами и подготовка к соревнованиям |
Лек. |
Регламенты состязания. Средства отладки. Механизм калибровки. Подготовка к соревнованиям. |
2 |
Практ. |
Реализация единого комплекса на основе созданных ранее датчиков и исполнительных механизмов. Написание программы. Отладка программы и подготовка к соревнованиям. |
|
||
Всего часов |
24 |
Об авторе
Карпов Валерий Эдуардович, доц., к.т.н.
научный руководитель проектов научно-учебной лаборатории
Робототехники и искусственного интеллекта Политехнического музея,
в.н.с. НИИ Информационных технологий.