Моторизованная модель думпкара в масштабе 1:87
Модель
Привод
Я обдумывал несколько разных способов моторизовать опрокидывающийся кузов. Изначально я думал разместить мотор в хребтовой балке вагона и использовать какие-нибудь тяги для передачи усилия на кузов. Размещение мотора в раме позволило бы использовать более крупные моторы. Это решение усложняет усложняет то, что кузов должен опрокидываться в обе стороны (и у каждой стороны своя ось вращения), для этого надо либо два мотора, либо сложную систему рычагов, обеспечивающую наклон в обе стороны с помощью одного мотора. Другое решение - использовать очень еще более мелкие моторы и разместить их там же, где в реальном вагоне находятся пневмоцилиндры. В этом случае пространство в раме можно отдать под электронику, а каждый мотор будет отвечать за опрокидывание на своей стороне. Однако выбрать подходящий микромотор для этого гораздо сложнее.
Я попробовал несколько моторов (см. приложенные фото), у каждого из которых есть свои плюсы и минусы:
-
RC-серва. Плюсы: встроенное управление положением. Минусы: даже самая маленькая серва (1.7 г) слишком большая, чтобы поместиться в раму, не говоря уже о пневмоцилиндре.
-
Линейная RC-серва. Те же плюсы и минусы, что и выше. Возможно, под нее проще спроектировать кинематику (или наоборот, сложнее).
-
DC-микромотор (например, вибромоторчик от смартфона). Плюсы: очень маленький. Минусы: мотор слишком длинный (включая вал), слишком малый крутящий момент и слишком высокие обороты. Для использования нужен редуктор, который будет больше, чем сам мотор. Также невозможно управление положением.
-
Шаговый мотор со интегрированным редуктором и линейным винтовым приводом. Минусы: те же, что и для линейной сервы: слишком большой, непонятная передача на кузов.
-
Шаговый мотор с резьбой на валу. Идеально подходил бы для этой задачи, но винт имеет нестандартную двухзаходную резьбу, гайки в комплекте нет, поэтому непригоден для тех, кто не готов нарезать свои металлические или нейлоновые гайки.
-
Шаговый мотор без резьбы + всё сделать самому. Плюсы: очень компактный, кинематика довольно простая. Минусы: сложно что-либо закрепить на крошечном валу мотора. Для сравнения размеров на фото () - пневмоциллиндр, (*) 9г серва SG90.
Изначально я планировал использовать линейный сервопривод в середине рамы. Однако мне не удалось придумать подходящую систему тяг для его применения, да и в целом он показался слишком большим. После заказа на али и изучения вариантов, приведенных выше, я остановился на последнем варианте, шаговом моторе, размещенном внутри пневмоцилиндра, с винтом, закрепленном непосредственно на валу. Сначала я пробовал приклеить винт M1 к валу с помощью суперклея. (можно увидеть на фотографиях). Он оказался слишком хрупким, так как площадь контакта была слишком мала, так что я придумал припаять винт к валу, используя флюс для стали. Чтобы сохранить соосность винта и мотора, были напечатан кондуктор, в котором фиксируется и мотор, и винт (в итоге соосность далеко не идеальная, но гораздо лучше, чем если б делалось "на глазок").
Интересный факт: шаговые моторы с линейным приводом, которые сейчас доступны на AliExpress, родом из смартфонов с выдвижными камерами (вроде Xiaomi Mi 9T). Когда эти смартфоны выйдут из моды, такие шаговые моторы могут исчезнуть с рынка.
Токосъем
Электроника
Для управления моделью с использованием принятых в моделизме стандартов и инструментов требуется DCC-декодер. Все рассмотренные варианты привода, включая выбранный в итоге, требуют дополнительной электроники для управления от DCC-декодера, поскольку они либо низковольтные (DC микромотор), либо нуждаются в специальных драйверах/интерфейсе (шаговые двигатели и сервоприводы). Существует небольшое количество коммерчески доступных декодеров, которые работают с сервомоторами, но мне не известно ни одного локомотивного декодера для шаговых двигателей.
Один из вариантов управления - создание дополнительного модуля и его сопряжение с готовым декодером, например, по интерфейсу SUSI. Однако готовые декодеры делаются под стандартные размеры и не помещаются в отведенное им место в модели - внутри рамы вагона, ширина которой составляет всего 6 мм.
В общем, поскольку кастомную электронику надо делать все равно, я решил разработать собственный DCC-декодер. Требования к деводеру: Независимое управление моторами с каждого борта (два шаговых мотора или четыре, спараллеленные попарно) Минимально возможные габариты (меньше, чем у существующих декодеров), в идеале для установки в раму вагона. Питание от рельсов (в идеале - от любого напряжения, допустимого DCC) Чтение сигнала DCC Подтверждение чтения CV по DCC Звук не требуется Railcom не требуется
Если не получится сделать его нужного размера, декодер надо устанавливать либо в кузов, либо в соседний вагон.
На основе этих требований, была нарисована такая плата.
Схема пока ещё не полностью протестирована!
Компоненты
Микроконтроллер (МК): PY32F030 в корпусе QFN20 размером 3×3 мм.
Я рассматривал STM32C0 или STM32L0 в таком же корпусе, но у них в целом меньше возможностей (C0) либо им нужно больше обвязки (L0), поэтому я решил использовать PY32, которые у меня уже были. Изначально я также рассматривал питание логики 5 В (что сразу исключало STM32), но в итоге перешёл на более распространённые 3,3 В.
Каких-то особых требований к МК нет - только возможность работы без кварца, GPIO и прерывания и несколько таймеров. UART используется для отладочного вывода.
Драйверы двигателей
Первоначальная идея заключалась в использовании универсальной микросхемы с двумя H-мостами (например, DRV8835, я раньше применял его для двигателей постоянного тока), но при использовании миниатюрных 5-вольтовых шаговых двигателей на напряжении с рельсов ~15 В требуется ограничивать ток, чтобы не сжечь моторы. Хотя, вероятно, можно было бы ограничить ток с помощью резисторов, я решил использовать специализированные драйверы шаговых двигателей, а именно DRV8428, они имеют ограничения тока и микрошаговый режим для более плавного движения. Он выпускается в чуть более крупном корпусе 3×3 мм (для сравнения, DRV8835 — в корпусе 3×2 мм). Чтобы уместить компоненты на плате, от большинства дополнительных возможностей пришлось отказаться, например, от управления числом микрошагов с МК или регулировки тока с МК.
Считывание сигнала DCC реализовано с помощью одного диода (B5819WT) и одного резистора — это максимально простая схема, которая при этом остаётся безопасной и обеспечивает корректные логические уровни HI и LOW при любых возможных напряжениях на рельсах. Я взял эту схему из статьи по этой ссылке. Два компонента — это минимальное возможное число в данном случае, если не считать прямого подключения через резистор большого номинала. Прямое подключение несколько небезопасно, так как рельсовое напряжение может протечь в линию 3,3 В через внутренние защитные диоды МК.
Выбранная схема не позволяет измерять аналоговое напряжение или отслеживать изменения напряжения для ABD/CDB, но так как декодер не предназначен для движения локомотива, это и не требуется.
Схема RailCom также не реализована (чтобы сохранить минимальные размеры платы и не переусложнять мой первый декодер).