Построение платформы моделирующей работу роботизированных средств на базе конструктора Lego Mindstorms NXT 2.0 в части управления электродвигателями
А.В. Ескин, В.А. Жмудь, В.Г. Трубин ФГБОУ ВПО НГТУ, Новосибирск, Россия
Аннотация: Рассматривается платформа для моделирования и изучения робототехнических средств на базе сервомоторов и деталей из конструктора Lego Mindstorms NXT 2.0 и отладочной платы STM32 VLDISCO VER Y. 6
Ключевые слова: робототехника, микроконтроллер, программное обеспечение, конструктор Lego Mindstorms NXT 2.0, отладочная плата STM32 VLDISCO VER Y.
ВВЕДЕНИЕ
Проникновение в промышленность роботизированных систем постоянно увеличивается с каждым годом. Особенно остро стоит потребность в тех областях жизнедеятельности, где есть прямая угроза здоровью человека — например, угроза радиоактивного излучения. Так же существует потребность в специалистах, способных разрабатывать эффективные алгоритмы управления для данных систем, и инструментах, которые позволили бы разработанные алгоритмы проверять на практике. Одним из примеров такого инструментария может быть конструктор Lego Mindstorms NXT 2.0, который включает в себя все необходимые элементы робота: механическую часть, электронную и программную [1].
Наряду с очевидными достоинствами конструктора у него имеются и недостатки, к которым можно отнести:
1. Ограниченный и навязанный набор датчиков;
2. Ограниченное количество портов для управления сервомоторами и портов для подключения датчиков, которых не всегда хватает для решения задачи;
3. Навязанная схемотехника микрокомпьютера NXT, мешающее более гибкой настройке устройства.
4. Скрытие от пользователя принципов работы датчиков (сигнал с датчиков передается в
6 Работа выполнена по заданию Министерства образования и науки РФ, проект №7.599.2011, Темплан, НИР № 01201255056.
цифровом виде по каналу I2C, в отличие от прямого анализа аналогового сигнала).
Для устранения этих недостатков, а также повышения прозрачности и гибкости в изучении и построении роботов было решено собрать роботизированную платформу, используя только некоторые элементы данного конструктора. Внешний вид этой платформы представлен на рис. 1.
Данная статья основана на [1] и продолжает обсуждение темы применения элементов набора Lego Mindstorm NXT 2.0 в образовательных целях.
Рис. 9. Внешний вид платформы
При построении платформы основной целью было создание минимального базового набора программно - аппаратных средств с возможностью будущего расширения функциональности путём добавления программно-аппаратных модулей. Такой подход позволяет строить роботы необходимые для решения конкретной задачи путём добавления уже созданных программно-аппаратных модулей или, в отличие от базового набора Lego, создавать свои собственные модули отдельно друг от друга.
К сожалению, нужно обладать знаниями не только в программировании, но и в области схемотехники, а также уметь паять. Но развитие и закрепление знаний в этих областях на практике, очень полезно для обучаемого.
Суммируя выше сказанное, можно сказать, что в сравнении с набором Lego данная платформа обладает следующими
преимуществами:
1. Гибкое модульное настраивание системы под конкретную задачу;
2. Практически не ограниченный выбор датчиков (зависит от наличия и количества у микроконтроллера соответствующих периферийных модулей);
3. Прозрачность в изучении работы датчиков и исполнительных устройств.
АППАРАТНАЯ ЧАСТЬ
Для апробирования идеи было решено начать с реализации модуля управления сервомоторами
из набора Lego. Они представляют собой обычные электродвигатели постоянного тока со встроенным квадратурным энкодером, питающимся от напряжения 5 В.
Сервомотор (см. на рис. 2), содержит:
1. Электродвигатель постоянного тока, с защитным устройством от перегрузки по току;
2. Плату, на которой установлены светодиоды и фотоприёмники энкодера с защитными цепями;
3. Шестиступенчатый редуктор, с суммарным передаточным числом 1:48, от выходной втулки к валу электродвигателя;
4. Зубчатое колесо энкодера с передаточным отношением 10:32 от двигателя к колесу энкодера.
Рис. 10. Внутреннее устройство электродвигателя из набора LegoMindstorm NXT 2.0 [2].
При вращении, квадратурный энкодер выдаёт 180 импульсов на один оборот выходной втулки, что достигается количеством щелей в колесе энкодера равным 12 [2]. При использовании обеих фронтов сигнала (нарастающего и спадающего) можно получить разрешение 360 импульсов (градусов) на оборот.
Сервомотор Lego имеет специализированный разъём для подключения к внешним цепям, по форме он похож на стандартный телефонный разъём RJ-12, с той лишь разницей, что язычок защёлки у разъёма Lego (на рис. 3 справа) смещён к правой стороне разъёма, а у RJ-12 (на рис. 3 слева) он находится в центре. Существует описание [3] доработки разъёма RJ-12 до разъёма Lego. После нескольких попыток переделка разъёма не кажется такой сложной задачей.
При автономной работе питание электродвигателей и платы платформы может быть осуществлено от напряжения 9 В (6 щелочных батарей) или 7,2 В (6 аккумуляторов NiMH). При стационарной отладке программы, может питаться внешним источником напряжения 12 В.
Для управления электродвигателями постоянного тока на рынке существует множество специализированных микросхем. Одной из таких легко доступных и дешёвых микросхем является BA6219B японской фирмы ROHM [4].
Рис. 11. NXT Разъём в сравнении со стандартным RJ-12
При помощи данной микросхемы можно управлять двигателями постоянного тока в четырёх возможных режимах: вращение вперёд, вращение назад, остановка вращения с выбегом ротора и торможение. Остановка вращения с выбегом ротора происходит в условиях работы двигателя близких к холостому ходу, а в режиме торможения - близких к короткому замыканию. Торможение двигателя позволяет достичь более быстрой остановки вращения. К недостаткам данной микросхемы можно отнести относительно высокий минимальный порог напряжения на управляющих входах в режиме логической единицы - 3,0 В, что не совместимо с TTL логикой (при питании 3,3 В), применяемой в микроконтроллере STM32 (уровень единицы
равен 2,0 В). Для решения этой проблемы был введён транзисторный каскад с общим эмиттером, который согласует уровни, но вносит инверсию в управляющий сигнал (что нужно учитывать при написании программы управления).
Для ограничения напряжения подаваемого на мотор NXT, при питании от внешнего преобразователя напряжения 12 В, и соответственно, частоты вращения двигателя, введён стабилитрон на напряжение 9,1 В между специально для этого предназначенными выводами 1 и 4 микросхемы.
К сожалению, микросхема BA6219B не имеет встроенного механизма управления частотой вращения (кроме ограничения). Поэтому было решено применить ШИМ-управление.
Максимальной частоте вращения ротора двигателя соответствует ШИМ-заполнение равное 100%, а нулевой частоте - ШИМ-заполнение равное 0%.
Направление вращения, текущий угол поворота ротора двигателя и частота вращения определяется по синусным и косинусным сигналам, поступающим от квадратурного энкодера. Направление вращения определяется по опережению или запаздыванию одного сигнала энкодера относительно другого. Угол поворота высчитывается путём подсчёта импульсов с одного из каналов энкодера. Частота вращения определяется количеством импульсов в единицу времени. Пример сигнала от квадратурного энкодера приведён на рисунке 4.
Рис. 12 - Осциллограммы сигналов с квадратурного энкодера.
Для согласования уровней сигналов квадратурного энкодера (напряжения импульсов составляют 5 В) и 3,3 Вольтовой ТТЬ-логики, а также защиты от попадания напряжения больше чем напряжение источника питания, и переполюсовки применена схема из описания на блок микрокомпьютера NXT [5].
В качестве управляющего элемента платформы выбрана отладочная плата STM32VLDISCOVERY, которая содержит микроконтроллер STM32F100RBT6B, ST-Link (встроенной интерфейс отладки), светодиоды и пользовательскую кнопку [6]. Данная плата может быть как источником напряжений 5 В или
3,3 В, так и питаться от внешних источников напряжения с таким же напряжением. В режиме источника напряжения, плата получает питание через USB разъём. Также плата оснащена штыревыми линейками, имеющими контакт со всеми выводами микроконтроллера, что очень удобно при построении модульных систем. Внешний вид STM32VLDISCOVERY приведён на рис. 5.
Соединение составных частей платформы (монтажных плат) выполнено при помощи штыревых соединителей PLS и PBS. Местонахождение разъёмов на монтажных платах и сами монтажные платы изображены на рис. 6.
Рис. 13. Внешний вид отладочной платы STM32VLDISCOVERY Штырьевые линейки BLS
Рис. 14 - Соединение плат при помощи разъёмов PLS и PBS.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Для программирования и отладки микроконтроллеров семейства STM32 существует множество сред разработки программного обеспечения. Среди них львиную долю занимают платные среды. Существуют также бесплатные, но они, зачастую, имеют ограничения по исполняемому коду. В настоящее время, как среди разработчиков микроконтроллеров (Texas Instruments, NXP и др.), так и среди рядовых любителей электроники набирает популярность свободная интегрированная среда разработки модульных кроссплатформенных приложений
Eclipse, которая развивается и поддерживается Eclipse Foundation [7]. Основным достоинством данной среды является её настройка под конкретную разработку ПО путём добавления соответствующих плагинов. К недостаткам можно отнести медленную работу, вызванную тем, что среда написана на языке программирования Java. Так как микроконтроллеры семейства STM32 построены на распространённой архитектуре ядра Cortex M3, то недостатка в плагинах для Eclipse нет, поэтому выбор пал именно на эту среду разработки. Внешний вид окна программы приведён на рис. 7.
Рис. 15. Внешний вид среды разработки Eclipse Helios SR2
В качестве пакета компиляции выбран бесплатный - Sourcery CodeBench Lite Edition из GNU Compiler Collection. Sourcery CodeBench Lite Edition от фирмы Mentor Graphics. Он содержит в себе, помимо компилятора, также другие утилиты, необходимые для сборки и подготовки файла прошивки микроконтроллера [8]. Для отладки кода использовался GNU Debugger из пакета Sourcery CodeBench Lite Edition в связке с GDB сервером сторонних производителей. Программирование осуществлялось через установленный на плате интерфейс инструментария отладки ST-Link.
Так как основной задачей платформы, на данном этапе построения, является управление сервомоторами NXT, то требовалось написать программный драйвер, управляющий их работой, с учётом модульного построения системы. Отладка и демонстрация работоспособности этого драйвера велась на примере тестовой программы. Модульность драйвера заключается в реализации кода в связке заголовочного файла с файлом реализации, и применении объектно-ориентированного подхода. К сожалению, не удалось создать универсальный тип данных объекта сервомотора (с последующим набором экземпляров для отдельных сервомоторов) из-за трудностей с распределением периферии микроконтроллера. Поэтому в программе для
каждого сервомотора NXT выделен свой набор периферии, и свой тип данных (класс в С++), который представляет собой драйвер.
Драйвером сервомотора NXT предусмотрен следующий набор команд:
1. движение вперёд с установкой конечного угла поворота;
2. движение вперёд без установки конечного угла поворота;
3. движение назад с установкой конечного угла поворота;
4. движение назад без установки конечного угла поворота;
5. стоп с выбегом;
6. торможение.
Данный набор команд отображает всю заявленную функциональность микросхемы BA6219B.
Одна команда представляет собой вызов метода класса, который объявлен как:
«void Rotate (bool bForwardRotation, unsigned char uchSettablePower, unsigned int uiSettableRotationNumber, unsigned int
uiSettableAngel, bool bBrakeMotor)»,
где «bool bForwardRotation» - задает направление вращения,
«unsigned char uchSettablePower»» -устанавливаемая мощность вращения (заполнение ШИМ сигнала),
«unsigned int uiSettableRotationNumber» -требуемое количество оборотов вала сервомотора,
«unsigned int uiSettableAngel» - требуемый угол поворота внутри одного полного оборота вала сервомотора и
«bool bBrakeMotor» - необходимо ли торможение в конце поворота на требуемый угол.
Если необходимо вращать сервомотором постоянно, то параметры «unsigned int uiSettableRotationNumber»» и «unsigned int uiSettableAngel»» слудует установить в нуль. Например, для того, чтобы повернуть робот, имеющий два гусеничных привода (правый и левый) на месте на угол 90°, необходимо подать по одной команде каждого драйвера с разной величиной параметра «bool bForwardRotation». В этом случае, один из двигателей, будет поворачивать влево на заданный угол, в то время как другой будет поворачивать вправо на этот же
угол, что приведёт в итоге к повороту на месте всего робота на установленный угол.
Работа с периферией микроконтроллера построена на прерываниях. Драйвером используется три разных прерывания: захват по синусному каналу квадратурного энкодера, захват по косинусному каналу квадратурного энкодера и переполнение таймера. В этих прерываниях ведётся подсчёт текущего угла поворота, определяется достижение заданного угла поворота и рассчитывается частота вращения.
Работа тестовой программы заключается в прохождении платформы по прямоугольной траектории движения. В основном бесконечном программном цикле осуществлён вызов соответствующих команд драйверов сервомоторов описывающих данную траекторию.
В ближайшее время планируется расширить функционал платформы до приведённой на рис. 8, структурной схемы устройства платформы.
Модуль Модуль Модуль
ультразвукового инфракрасного абсолютного
датчика расстояния датчика движения датчика давления
HC-SR04 H8I57 MPX4115
Модуль графического дисплея для Nokia 5110
Батарейный
отсек AA(LRÓ) X 6
16-ти кнопочная матричная клавиатура
Модуль Датчика температуры LM19SIZ
п
Отладочная плата STM32 VLDISCOVERY
Модуль преобразователя US В to СОМ
Модуль Bluetooth
Модуль управления сервомотором на базе ВА6219В
Модуль управления сервомотором на базе ВА6219В
Левый сервомотор
1
т
Модуль управления сервомотором на базе ВА6219В
Правый сервомотор
1
Дополнительный сервомотор
Рис. 16 Структурная схема платформы: прямоугольники с серой заливкой - реализованные модули; прямоугольники с толстыми линями границ — стандартные модули набора LegoMindstorm NXT2.0; Прямоугольники без заливки —
модули, реализация которых предстоит в дальнейшем.
ВЫВОДЫ
1. При исполнении тестовой программы, собранное и запрограммированное устройство показало принципиальную возможность построения платформ данного типа.
2. Функциональность данного устройства
может быть расширенна путём добавления схемных модулей сторонних производителей.
3. Тестовое программное обеспечение задаёт шаблон для построения алгоритмической части модулей драйверов, которое может быть гибко добавлено в код при раздельной работе нескольких разработчиков.
ЛИТЕРАТУРА
[1] А. Л. Печников, В. А. Жмудь, В. Г. Трубин, А. Б. Колкер. Перспективы развития робототехнических учебных стендов для высшего специального образования в области робототехники, автоматики и мехатроники. Труды конференции Scientific World — Перспективы инновации в науке, образовании, производстве и транспорте' 2012. URL: http://www.sworld.com.ua/index.php/ru/technical-sciences-212/informatics-computer-science-and-automation-212/13341-212-831 (дата обращения: 26.02.2013).
®
[2] NXT motor internals URL:http://www.philohome.com/nxtmotor/nxtmotor.h tm (дата обращения: 24.01.2013).
®
[3] Synthesize-your-own NXT connector plug URL: http://www.philohome.com/nxtplug/nxtplug.htm (дата обращения 24.01.2013).
[4] Reversible Motor Driver for Brash Motors 2.0A or More Reversible Motor Drivers (Single Motor) BA6219BFP-Y, BA6222 URL:
http://rohmfs.rohm.com/en/products/databook/datash eet/ic/motor/dc/ba6219bfp-y-e.pdf (дата обращения 24.01.2013).
[5] LEGO MINDSTORMS NXT Hardware Developer Kit. Appendix 1 -LEGO MINDSTORMS NXT hardware schematic. URL:
http://cache. le go .com/Media/Download/Mindstorms2 SupportFilesDownloads/otherfiles/download8CFD37 F17F7EFCDC412AE7CEBF245C6A/HDK_Downlo ad1.zip (дата обращения 24.01.2013).
[6] UM0919 User Manual STM32VLDISCOVERY STM32 value line Discovery. URL:
http://www.st.com/internet/com/TECHNICAL_RES OURCES/TECHNICAL_LITERATURE/USER_MA NUAL/CD00267113 .pdf (дата обращения 24.01.2013).
[7] Eclipse (среда разработки) - Википедия URL: http://ru.wikipedia.org/wiki/Eclipse_%28%D 1 %81 % D1 %80%D0%B5%D0%B4%D0%B0 %D 1 %80%D 0%B0%D0%B7%D 1 %80%D0%B0%D0%B 1 %D0% BE%D 1 %82%D0%BA%D0%B8%29 (дата обращения
24.01.2013).
[8] Mentor Graphics. Embedded Software. Sourcery CodeBench Lite Edition URL: http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ (дата обращения 24.01.2013)
Алексей Викторович Ескин -
ведущий инженер ООО «КБ Автоматика», e-mail: [email protected]
Вадим Аркадьевич Жмудь -
заведующий кафедрой Автоматики НГТУ, профессор, доктор технических наук, автор более 200 научных статей, включая 10 патентов и 6 учебных пособий. Область научных интересов и компетенций - теория автоматического управления, электроника, лазерные системы, оптимизация, измерительная техника.
_ E-mail: [email protected]
I Виталий Геннадьевич Трубин, зав. лаб. кафедры Автоматики НГТУ, i директор ООО «КБ Автоматика». http://www. sibindustry.ru/firm.as p?t=0&prm=9607&moid=0&tabi Щк &fe| ndex=0
^Ртй \' \ ' Автор 18 научных статей. Область интересов - разработка специализированной электроники. E-mail: [email protected]