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

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

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

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

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

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

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

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

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

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

Мощности прибавилось процентов на 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 мм, поэтому колесо на такой узкой опоре начало болтаться. Чтобы этого избежать, я перешел на двухрядные подшипники. Увеличил ширину поворотного кулака, но тем самым убрал лишние люфты.

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

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

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

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

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

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

Тормоза

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

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

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

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

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

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

“Изнанка” пульта управления

“Изнанка” пульта управления

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

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

Желтая - кнопка “ручника”.

Желтая — кнопка “ручника”.

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

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

А что дальше?

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

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

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

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

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

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

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

Наши статьи по теме:

Все статьи

Связаться с нами

Мы свяжемся с вами в течение 24 часов.