Радиоуправляемая машинка на Arduino для преодоления мини-бездорожья

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

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

9b46ae1166a102e2bb10dfb784d0cd5a.png

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

К слову о реальном бездорожьеК слову о реальном бездорожье

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

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

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

Мощности прибавилось процентов на 20 (не удивительно — минимум 3.7 В аккумулятора 18650 против 3 В двух пальчиковых батареек). А по субъективным ощущениям машинка поехала чуть ли не в два раза лучше. Но теперь уже не хватало сцепления с поверхностью — колеса слишком легко срывались и буксовали. Так что на следующем этапе я распечатал на 3D-принтере покрышки побольше из TPU.

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

Колеса большого размера вполне предсказуемо нивелировали прирост мощности. С этим надо было что-то делать. Хотелось более низкой передачи, так что я начал задумываться о создании собственного редуктора. Этот агрегат легко напечатать, но он уже не влез бы в старый «заводской» корпус модели. Так что пора было начинать всю разработку с нуля. Как минимум потому, что некоторые вещи проще сделать заново, чем переделывать.

С этими мыслями я сел прототипировать.

Редуктор

Первым делом я собрал прототип редуктора с несколькими валами и понижением 1 к 14. Благодаря такому серьезному понижению я мог бы использовать в своем агрегате достаточно слабый моторчик от оригинальной машинки — рукой его было уже не удержать. 

Прототип редуктора с понижением 1 к 14 (но уже установлен мотор, который я использовал в самосборной машинке).Прототип редуктора с понижением 1 к 14 (но уже установлен мотор, который я использовал в самосборной машинке).Пробная сборка с редуктором 1 к 14.Пробная сборка с редуктором 1 к 14.

По мощности — то, что нужно, но габариты редуктора были слишком большими. Так что в итоге я остановился на более компактном варианте с прямой передачей и понижением 1 к 2.5.

Редуктор с прямой передачей и понижением 1 к 2.5.Редуктор с прямой передачей и понижением 1 к 2.5.Модель машинки с прямой передачейМодель машинки с прямой передачей

Интересный факт про редуктор: шестерни я напечатал из разного пластика. Пришел к этому решению методом проб и ошибок. Ведущая шестерня — из SBS, а ведомая — из PLA. За счет того, что SBS более мягкий, существенно снижается шум и износ в процессе эксплуатации.

Рулевое управление

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

Прототип рулевой трапеции.Прототип рулевой трапеции.

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

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

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

  • я напечатал наконечники из PETG — он более устойчив к разломам от ударов;

  • перешёл на сервопривод с металлическими шестернями (на фото первая версия, с пластиковыми шестернями, у которых буквально «выбивало зубы»).

Вид рулевой трапеции под капотом.Вид рулевой трапеции под капотом.Модель подвески в разрезе.Модель подвески в разрезе.

Рама и кузов

Проектируя раму, я исходил из того, что строить модель буду на моторе от подаренного мне на запчасти струйного принтера. Это двигатель постоянного тока, который перемещает каретку вправо и влево.

Кстати, пока не разобрал этот принтер, был уверен, что такую задачу должен решать шаговик, как на 3D-принтере. Но в том струйном принтере стоял именно двигатель постоянного тока. А для позиционирования вдоль хода печатающий головки была размещена лента с контрастными полосками. Начиная движение головы вдоль ленты, принтер считывал с помощью оптического датчика полоски и останавливался около нужной. Для меня такая схема работы была откровением. Но зато мне достался вполне приличный двигатель постоянного тока.

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

На этом фото видно пары одинаковых деталей.На этом фото видно пары одинаковых деталей.

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

Оранжевые детали удерживают моторОранжевые детали удерживают мотор

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

Поворотные кулаки, Поворотные кулаки, «ступеньки» и рулевая трапеция.«Распорка» на штатном месте. Кстати, как раз тут видно, что рулевые наконечники — расходный материал (они тоже унифицированы).Если снять распорку, оси поворотных кулаков расходятся.Если снять распорку, оси поворотных кулаков расходятся.

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

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

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

Колеса

Каждое колесо модели состоит из двух деталей — диска и покрышки, которая держится на нем за счет трения. Диски распечатаны из ABS. Покрышки — из SEBS. Я пробовал и другие «резиновые» пластики, но понял, что не так важно, какой именно материал используется. Гораздо важнее, чтобы модель была пустотелая.

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

Колеса с заполнением. Хотя они и сжимались руками, для машинки они были жестковаты.Колеса с заполнением. Хотя они и сжимались руками, для машинки они были жестковаты.

Когда я сделал покрышки пустотелыми, результат оказался намного лучше. 

Мягкая покрышка, напечатанная без заполнения. Она намного мягче.Мягкая покрышка, напечатанная без заполнения. Она намного мягче.

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

Изначально из соображений унификации для крепления всех колес я использовал шпильки М3. Но выяснилось, что на задней оси такая шпилька гнется под весом мотора и аккумуляторов. Поэтому сначала сзади, а потом и спереди пришлось перейти на М5.

Внутри передних колес в поворотные кулаки запрессованы подшипники (покупные). В первой версии модели я запрессовал по одному подшипнику с каждой стороны. Но их ширина — не более 2,5 мм, поэтому колесо на такой узкой опоре начало болтаться. Чтобы этого избежать, я перешел на двухрядные подшипники. Увеличил ширину поворотного кулака, но тем самым убрал лишние люфты.

Питание, электрика и логика

В собственной модели я решил использовать не один, а четыре аккумулятора 18650, которые выдают от 14.8 до 16.8 В (в зависимости от состояния заряда). Поскольку управляется машинка при помощи Arduino Nano, которому нужно 5 В, питание к ней поступает через понижающий конвертер. А двигатель постоянного тока подключен к Arduino через Н-мост.

Отработка взаимодействия с Н-мостомОтработка взаимодействия с Н-мостом

Для связи с пультом управления (подробнее о котором расскажу далее) используется радиомодуль 2.4 ГГц.

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

1ecd3b9a724f6d52bf1671e978e4052e.png

Тормоза

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

Логично было бы тормозить с помощью движения назад. Но в этом случае колеса будут прошлифовывать, а потом машина действительно поедет назад, а не остановится. Вместо этого у меня реализован своеобразный «ручник» (назовем его так, раз уж с мотором связана только задняя ось). При нажатии на него мотор начинает быстро переключаться вперед-назад. Выглядит это как эпилептический припадок, сопровождающийся жужжанием, но машина при этом стоит на месте, а если до этого двигалась, то отлично тормозит. Ручник ведет себя прямо как настоящий — позволяет закладывать в повороты боком и выполнять аналогичные маневры.

Пульт управления

Пульт управленияПульт управления

Я не стал проектировать для пульта управления красивый корпус, зато он получился довольно функциональным. Здесь также используется Arduino Nano, радиомодуль 2.4 ГГц и два покупных аналоговых джойстика. Оба они двухосевые, но для удобства управления я сделал так, что один отвечает за движение вперед / назад, а второй — за повороты влево / вправо.

«Изнанка» пульта управления

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

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

Желтая - кнопка Желтая — кнопка «ручника».

Питается пульт от одного аккумулятора 18650. Соответственно здесь используется уже повышающий конвертер, который преобразует 3.7–4.2 В (в зависимости от состояния заряда аккумулятора) в 5 В для Arduino Nano. 

Видел аналогичные разработки, в том числе в живую на фестивале 3D-печати в Москве. Не без гордости за свой проект отметил, что моя машинка шустрее реагирует на команды и не лагает. Все потому что протокол радиосвязи для пульта я разрабатывал сам с учетом всех оптимизаций, а не скачал первую попавшуюся прошивку из интернета. Мне удалось добиться еще и очень низкого энергопотребления — не более десятка миллиампер. По примерным подсчетам одного аккумулятора 2 А-ч должно хватить надолго.

А что дальше?

Модель машинки в разрезеМодель машинки в разрезе

Машинка ездит и радует, и, конечно, у меня масса планов по развитию проекта. Правда в связи со строительством дома и работами по ремонту одной из моих полноразмерных машин (https://www.youtube.com/@fix-and-run/) на радиоуправляемую модель почти не остается времени.

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

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

Я не хотел разламывать существующую модель, чтобы сделать ее донором для следующей версии. Второго мотора от струйного принтера у меня не было, и я заказал аналог с Китая. Правда, ошибся с названием модели, и мне пришел мотор примерно в три раза больше по размерам и мощности. К нему потребовался другой Н-мост, рассчитанный на более высокие токи. И он у меня уже есть. В итоге следующая модель будет довольно «злая». Но я уже знаю, как разместить компоненты, чтобы не сильно увеличивать ее габариты.

Автор: Владимир Васяев

P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на нашу страницу в VK или на Telegram-канал, чтобы узнавать обо всех публикациях и других новостях компании Maxilect.

© Habrahabr.ru