С этим роботом я играюсь уже несколько месяцев. Перемещается он за счет поворачивания колес относительно груза маятника, а скорость контролирует, ориентируясь на обратную связь от датчика наклона. На его сборку меня вдохновила снятая на Consumer Electronics Show (CES 2020) видео-демонстрация с роботом Ballie от Samsung. Было понятно, что это для них чисто хайповый проект, который в серийное производство не выйдет. Тем не менее у меня возник интерес собрать нечто аналогичное.

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

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

Управляется робот через ATMEGA2560 при помощи платы Arduino Mega с надстроенной поверх самодельной платой драйвера мотора. Управление реализуется с помощью двух радиотрансиверов Xbee, один из которых установлен в самом роботе, а второй на джойстике. Запитывается робот от 3-элементной батареи LiPo емкостью 1500мАч.

Программное обеспечение


Программный стек, включая загрузчик, я написал с нуля (только avr-gcc, никакого кода .ino). В основу программы для драйвера мотора легла информации и примеры из проекта Simplefoc, который ведет группа людей, занимающихся Field Oriented Control (векторным управлением) высокоэффективных электромоторов.

Для определения ориентации робота используется комплекс Pololu “MinIMU-9 V2”, состоящий из гироскопа, акселерометра и магнитометра. Полученные от гироскопа показатели интегрируются, сообщая угол наклона, для которого затем при помощи акселерометров применяется коррекция дрейфа.

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

Корпус


Корпус я разработал в Blender, нарезал в Cura, а напечатал в PLA, используя Ender3 Pro.





Датчик вращения вала


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

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





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



Драйвер мотора


Для создания тяги я использовал пару карданных моторов iPower GM5208-12. Обоими управляет ATMEGA посредством их интерфейсов PWM (широтно-импульсной модуляции) через микросхему драйвера LM6234, которая преобразует поступающие от ATMEGA низковольтные сигналы 5В в импульсы 12В, питающие катушки мотора от LiPo-батареи.

При проектировании схемы мотора я опирался на указания к применению, предоставленные производителем (AMS):



Первое тестирование проводилось на макетной плате с использованием соединительных проводов:



После всю эту конструкцию я собрал основательно уже на Arduino Proto Shield:





В полном комплекте плата выглядит так:



Финальная сборка


Один в один:



Результаты


Перемещение по комнате и кухне:

Постукивание на заднем фоне – это наши каминные часы. Сам робот полностью беззвучен.

Материалы


Исходный код: скачать

Файлы stl: скачать

Комментарии (7)


  1. ED-209
    04.01.2022 16:17

    На его сборку меня вдохновило снятая на Consumer Electronics Show (CES 2020) видео-демонстрация с роботом Ballie от Samsung. Было понятно, что это для них чисто хайповый проект, который в серийное производство не выйдет.

    Из серийных двухколесных были еще Sony Rolly в середине 2000-х, вот тут есть полный видеоразбор как все устроено внутри, возможно будет интересно

    https://www.youtube.com/watch?v=wZUBHoz7dZU&ab_channel=JanusCycle


  1. Kodim
    04.01.2022 17:50

    А подьем-спуск он может преодолевать?


  1. lonelymyp
    04.01.2022 19:20
    +12

    Пришлось даже статью прочитать, чтобы всётаки найти что за карданный мотор такой, первый раз слышу, а оказывается это так обычный бесколлекторник обозвали.


    1. ministrell
      04.01.2022 22:25
      +4

      Угу, я тоже на этом завис надолго. Оказывается это надмозг от Gimbal Motor


  1. iShrimp
    04.01.2022 20:12

    Интересно, где у робота центр тяжести, и устойчив ли он к опрокидыванию?

    Прикольный форм-фактор для автономного робота.


    1. Stellite
      04.01.2022 22:41
      +2

      Там же на фото видны и подписаны свинцовые грузы, которые из него ваньку-встаньку делают.


  1. CYRIX-MII
    05.01.2022 06:53
    +1

    Я, так понял, что автором был куплен 3д принтер и он никак не мог найти ему достойного применения, случай, когда оборудование диктует идеи.