Привет, меня зовут дядя Вова. Вероятно, вы уже читали мои статьи про тестирование. Но сегодня хочу рассказать вам о проекте, не связанном с работой — о радиоуправляемой машинке, которую я разрабатываю с нуля.
Когда‑то в статью моих коллег про хобби на удаленке попало начало рассказа об этом проекте, но сегодня хочу осветить разработку целиком. Это не тиражируемый конструктор, не кит‑комплект и не готовая модель на продажу. Но бегает она очень неплохо и в отличие от аналогов лишена лага радиоуправления. Скорее всего проект будет развиваться дальше.
Разработка собственной радиоуправляемой машинки с нуля началась с исполнения одной детской мечты. Как я уже когда‑то рассказывал, дожив до 30 лет, так и не успел поиграться с игрушечным транспортом на дистанционном управлении. Поэтому, вполне успешно покоряя бездорожье на собственном автомобиле, все‑таки купил модельку на батарейках.
Поведение радиоуправляемой модели на препятствиях из одеяла и ковриков чем‑то похоже на обычную машину — ее можно заставить буксовать или вытащить в раскачку. Как автомобилисту, мне было интересно попробовать различные маневры без необходимости куда‑либо ехать. Плюс в том, что проверить свои теории можно практически сразу, как только они приходят в голову. Но покупной машинке явно не хватало мощности. С этого начались апгрейды.
Первым делом я высадил две пальчиковых батарейки, которые были установлены в корпусе, и заменил их одним аккумулятором 18 650. Уже на этом этапе пришлось избавиться от бутафорского кузова и корпуса механики, который и являлся держателем батареек. С последнего я тогда снял все размеры и перепечатал под форм‑фактор 18 650.
Мощности прибавилось процентов на 20 (не удивительно — минимум 3.7 В аккумулятора 18650 против 3 В двух пальчиковых батареек). А по субъективным ощущениям машинка поехала чуть ли не в два раза лучше. Но теперь уже не хватало сцепления с поверхностью — колеса слишком легко срывались и буксовали. Так что на следующем этапе я распечатал на 3D-принтере покрышки побольше из TPU.
Колеса большого размера вполне предсказуемо нивелировали прирост мощности. С этим надо было что‑то делать. Хотелось более низкой передачи, так что я начал задумываться о создании собственного редуктора. Этот агрегат легко напечатать, но он уже не влез бы в старый «заводской» корпус модели. Так что пора было начинать всю разработку с нуля. Как минимум потому, что некоторые вещи проще сделать заново, чем переделывать.
С этими мыслями я сел прототипировать.
Редуктор
Первым делом я собрал прототип редуктора с несколькими валами и понижением 1 к 14. Благодаря такому серьезному понижению я мог бы использовать в своем агрегате достаточно слабый моторчик от оригинальной машинки — рукой его было уже не удержать.
По мощности — то, что нужно, но габариты редуктора были слишком большими. Так что в итоге я остановился на более компактном варианте с прямой передачей и понижением 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 довольно точный датчик дистанции, который показывает расстояние до сантиметра. Изначально брал его для гаража, чтобы повесить на стене что‑то типа обратного парктроника — сделать экран с отображением расстояния от этой стены до бампера, заметный с водительского места. Но гараж поменял и теперь это уже не актуально.
Я не хотел разламывать существующую модель, чтобы сделать ее донором для следующей версии. Второго мотора от струйного принтера у меня не было, и я заказал аналог с Китая. Правда, ошибся с названием модели, и мне пришел мотор примерно в три раза больше по размерам и мощности. К нему потребовался другой Н‑мост, рассчитанный на более высокие токи. И он у меня уже есть. В итоге следующая модель будет довольно «злая». Но я уже знаю, как разместить компоненты, чтобы не сильно увеличивать ее габариты.
Автор: Владимир Васяев