Потребовалось однажды нам, то есть специалистам АО «НИИЭТ», создать некий «хенд-мейд» на отечественном(ых) микроконтроллере(ах) – короче говоря, нечто на основе нашей ЭКБ, что будет привлекать внимание всех и каждого. Выбор пал на отечественный 8-разрядный RISC микроконтроллер 1887ВЕ7Т.

Идея купить китайскую игрушку, которая светится, двигается и выдает что-то типа «ни хао сан» отпала почти сразу: слишком дешево и примитивно выглядит, да и не очень-то смахивает на разработку (и вообще слишком уж просто, разработчики мы или как?).

В итоге мы обратились к друзьям (теперь уже скорее коллегам) в Экспериментальную техническую школу. Там нам показали почти готовый вариант «Роботенка» на трех сервоприводах типа MG90S, реализованного на Arduino UNO. Идея нам понравилась. Такая корова нужна самому.

Покопавшись в особенностях «чистописания» в Arduino IDE, мы перенесли проект с UNO на нашу плату АО «НИИЭТ», которая выглядит вот так:

Допечатав недостающие вещи на 3D-принтере и утяжелив подставку балластом в виде болтов и гайек, чтобы наш металлический друг не падал при движении, мы получили вот такие большие и выразительные глаза. Дратути!

Анфас
Профиль

Подключили наше создание к плате и начали тестировать. В итоге получился «рашен Валли», дикий, но симпатичный ©.

Собственно, как это работает.

«Роботенок» представляет собой поворотное устройство с тремя степенями свободы. «Глазки» – ультразвуковой датчик дальности SR 04. Управление поворотами робота осуществляется посредством модуля инерциальных датчиков MPU6050 (как устроен – можно посмотреть здесь). Реализован также и автоматический режим работы.

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

После калибровки «роботяшка» переходит в режим непосредственного управления с помощью модуля инерциальных датчиков. Поворот модуля в пространстве вокруг трех осей приводит к аналогичному повороту механизма. При этом происходит непрерывное сканирование пространства датчиком дальности SR04. Дальность до предметов отображается горением соответствующего количества светодиодов. Дистанция в 1 метр соответствует горению всех светодиодов.

 

 

Замечание: ПОВОРОТ ВОКРУГ ВЕРТИКАЛЬНОЙ ОСИ возможен в диапазоне от -90 до 90 градусов, остальные оси – от -45 до 45. Ограничение сделали условное для  сервоприводов, так как так конструкция, которая задумана, за счет проводов и корпусов, в которых закреплены «Сервы», не позволяют осуществлять вращение на 3600.

Если в режиме непосредственного управления роботом возникает препятствие на расстоянии 6 см, то робот «прячется» – наклоняет датчик SR04 вниз на несколько секунд. Далее происходит возврат к работе текущего режима.

 

 

 

 

 

Кнопки на плате для управления роботом.

  1. SW0 – сброс «нуля». Так как в состав инерциальных датчиков не входит магнитный компас, то со временем происходи дрейф центрального положения робота по углу рысканье, т.е. поворот вокруг вертикальной оси. При нажатии на кнопку SW0 в режиме непосредственного управления роботом текущее положение датчика становится для робота центральным по углу рысканье.
  2. SW1 – включение режима непосредственного управления роботом. Этот режим установлен по умолчанию.
  3. SW2 – включение автономного режима работы. При этом происходит медленный поворот из одного крайнего положения по рысканью в другое. В крайних точка происходит подъем или опускание датчика SR04.
  4. SW3 – включение дистанционного управления роботом. Перед включением необходимо установить связь с HC06 и нажать на GO в программе на мобильном устройстве. Повороты мобильного устройства вокруг двух осей приводят к движению робота относительно вертикальной и горизонтальной осей.

Опишем, что было задействовано из аппаратных блоков микроконтроллера.

  1. Таймер №1 (16 бит). Создание потока импульсов на вывод TRIG (режим Fast ШИМ) для SR04 – ультразвукового сенсора.
  2. Внешнее прерывание INT7 для считывания длины импульсов возникающих на выводе ECHO.

Для работы MPU6050 в дополнение подключен преобразователь уровней 5В –> 3.3В типа TXB0108PWR и задействованы:

  1. Модуль I2C на скорости передачи данных 400КГц.
  2. Математический расчет углов Крылова (тангаж, крен, рысканье) ориентации устройства управления проходит с частотой 100Гц. Используется трехосевой гироскоп и трехосевой акселерометр. Расчет базируется на векторном способе. Для объединения данных используется комплементарный фильтр.
  3. Для точного вычисления времени начала очередной итерации используется таймер №2 (8 бит).
  4. Кнопки подключены к порту C, светодиоды к порту A.
  5. Подключение стандартными шлейфами.

Также для эксперимента задействовали Bluetooth модуль HC-06 (20:15:02:11:22:23) через USART1, скорость работы 38400 бит/сек. Прерывания – USART1, RX  (завершение приема USART 1) и USART1, UDRE (регистр данных USART 1 свободен).

Управление сделано через web-интерфейс. Если будут желающие попробовать собрать подобное – пишите на support@niiet.ru, поможем:)

Сервоприводы посажены на Таймер №3 (16 бит) – три линии A, B, C. Управляющий сигнал с частотой следования 20Гц и длиной импульсов от 1000 – 2000 мкс (режим Fast ШИМ).

В качестве ПО использовали Arduino IDE и AVR studio (для низкоуровневого программирования).

Таким образом, нет никаких проблем, чтобы реализовать «детские затеи» на отечественных микроконтроллерах. Есть, конечно, ограничения для школьников – нужно использовать низкоуровневое программирование при программировании 1887ВЕ7Т. Но если имеется опыт написания проектов под Arduino, то миграцию на наш аналог сделать можно без проблем.

Наш только что вылупившийся юный роботенок уже успел побывать вместе со специалистами НИИЭТ на крупнейшей российской выставке электронных компонентов «Экспоэлектроника-2017» в Москве и имел там большой успех. Большое спасибо за помощь в осуществлении проекта доценту кафедры теоретической и прикладной механики факультета ПММ Воронежского государственного университета Александру Яковлеву и педагогу Экспериментальной технической школы Ирине Ивановой.

Stay tuned!


Автор: Андрей Сумин, технический консультант АО “НИИЭТ”

You must be logged in to post a comment.