Мы —  команда преподавателей и студентов разных кафедр факультета прикладной математики и механики Воронежского государственного университета. Команда создавалась для создания собственного программного обеспечения системы стабилизации мультикоптера. Изначально использовали широко известную платформу Arduino. В дальнейшем проект перешел на stm32.

При факультете функционирует школа робототехники для школьников. В определенный момент возникло желание применить наработанный материал по системам стабилизации квадриков и балансирующих роботов для создания чего-то близкого и понятного младшим школьникам из этой школы. При этом нашлось несколько свободных 9 грамовых сервоприводов, ультразвуковой сенсор дальности SR-04. Образ устройства сформировался в виде робота Валли, очень популярного у наших малышей.

В качестве основного расчетного мозга в новом проекте было решено использовать, имеющееся на факультете, отладочное устройство КФДЛ.301411.243РЭ  с микроконтроллером 1887ВЕ7Т, разработанные в г. Воронеже на фирме НИИЭТ. Тем более, что задумки загрузить данный контроллер по полной появились сразу как мы получили этот комплект от фирмы. Уж больно «аппетитно» он выглядел.  На данной отладочной плате реализованы выводы для всех портов, все интерфейсы в разной конфигурации (штырь/гнездо) есть 8 желтых светодиодов и 8 кнопок. Кнопки и светодиоды можно шлейфами подключать к выбранным портам, что показало себя крайне удобно для применения в проектах.

Что из себя представляет робот? Это датчик расстояния, закрепленный на трех осевом подвесе для FPV (полет от первого лица) камеры с тремя сервоприводами. Корпус и другие элементы напечатаны на 3D принтере. Управление данным устройством происходит несколькими способами.

Непосредственное управление с помощью трекера, оснащенного модулем инерциальных датчиков MPU-6050. Повороты трекера вокруг трех осей (крен, тангаж и рысканье) приводят к соответствующим перемещениям робота (наклон вперед, вправо, влево и вращение вокруг вертикальной оси).

Автоматический режим, при котором механизм поворачивает сенсор расстояния (крутит голово) из одного крайнего положения в другое в горизонтальной плоскости.

И было бы не вполне современно, если не предусмотреть беспроводный дистанционный режим. А это управление движениями робота с помощью мобильного устройства через Bluetooth, путем его поворота вокруг продольной и поперечной осей.

Во всех случаях дальность, измеряемая сенсором до ближайших объектов, отображается в виде соответствующего количества горящих светодиодов (от 0 до 8). Режимы переключаются с помощью кнопок. Задействовано 4 штуки.

Несколько слов для любителей технических подробностей. Работа ультразвукового сенсора дальности SR04 в кратком виде можно описать так. С определенной периодичностью на вход датчика подается короткий импульс (порядка 10 мкс), что приводит к излучению датчиком ультразвука. Далее на выходе датчика появляется  импульс, по длительности которого можно вычислить дальность до ближайшего объекта. Подобный датчик был использован в наших проектах для удержания высоты коптера. Там необходимо было непрерывно сканировать пространство. Поэтому входной импульс формировался с помощью таймера (режим  быстрого ШИМа), а выходной отслеживался с помощью внешних прерываний. Этот алгоритм мы и перенесли на контроллер  1887ВЕ7Т. Затруднений это не вызвало, т.к. он совместим Atmega 128.

Самый интересный момент в проекте был связан с отслеживанием положения трекера. Для этого в систему был введен модуль MPU6050. Сегодня очень популярен, так как интегрирует с себе трехосевой микромеханический гироскоп и трехосевой микромеханический акселерометр с интерфейсом I2C. Справится ли с большим объемом вычислительной нагрузки отечественный микроконтроллер? Поясню в чем дело.  Для определения положения твердого тела в пространстве применяют 3 кинематических угла – крен, тангаж и рысканье. Это корабельные или самолетные углы, которые ввел в науку академик Крылов. Для их вычисления потребуется знание угловой скорости тела (измеряет микромеханический гироскоп) и линейное ускорение тела (измеряет микромеханический акселерометр). В принципе можно ограничиться только линейным  ускорением в проекции на три оси, что дает датчик акселерометр. При этом находясь в покое с датчика можно получить ускорение  соответствующее ускорению свободного падения. Оно и покажет направление вертикали. Но если представить, например, отвес с грузом на шнуре в  ветреную погоду, то станет ясно, что такое измерение будет сильно зашумлено внешними воздействиями. С данными от акселерометра все аналогично. Поэтому нужно применять процесс, который снижал бы внешние негативные воздействия, путем объединения данных с разных датчиков и фильтрации. Все это нужно проводить 100 и более раз в секунду, а при этом происходит решение системы дифференциальных уравнений, также считается и тригонометрия. При этом расчетная нагрузка довольно высока, а контроллер 8 битный. В используемом нами виде этот блок был перенесен на 1887ВЕ7Т. Проблем ни при подключении, ни при расчетах не возникло.

Данные о положении после расчета без задержек поступали программную часть, отвечающую за управления сервоприводами. Алгоритм их работы в аналоговом режиме следующий. 50 раз в секунду на устройство подается импульс длительностью от 1000 мкс до 2000 мкс. 1000 мкс соответствует 0 градусов, 2000 мкс 180 градусов. Для создания такого сигнала на каждую из трех машинок был использован 16 битный таймер №1 системы, очень удобным оказалось то, что у него реализовано 3 управляемые линии. Применялся предделитель 8 и режим быстрого ШИМ с периодом в 20 мс, что позволило управлять машинкой с разрешением в 1 мкс.

Для работы с Bluetooth модулем HC-06 применялся USART1. При этом, остался не задействован и еще один такой интерфейс USART0.

Для реализации функции типа ардуиновской micros() использовался еще один таймер – таймер №2 (8 бит).

В целом подводя итог, можно сказать: контроллер справился со своей задачей полностью. При этом аппаратная часть была достаточно плотно задействована. Само отладочное средство оставило только положительные впечатления. Работать с ним было удобно даже с точки зрения «эргономики», разводка выводов позволяет разместить различные устройства, которые не будут физически мешать друг другу и перекрывать кнопки и светодиоды. Сейчас данное устройство активно используется в учебном процессе на нашем факультет. Оно задействовано в нескольких проектах. Еще нужно отметить наличие на отладочном устройстве нескольких вариантов загрузки ПО в микроконтроллер. В том числе реализовано и программирование  повышенным напряжением.


Автор: Александр Яковлев, доцент кафедры теоретической и прикладной механики факультета ПММ Воронежского государственного университета

Комментариев: 2 к записи “Робот на контроллере 1887ВЕ7Т”

    1. Иван, добрый день! Фотографии размещены в предыдущей записи http://niiet.ru/blog/bloha, посмотрите, пожалуйста. Если Вам нужны более детальные/другие фотографии, напишите, пожалуйста, на почту ea@niiet.ru.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *