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

plpzzbg1zxhcgfisx9j2c2bb1p0.png


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

Этапы разработки:
Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника

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


Я дал проекту новое название, так как текущее нечего дельного о нем не говорит. По сути 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.

jqzmvahrjuse69kdkxkkcjolaay.png


xskrwjznuktifi27u5k3m0rtzqk.png


g_owmy9obfc9l7vaos-dwns_z7m.png


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

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

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


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

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

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

8vhb0mhjztzkgi_cpya8h4ofhni.png


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

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


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

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

mddwb7pqsxqj3gug7o9twgktpem.png


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

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


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

qkbm_a4nw9tsyqnvkffqnaef3g4.png


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

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

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

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

wpwpfb7hc8obeq6voecpq2sidxm.png


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

wq5wfb4u3z3wshzpaabp7lx7y50.png


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

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

COXA, FEMUR and TIBIA? — What is it?
vneriv60k1dpousumyrgiodpggi.png


txaojjxoip3y68bzfxh6thdgkd0.png


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

P.S.


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

Пару фоток процесса печати
3esbidpw5dgjclju5rxolbsrhgo.jpeg

ix2upydfyhpidtitprfcllbgfdw.jpeg

© Habrahabr.ru