24 December 2019

Разработка hexapod с нуля (часть 6) — переход на 3D печать и новое железо

Robotics developmentRoboticsDIY

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

Этапы разработки:
Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника
Часть 6 — переход на 3D печать
Часть 7 — новый корпус, прикладное ПО и протоколы общения
Часть 8 — улучшенная математика передвижения
Часть 9 — завершение версии 1.00

Немного общих моментов


Я дал проекту новое название, так как текущее нечего дельного о нем не говорит. По сути SKYNET это небесная сеть, ну или что-то вроде того (sky — небо, net — сеть). В данном случае никакой сети нет, а неба тем более.

Новое название AIWM (artificial intelligence walking machine) — шагающая машина с искусственным интеллектом. На счет интеллекта тут пока рано, но вдруг я смогу дожить до этого момента :)

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


Изменения в функционале


Во время перепроектирования возникало множество идей и сложностей. Было убрано несколько не нужных деталей и добавлен новый функционал. Вот список изменений, которые планируется реализовать:

  1. Мультипроцессорная архитектура. На данный момент запланировано 3 MCU: контроллер машинного зрения (Broadcom BCM2835), контроллер питания (STM32F030), головной контроллер (STM32F373);
    • Контроллер машинного зрения представляет из себя готовый модуль Raspberry Pi Zero и будет заниматься сбором, обработкой и распознаванием объектов с камеры. Все необходимое для этого железо подключается к нему же. Коммуникация ведется по протоколу ModBus в режиме слейва;
    • Контроллер питания представляет из себя мощный (до 250Вт) DC-DC с возможностью регулировки выходного напряжения на лету через коммуникацию. Он запитывает всю электронику гексапода и является его сердцем. Возможно в будущем появится возможность перейти на прямое питание приводов от 7.4В, но такие приводы довольно дорогие даже на али. Коммуникация ведется по протоколу ModBus в режиме слейва;
    • Головной контроллер является связующим звеном этой архитектуры. Он занимается обработкой движения и предоставляет интерфейс для коммуникации с внешним миром. Коммуникация ведется по протоколу ModBus в режиме слейва (внешний мир) и мастера (межпроцессорная коммуникация);
  2. Поддержка видеотрансляции, либо передача изображений по WIFI для возможности управления вне зоны прямой видимости, если хватит свободных ресурсов Raspberry Pi Zero;
  3. Управление решено перевести на Bluetooth (будет использоваться готовый мост BLE-UART HM-10), так как WIFI теоретически уже занят для трансляции видео на пульт управления. К тому же хочется иметь возможность обновления прошивки или конфигурации на лету с удаленного сервера и если использовать WIFI для коммуникации, то в интернет уже не выйдешь;
  4. Управление RGB светодиодами спереди дабы освещать в темноте и попутно показывать состояние FW;
  5. В структуру ног интегрированы датчики касания, что позволит реализовать более умный алгоритм передвижения;

Головной контроллер или плата управления


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

Спустя неделю составления схемы и трассировки на свет появился электронный прототип платы. Суммарно на проектирование ушло часов 20. Чтобы уменьшить количество возможных источников ошибок планируется постепенный переход на новую электронику. В данном случае первой по плану будет запускаться плата управления в связке со старой платой питания.

Для совместимости текущего Android ПО предусмотрено посадочное место под WIFI-UART мост, который сейчас используется в прототипе. Скрины платы показаны ниже (на 3D виде убран WIFI-UART, так как Altium почему-то отображает его модель полностью одним цветом). На самом деле тут вообще без разницы, что использовать для коммуникации — главное чтобы на выходе интерфейса был UART.




На плате предусмотрены следующие разъемы:
— Основное питание 12В + контакты с балансировочного разъема для возможности мониторинга напряжения каждой ячейки, так же на основе этого можно определять тип подключенного АКБ (количество ячеек);
— Разъем для передачи сигналов на плату питания для сервоприводов;
— Разъемы для подключения контроллера машинного зрения и контроллера питания;
— Разъем для управления передними RGB светодиодами;
— Разъемы для датчиков касания на конечностях;
— Разъем для подключения пьезоизлучателя. Предполагается, что у пищалки уже встроена схема управления, а мы коммутируем только питание.

Все достаточно просто и переезд на STM должен пройти безболезненно. Я довольно удачно спроектировал код и достаточно заменить драйвера, работающие с регистрами периферии.

Контроллер питания


По мере увеличения опыта в электронике через кучу проб и ошибок я наконец-то смог постигнуть DC-DC. На самом деле нечего сложного там нет, главное знать как работает катушка и для чего она там собственно нужна.

Для управления мощной нагрузкой, в качестве которой в данном случае выступают 18 приводов со средним потреблением 12-15А, требуется что-то более эффективное простых DC-DC. Как правило узким местом в них является диод, который при больших токах начинает отапливать помещение. Напряжение питания приводов составляет 6В при входном напряжении до 12В, в данном случае диод будет работать ~50% цикла (грубая прикидка без учета просадки напряжения и прочих радостей). Соответственно даже при использовании диода Шоттки выделяемая на нем мощность будет достаточно большой для того, чтобы начать думать об отводе тепла.

Тут на помощь приходят синхронные DC-DC, у который вместо диода используется полевой транзистор. У хороших транзисторов сопротивление канала достаточно малое для того, чтобы гонять большие токи без существенного выделения тепла. Ниже показаны главные отличия асинхронного DC-DC от синхронного:


В общем перечитав кучу инфы я наконец-то определился с требованиями:

  • Способность гонять токи до 20А в номинальном режиме работы;
  • Переход в аварийный режим при нарушении нормального режима работы: перегрев или насыщение катушки, перегрев силовых ключей, низкое входное напряжение, КЗ, установлено неадекватное выходное напряжение и прочие радости;
  • Возможность коммуникации с DC-DC для получения значений измеряемых величин: входного и выходного напряжений, потребляемого тока, температурах катушки и силовых ключей;
  • Адекватное КПД;

Проектировать DC-DC я решил с использованием микроконтроллера STM32F030, стоит копейки и имеет всю необходимую для решения моих задач периферию. Единственный минус применения данного МК — довольно грубая регулировка напряжения с шагом 25мV при частоте 100кГц. Для получения более высокой точности нужно применять МК с high resolution timers на борту, либо уменьшать частоту переключения транзисторов. Для моих требований такого шага регулировки напряжения вполне достаточно.

На данный момент спроектирован и собран первый прототип, который показал работоспособность схемы. КПД при грубых измерениях составляет 87% при токе 11А в отладочной конфигурации платы с использованием защитных резисторов от сквозных токов (необходимо для настройки dead-time между переключениями транзисторов).

Более подробно о DC-DC будет чуть позже, когда доведу его до ума. Довольно много интересных моментов, запаха поджаренных драйверов затвора и МК :) Кстати транзисторы оказались на столько мощными, что в результате сбоя проходящий ток прожег печатную плату и при этом транзисторы остались целыми.

Немного о новом корпусе


Электроника это очень интересно, но и о механике забывать тоже не нужно. Наконец-то гексапод приобрел адекватный закрытый корпус, откуда не будут торчать провода и куски печатных плат. Вот собственно он

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

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

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

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

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


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

Приводы для управления конечностей перенесены в FEMUR, что должно немного снизить нагрузку за счет уменьшения веса TIBIA в результате переноса крепежа и смещение двигателя сервопривода ближе к началу рычага. Да и по дизайну будет лучше, если на FEMUR часть будут устанавливаться TIBIA и COXA, а не наоборот как раньше.

COXA, FEMUR and TIBIA? - What is it?



По предварительным расчетам на печать корпуса уйдет 670г пластика и 51 час непрерывной печати при слое 0.2мм и толщине сопла 0.4мм. В целом по деньгам получается чуть дешевле фанеры, но дизайн даже сравнивать бессмысленно и это того стоит.

P.S.


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

Пару фоток процесса печати


Tags:hexapodrobotdiyskynet3D
Hubs: Robotics development Robotics DIY
+15
6.2k 68
Comments 26