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

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

В итоге мы обратились к друзьям (теперь уже скорее коллегам) в Экспериментальную техническую школу. Там нам показали почти готовый вариант «Роботенка» на трех сервоприводах типа 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!


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

Комментариев: 5 к записи “История одного роботенка”

  1. Только ребята плохо что из китайщины возможно собрать это устройство намного дешевле. Вот если бы выполнять проекты, направленные на массового потребителя и с конкурентной ценой из отечественных деталей, то тогда и можно поговорить о развитии. А так всё пока держится на энтузиастах

    1. Мы в дальнейшем постараемся подыскать отечественных производителей комплектующих, и такие есть на сегодняшний день. Что касается ориентации на массового потребителя — то все зависит от спроса на такие изделия.

  2. Было бы не плохо немного описать работу с гироскопом и акселерометром, а также точность этих приборов которую удалось достигнуть или сделать отдельную статью.

    1. Самый интересный момент в проекте был связан с отслеживанием положения трекера. Для этого в систему был введен модуль MPU6050. Сегодня очень популярен, так как интегрирует в себе трехосевой микромеханический гироскоп и трехосевой микромеханический акселерометр с интерфейсом I2C.
      Для определения положения твердого тела в пространстве применяют 3 кинематических угла – крен, тангаж и рысканье. Это корабельные или самолетные углы, которые ввел в науку академик Крылов. Для их вычисления потребуется знание угловой скорости тела (измеряет микромеханический гироскоп) и линейное ускорение тела (измеряет микромеханический акселерометр). В принципе можно ограничиться только линейным ускорением в проекции на три оси, что дает датчик акселерометр. При этом находясь ускорению свободного падения. Оно и покажет направление вертикали. Но если представить, например, отвес с грузом на шнуре в ветреную погоду, то станет ясно, что такое измерение будет сильно зашумлено внешними воздействиями. С данными от акселерометра все аналогично. Поэтому нужно применять процесс, который снижал бы внешние негативные воздействия, путем объединения данных с разных датчиков и фильтрации. Все это нужно проводить 100 и более раз в секунду, а при этом происходит решение системы дифференциальных уравнений, также считается и тригонометрия.
      Данные о положении после расчета без задержек поступали программную часть, отвечающую за управления сервоприводами. Алгоритм их работы в аналоговом режиме следующий. 50 раз в секунду на устройство подается импульс длительностью от 1000 мкс до 2000 мкс. 1000 мкс соответствует 0 градусов, 2000 мкс 180 градусов. Для создания такого сигнала на каждую из трех «серв» использован 16 битный таймер №1 системы, очень удобным оказалось то, что у него реализовано 3 управляемые линии. Применялся предделитель и режим быстрого ШИМ с периодом в 20 мс, что позволило управлять «сервой» с разрешением в 1 мкс.

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

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