Полностью напечатанный на 3D-принтере танк:создайте универсальную гусеничную платформу для роботов
В уроке я покажу вам, как я построил супер крутую радиоуправляемую гусеничную машину, роботизированную платформу или танк, что угодно. Я разработал эту штуку с нуля, чтобы ее можно было полностью распечатать на 3D-принтере, чтобы вы могли легко распечатать все и построить самостоятельно.
Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.
Обзор
Моей целью в этом проекте было создание универсальной платформы, которая могла бы преодолевать различные типы местности и использоваться для различных приложений. Лучшим вариантом для этого было использование системы непрерывных гусениц. Гусеницы распределяют вес автомобиля на большую площадь поверхности, что обеспечивает отличное сцепление с дорогой и снижает вероятность застревания в мягкой почве, грязи или снегу.
Робот-платформа неплохо едет по грязи, жаль, что не удалось опробовать ее на снегу. Надеюсь, я это сделаю в некоторых из своих будущих видеороликов, где планирую установить роботизированную руку или турель. С помощью роботизированной руки на вершине платформы мы можем выполнять различные задачи, например захватывать и перемещать что-либо, или мы можем установить на нее камеру и использовать ее для визуального осмотра и так далее. Или, например, мы можем сделать турель, которая будет стрелять дротиками NERF, и в сочетании с простым, но крутым светодиодным освещением, которое я уже установил на эту платформу, мы сможем довольно весело с ней играть.
Что касается подвески, я использовал систему подвески Christie, которая уже много лет используется в танках. При такой установке каждое опорное колесо имеет индивидуальную подвеску или пружину и амортизатор.
Это позволяет машине плавно двигаться по неровной местности и преодолевать препятствия, сохраняя при этом хороший контакт гусениц с поверхностью.
Для управления танком, напечатанным на 3D-принтере, я использую дешевый коммерческий радиоуправляемый передатчик, который отправляет команды на платформу.
На платформе у меня есть подходящий RC-приемник, который принимает команды и отправляет их на микроконтроллер. Мозгом этой платформы является плата на базе микроконтроллера Atmega2560, и для простоты соединения всего этого я сделал специальную печатную плату, которую можно просто прикрепить поверх платы.
Тем не менее, теперь пристегнитесь, поскольку я проведу вас через весь процесс создания этой роботизированной платформы, начиная с проектирования, 3D-печати, сборки, подключения электронных компонентов и программирования микроконтроллера.
Разработка платформы робота
Я разработал эту платформу для роботов с помощью SOLIDWORKS, которая также является спонсором этого видео.
— Спонсируемый раздел —
"Следует отметить, что эти ведущие в отрасли инструменты проектирования профессионального уровня теперь доступны всем производителям по удивительно низкой цене - всего 99 долларов США в год или 9,99 долларов США в месяц. Верно, 3D ОПЫТ SOLIDWORKS for Makers отлично подходит для всех, кто изучает эту профессию, создает проекты своими руками и многое другое.
В это предложение входит 3D. ОПЫТ SOLIDWORKS Professional, самого востребованного инструмента САПР в рамках предложения, который запускается локально на вашем ПК. Вы можете хранить файлы локально или в облаке с помощью 3D. Платформа ОПЫТА.
«xDesign», САПР на основе браузера, вы можете использовать его с 3D. ОЗНАКОМЬТЕСЬ С SOLIDWORKS или самостоятельно. Он отлично подходит для моделирования в любом месте, в любое время и на любом устройстве.
«xShape», САПР произвольной формы на базе браузера, которую легко использовать для моделирования поверхностей на любом устройстве.
"Visualize Connected" позволяет легко создавать изображения фотографического качества, анимацию, интерактивный веб-контент и многое другое, чтобы произвести впечатление на свою аудиторию.
«Программист цеха с ЧПУ», CAM для интеллектуальных стратегий обработки для 3-осевого фрезерования и электроэрозионной обработки в простом в использовании пакете.
Нажмите на ссылку ниже, и вы получите специальную скидку 20% — так что вы можете начать зарабатывать с лучшим уже сегодня! Большое спасибо SOLIDWORKS за спонсорство и поддержку подобного образовательного контента.
Купить сейчас: http://www.solidworks.com/makers20
Узнайте больше: https://discover.solidworks.com/3dexperience-solidworks-makers
— Вернуться к теме —
Позвольте мне объяснить, как я придумал дизайн платформы для роботов. Первыми входными параметрами для проектирования были имеющиеся у меня RC-амортизаторы и их размеры.
У меня их было 8, а это означало, что с каждой стороны будет по 4 опорных катка, а их длина в выдвинутом виде с ходом 11 мм составляла 41 мм. В соответствии с этими размерами я хотел получить немного больший вертикальный ход опорных катков, поэтому я придумал этот механизм, который обеспечил мне вертикальный ход опорных катков 16 мм.
Я имею в виду, что я могу увеличить расстояние хода, если переместим соединение амортизатора и тяги опорного колеса ближе к точке поворота тяги опорного колеса, но тогда я потеряю силу пружины или мне понадобится более сильная пружина, чтобы правильно удерживать платформу.
Я провел несколько простых симуляций в SOLIDWORKS, чтобы проверить силы реакции на пружины с различными механизмами, и поэтому выбрал этот механизм, который также обеспечивает хорошую общую компактность.
Если внимательно рассмотреть переднее опорное колесо, то можно увидеть, как оно связано с натяжным колесом, обеспечивающим динамическое натяжение гусеницы. Когда опорное колесо поднимается вверх, окружность гусеницы уменьшается, и натяжение ослабевает.
При таком соединении, когда это происходит, натяжное колесо сдвигается вперед, натягивая гусеницу. С помощью этого соединения мы также можем статически натянуть гусеницу, регулируя этот болт и дистанционную гайку.
На задней стороне находится звездочка, состоящая из трех частей. В нем имеется муфта вала, а также левая и правая части звездочки, соединенные вместе тремя болтами М3.
Ключевым размером звездочки является шаг, поскольку он должен соответствовать шагу гусеницы. Шаг здесь составляет 11 мм, и я выбрал звездочку с 12 зубьями, что дало мне шаг звездочки около 42 мм.
Шаг 11 мм фактически определялся конструкцией гусеницы. Моей целью было сделать звено гусеницы максимально компактным, чтобы его можно было соединить со следующим звеном с помощью всего лишь одной дополнительной детали или штифта, и при этом быть достаточно прочным, чтобы его можно было изготовить на 3D-принтере.
Кроме того, при 3D-печати я хотел избежать использования вспомогательного материала для детали, чего мне и удалось добиться с помощью этой конструкции.
Для соединения звеньев гусеницы друг с другом я планировал использовать штифты диаметром 2 мм, поэтому размер одной стороны составил 2 мм, чтобы обеспечить плотную посадку, а другую сторону - 2,3 мм, чтобы обеспечить свободную посадку, чтобы звенья гусеницы могли свободно вращаться.
Зубья звездочки входят в это отверстие, где штифты гусеницы имеют диаметр 8,8 мм, тогда как диаметр звездочки составляет 9,1 мм, чтобы обеспечить свободную посадку для правильной работы.
Определив все эти детали, я нарисовал в среде сборки эскиз — замкнутый контур вокруг звездочки, натяжного колеса и опорных катков.
Затем я использовал этот эскиз с функцией SOLIDWORKS Chain Component Pattern, чтобы создать все звенья трека вдоль этого контура.
Я спроектировал остальную часть платформы робота, основание, где все подключено, боковые стороны, на которых размещены светодиоды, и верхнюю крышку, в современном и стильном стиле. Поскольку общий размер платформы больше, чем у большинства 3D-принтеров, примерно 400 на 300 мм, я разделил все части на две части, чтобы мы могли напечатать их практически на любом 3D-принтере. Они соединены между собой скобами и болтами М3.
Для сборки всей платформы робота нам потребуются различные болты и гайки М3 и М4, а также несколько резьбовых вставок и подшипников. Полный список всех компонентов, необходимых для этого проекта, вы можете найти ниже в разделе сборки.
3D-модель и файлы загрузки STL
Вы можете получить 3D-модель этого радиоуправляемого танка/платформы-робота, а также файлы STL для 3D-печати на сайте Cults3D.
3D-печать
При 3D-печати, чтобы получить 3D-печатные детали с точными размерами, мы должны использовать настройки «Горизонтальное расширение» и «Горизонтальное расширение отверстия» в нашем программном обеспечении для нарезки. Если мы оставим эти настройки по умолчанию, внешние размеры отпечатков, а также отверстия обычно будут меньше, чем у исходной модели.
Я установил горизонтальное расширение на 0,02 мм, а горизонтальное расширение отверстия — на 0,04 мм. Конечно, вам следует сделать несколько тестовых распечаток, чтобы увидеть, какие значения дадут вам наилучшие результаты на вашем 3D-принтере. Нам нужны точные размеры деталей, чтобы их можно было легко собрать друг с другом и с другими компонентами, такими как подшипники и болты.
При 3D-печати звеньев гусеницы я использовал основу в качестве приклеивания рабочей пластины, потому что их поверхность контакта с опорной плитой немного мала и может плохо прилипать, если адгезия опорной плиты на вашем принтере не так хороша. Особенно при печати больших партий безопаснее использовать плот.
Сборка напечатанного на 3D-принтере танка — платформа гусеничного робота
Итак, вот у меня есть все напечатанные на 3D-принтере детали платформы робота. Честно говоря, чтобы все распечатать, потребовалось довольно много времени.
Например, на печать каждого из базовых разделов ушло около 22 часов, а на печать всех 156 трековых ссылок — около 96 часов. Чтобы всё напечатать, нам понадобится около 200 часов. К счастью, у меня было два 3D-принтера, поэтому на это ушло около 100 часов.
Список деталей
Вот список компонентов, необходимых для сборки этого проекта танка-робота, напечатанного на 3D-принтере. Список электронных компонентов можно найти ниже в разделе принципиальных схем статьи.
- 8x амортизаторов RC …………………………………….. Amazon / AliExpress
- 8 пружин …………………………………………………. Амазон / Алиэкспресс
- 40 шарикоподшипников 624 — 4x13x5 мм ………………… Amazon / AliExpress
- Резьбовые вставки M3 ……………….. Amazon / Алиэкспресс
- Болты и гайки M3 и M4 ………………. Амазон / Алиэкспресс
Болты:
М4х40мм – 8шт; М4х35мм – 2шт; М4х30мм – 8шт; М4х25мм – 2шт; М3х25мм – 16шт; М3х20мм – 8шт; М3х16мм – 10шт; М3х12/14мм – 32шт; М3х10мм – 8шт; М3х8мм – 14шт.
Орехи:
М4 – 25шт; М3 – 30шт.
Шайбы:
М4 – 30шт.
Раскрытие информации:это партнерские ссылки. Как сотрудник Amazon, я зарабатываю на соответствующих покупках.
Начал со сборки основы. Как я уже сказал, он состоит из двух секций, которые соединяются друг с другом с помощью кронштейнов, болтов и гаек М3.
Для крепления боковых кронштейнов я использую вставки с резьбой М3 длиной 5 мм, которые входят в боковину основания. Таким образом, внешняя сторона стены будет чистой, без болтов и гаек, и рельсы смогут проходить рядом.
Затем я закрепил кронштейны крепления амортизаторов с помощью болтов М3.
Затем я устанавливаю подшипники там, где будет вращаться рычаг опорных катков. Подшипники имеют внешний диаметр 13 мм и внутренний диаметр 4 мм, и нам нужно по два таких подшипника на каждое колесо.
В качестве штифта я использую болт М4 длиной 30 мм. Нам нужно поместить шайбу между подшипником и рычагом и закрепить их изнутри самоконтрящейся гайкой. Нам следует следить за тем, насколько сильно мы затягиваем это соединение:не слишком туго, но и не слишком слабо.
Далее можем установить амортизатор. Закрепляем его с помощью болта М1,4, который идет в комплекте.
У меня не было той маленькой отвертки, поэтому для закручивания болта я воспользовался плоскогубцами. Пока кажется, что механизм работает идеально.
Далее мы можем установить опорное колесо на нижнем конце рычага. Опорное колесо состоит из двух секций, чтобы избежать запечатывания опорным материалом. Возможно, его можно было бы распечатать как одну деталь, но я не пробовал, как это получится.
Таким образом нам нужно соединить две секции, и я решил использовать для этой цели стальные стержни толщиной 2 мм, те же самые, которые я буду использовать для соединения звеньев гусеницы. На самом деле это латунный стержень, используемый для сварки, он довольно мягкий и его можно легко обрезать до нужного размера с помощью плоскогубцев.
Я вставил три стержня длиной около 23 мм для каждого колеса, а затем установил два таких же подшипника, которые использовал раньше, с обеих сторон колеса. Снова, как и раньше, с помощью болта М4, шайбы и самоконтрящейся гайки закрепил опорное колесо на месте.
Колесо должно свободно вращаться без люфта на валу.
Теперь нам просто нужно повторить этот процесс для других опорных катков. Что касается переднего опорного катка, то у нас немного другой рычаг, на котором имеется рычаг, обеспечивающий динамическое натяжение гусеницы, но установка та же.
Далее можно собрать механизм натяжного колеса. Он состоит из трех напечатанных на 3D-принтере частей, нескольких болтов и дистанционной гайки.
Прежде чем закрепить первое звено, нам следует добавить на задней стороне самоконтрящуюся гайку М4, к которой мы позже прикрепим натяжное колесо.
В качестве штифтов для этих соединений я использую те же медные стержни диаметром 2 мм. Теперь на втором звене со стороны натяжного колеса мы можем закрепить одну дистанционную гайку М3 длиной 15 мм с помощью болта М3.
С другой стороны ставим болт М3 длиной 20 мм и гайку, которая войдет в дистанционную гайку. С помощью этой настройки теперь мы можем регулировать расстояние между натяжным колесом и рычагом опорного колеса и таким образом натягивать гусеницу как статически, так и динамически. Затем мы можем просто закрепить натяжное колесо на месте с помощью болта М4, и таким образом у нас готова система натяжения, а также вся система подвески.
Хорошо, теперь мы можем собрать звездочку, а для этого сначала нам нужно установить двигатель. Я спроектировал базовую платформу для установки двигателей диаметром 37 мм с центральной или смещенной осью.
Мы можем установить любой двигатель постоянного тока на 12 В с частотой вращения от 20 до 1000 об/мин, конечно, в зависимости от применения роботизированной платформы, но об этом мы поговорим чуть позже в видео. Двигатель закреплен шестью болтами М3.
Чтобы прикрепить звездочку к валу двигателя, сначала нужно подготовить муфту вала, либо установить в нее резьбовые вставки.
Затем мы можем вставить муфту на место и закрепить ее установочным винтом М3.
Затем две части звездочки вставляются и закрепляются тремя болтами М3.
Итак, трансмиссия платформы готова, и теперь пришло время повеселиться со сборкой гусеницы. Да, мне было очень интересно собирать трек.
Ниже мы рассмотрим ссылки на треки поближе, и мы увидим, насколько они просты и понятны.
Они готовы к использованию сразу после 3D-принтера, поскольку при их 3D-печати мы не используем никакой поддержки. Для их соединения нам понадобятся штифты диаметром 2 мм. Как я уже говорил, их легко получить из латунных сварочных стержней диаметром 2 мм.
Внешние отверстия на звеньях плотно прилегают, поэтому нам нужно приложить некоторую силу, чтобы вставить их, но это гарантирует, что они не оторвутся. Внутренние отверстия звеньев имеют свободную посадку, что обеспечивает свободное вращение звеньев гусеницы.
Теперь нам просто нужно заварить чашку чая или кофе и наслаждаться их сборкой в течение нескольких часов. Вы поймете, насколько это весело, когда соедините несколько из них и увидите, насколько крутым получается трек. Всего нам понадобится 78 звеньев гусеницы для сборки одной гусеницы. Что касается длины стержня, нам нужно около 3,5 м на каждую гусеницу, так как длина каждого штифта должна составлять около 43 мм.
Когда гусеница будет готова, мы можем просто обернуть ее вокруг звездочки, опорных и натяжного колеса и замкнуть петлю еще одним 2-миллиметровым штифтом на месте. Здесь можно отметить, что при 78 звеньях натяжение гусеницы оптимальное, хотя последнее опорное колесо немного перемещается вверх.
На самом деле это так, потому что пружина недостаточно сильна. Мы можем немного отрегулировать натяжение пружины, отрегулировав эту гайку на амортизаторе, но этого опять же недостаточно. Поэтому я решил поменять оригинальную пружину, идущую в комплекте с амортизатором, на более прочную.
Заменить пружину довольно легко:нам просто нужно открутить один конец амортизатора, вставить более прочную пружину и снова прикрутить стержень. Пружина у меня была немного шире, чем оригинал, поэтому мне пришлось использовать шайбу М4 внизу. Теперь этой пружине хватило силы, чтобы удерживать опорное колесо на месте при установке гусениц с 78 звеньями.
В итоге я поменял пружины на всех амортизаторах, так как понял, что они не смогут выдержать вес всей платформы. На этом вся система привода платформы, на мой взгляд, получилась неплохой.
При необходимости теперь мы можем отрегулировать натяжение гусеницы с помощью дистанционной гайки на натяжном колесе. Конечно, можно, чтобы гусеница была немного свободной, чтобы она работала правильно. Ослабленная верхняя часть гусениц опирается на кронштейны амортизаторов.
Я подключил двигатель к источнику питания, чтобы проверить, как он будет работать. Мне это казалось идеальным. Это действительно прекрасное чувство — видеть в действии что-то, что ты создал из такого количества напечатанных на 3D-принтере деталей.
Очевидно, нам придется повторить ту же процедуру, чтобы собрать другую сторону. После этого роботизированная платформа готова примерно на 80%. Далее я собираюсь установить боковые панели, которые в основном предназначены для визуального вида.
Закрепляем их на месте с помощью кронштейнов и болтов М3. Наверху подойдите к крышкам, закрывающим платформу. Для этого видео я разработал его таким образом только для внешнего вида.
Как я уже упоминал ранее, в некоторых из моих будущих видео я планирую добавить роботизированную руку или турель поверх этой платформы, а это значит, что мне придется соответствующим образом спроектировать верхние части.
Электроника — принципиальная схема платформы робота
Теперь мы можем перейти к электронике этого проекта. Как я уже сказал, я буду использовать плату на базе микроконтроллера ATmega2560.
Вы можете получить компоненты, необходимые для этого проекта, по ссылкам ниже:
- 2 двигателя постоянного тока 12 В – от 50 до 500 об/мин ………. Амазон / Алиэкспресс
- DRV8871 Драйвер двигателя постоянного тока ……………….…. Amazon / AliExpress
- Arduino MEGA……………….….…..… Amazon / AliExpress
- Аккумулятор LiPo 3S …………………….. Amazon / AliExpress
- Разъем XT60 …………..……… Amazon / AliExpress
- Передатчик FLYSKY RC ……………. Amazon / AliExpress
Раскрытие информации:это партнерские ссылки. Как сотрудник Amazon, я зарабатываю на соответствующих покупках.
Для управления двумя двигателями я буду использовать два драйвера двигателей постоянного тока DRV8871, которые поддерживают ШИМ-управление и пиковый ток до 3,6 А. Рабочее напряжение двигателей постоянного тока составляет 12 В, и мы будем питать все от батареи 3S LiPo с напряжением около 12 В. Я также включил стабилизатор напряжения 5 В, микросхему LM350, чтобы иметь специальный источник питания 5 В для других целей в будущем, например, для подключения к нему серводвигателей. В этом видео мы будем использовать эти 5 В для питания RC-приемника и некоторых светодиодов.
Светодиоды, которые я использую в этом проекте, представляют собой простые светодиоды диаметром 5 мм белого и красного цвета. Я расположил их следующим образом:
Сзади у нас есть два красных светодиода с каждой стороны в качестве задних фонарей, а спереди по три белых светодиода с каждой стороны в качестве фар. Кроме того, на верхней крышке расположены шесть светодиодов дальнего света. Чтобы эти светодиоды правильно светились, нам нужна подходящая схема, включающая резисторы для ограничения тока. Их соединения я объединил как параллельно, так и последовательно.
Например, для передних фар я использую две параллельные линии напряжением 12 В для питания 6 светодиодов, по 3 с каждой стороны слева и справа, которые соединены последовательно. По прямому напряжению и току светодиодов я рассчитал необходимое значение резистора для каждой линии, и оно для данного случая составило 150 Ом. Для активации светодиодов я использую NPN-транзисторы общего назначения на ток 200 мА.
Наконец, я сделал простой делитель напряжения, который буду использовать для контроля напряжения батареи. Проще говоря, напряжение 12 В от батареи падает до уровня ниже 5 В, чтобы оно могло поступить на аналоговый вход микроконтроллера. В программе мы можем перевести значение обратно в реальное значение напряжения и отправить его с RC-приемника на RC-передатчик, где мы сможем увидеть значение на дисплее.
Индивидуальный дизайн печатной платы
На самом деле у меня получилось довольно много соединений, поэтому, чтобы избежать беспорядка, мне пришлось разработать собственную печатную плату для этого проекта.
Печатная плата будет совместима с платой на базе микроконтроллера ATmega2560, которую можно будет установить непосредственно поверх нее.
Я включил стабилизатор напряжения 3,3 В и разъем для модуля приемопередатчика NRF24L01 на случай, если мы захотим управлять платформой с помощью этого модуля. Кроме того, я включил шину 12 В, а также шины 5 В и 6 В с цифровыми контактами, предназначенными для подключения к ним серводвигателей. Питание линии 6 В может осуществляться с помощью внешнего понижающего преобразователя.
Я заказал печатную плату в PCBWay. Здесь мы можем просто загрузить файл Gerber, выбрать свойства нашей платы и заказать ее по разумной цене.
Я не менял никаких свойств по умолчанию, за исключением цвета печатной платы, который я выбрал белым. Вы можете найти и загрузить Gerber в сообществе обмена проектами PCBWay, через которое вы также можете напрямую заказать печатную плату.
Также вы можете скачать файл Gerber здесь:
Тем не менее, через несколько дней пришла печатная плата. Качество печатной платы отличное, все точно так же, как и в дизайне.
Сборка печатной платы довольно проста, поскольку все помечено. Я начал с пайки контактов в нижней части печатной платы для подключения ATmega2560, а затем продолжил с верхней стороны. Для удобства нам следует сначала припаять более мелкие компоненты, такие как резисторы и транзисторы, а затем более крупные, такие как светодиод и разъемы питания.
Я использовал разъемы для всех соединений, потому что это дает возможность вносить изменения, если что-то не работает должным образом. Разъемы внешнего понижающего преобразователя и его рельсов, а также стабилизатора напряжения 3,3В я не припаивал, так как все равно использовать их сейчас не собираюсь. Мне очень нравится, насколько красивой и чистой стала эта печатная плата белого цвета.
Завершение сборки резервуара, напечатанной на 3D-принтере
Итак, сначала мы закрепляем плату микроконтроллера на месте несколькими болтами М3, а затем поверх нее устанавливаем специальную печатную плату.
Теперь пришло время установить светодиоды. Они будут установлены на боковой панели с помощью держателей, в которых размещаются светодиоды диаметром 5 мм. Как описано на схеме, нам следует спаять каждую линейку светодиодов последовательно.
К катоду идет черный провод, к аноду — красный провод. Пропускаем эти провода через небольшое отверстие в боковых панелях, ведущее к печатной плате.
Деталь держателя светодиода спроектирована таким образом, чтобы плотно прилегать к боковой панели, поэтому после установки на место мы получаем красивый и чистый вид.
Светодиоды дальнего света расположены непосредственно на верхней передней крышке.
Для подключения светодиодов я припаял к печатной плате вилки DuPont XH2,54 мм, поэтому к проводам пришлось установить подходящую розетку DuPont. Для этой сумочки нам понадобятся обжимные клещи, но на момент создания этого проекта у меня их с собой не было.
Для этой работы я использовал обычные маленькие плоскогубцы, и соединения получились превосходными. Каждая линия светодиодов должна подключаться к соответствующему разъему, указанному на печатной плате.
Что касается моторов, то у меня не было подходящих разъемов, поэтому я припаивал провода напрямую к ним. Подключение двигателя осуществляется к плате драйвера DRV8871, а затем к печатной плате.
Для радиосвязи я использую передатчик и приемник FLYSKY RC, которые действительно доступны по цене и отлично работают.
Для подключения приемника к микроконтроллеру можно использовать перемычки. Приемник связывается с микроконтроллером через I-BUS и последовательный порт, поэтому нам нужно всего три провода:VCC, GND и сигнальный контакт.
Если мы хотим отправить данные обратно от приемника к передатчику, в нашем случае для мониторинга напряжения батареи, нам также необходимо подключить датчик I-BUS приемника к другому последовательному порту.
Наконец, мы можем подключить аккумулятор LiPo. В зависимости от аккумулятора нам понадобится подходящий разъем. Он подключается к разъему 12 В, а рядом с ним находится разъем ВКЛ/ВЫКЛ, к которому можно подключить переключатель для включения и выключения питания платформы.
Обратите внимание, что перед подачей питания на плату необходимо сначала отключить RC-приемник от питания и с помощью триммера отрегулировать переменное напряжение микросхемы LM350 до 5 В.
Теперь нам просто нужно поставить верхнюю заднюю крышку на место, и мы закончили с этим проектом.
Программирование платформы робота
Теперь нам нужно запрограммировать 3D-печатную платформу танка/робота. Вот код Arduino для этой роботизированной платформы.
/*
3D Printed Tracked Robot Platform - Arduino Code
by Dejan, www.HowToMechatronics.com
Libraries:
IBusBM: https://github.com/bmellink/IBusBM
*/
#include <IBusBM.h>
#define motorLeft_IN1 4
#define motorLeft_IN2 5
#define motorRight_IN1 6
#define motorRight_IN2 7
IBusBM IBus;
IBusBM IBusSensor;
int ch0, ch1, ch6, ch8 = 0;
int motorSpeed, steeringValue, leftMotorSpeed, rightMotorSpeed = 0;
int ledBlinkPeriod = 50;
int isOn = LOW;
unsigned long time_now = 0;
void setup() {
Serial.begin(115200);
IBus.begin(Serial1, IBUSBM_NOTIMER); // Servo iBUS
IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // Sensor iBUS
IBusSensor.addSensor(IBUSS_INTV); // add voltage sensor
// DC motors control - set them stationary
// Left track
digitalWrite(motorLeft_IN1, LOW); // PWM value
digitalWrite(motorLeft_IN2, LOW); // Forward
// Right track
digitalWrite(motorRight_IN1, LOW); // PWM value
digitalWrite(motorRight_IN2, LOW); // Forward
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
void loop() {
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beam
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
// if PWM is lower than 72, set PWM value to 0
if (leftMotorSpeed < 72) {
leftMotorSpeed = 0;
}
if (rightMotorSpeed < 72) {
rightMotorSpeed = 0;
}
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
// if right joystick goes down > move backward
if (ch1 > 1000 && ch1 < 1420) {
digitalWrite(motorLeft_IN1, LOW); // Direction - Backward
analogWrite(motorLeft_IN2, leftMotorSpeed); // PWM input
digitalWrite(motorRight_IN1, LOW); // Direction - Backward
analogWrite(motorRight_IN2, rightMotorSpeed); // PWM input
}
// if right joystick is in the middle, don't move
if (ch1 > 1420 && ch1 < 1520) {
if (leftMotorSpeed < 75 && rightMotorSpeed < 75) {
digitalWrite(motorLeft_IN1, LOW);
digitalWrite(motorLeft_IN2, LOW);
digitalWrite(motorRight_IN1, LOW);
digitalWrite(motorRight_IN2, LOW);
}
// if right joystick move just left or right, without going up or down, move the tank left or right (only 1 motor move)
else {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
}
// LEDs control
// Headlights and Taillights LEDs control
if (ch6 > 1500) {
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
}
else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
// High beam LEDs control
if (ch8 == 1500) {
digitalWrite(46, HIGH);
}
// If rocker switch in position 3 (2ooo value) - flasing with the high beam LEDs
else if (ch8 == 2000) {
if (millis() >= time_now + ledBlinkPeriod) {
time_now += ledBlinkPeriod;
if (isOn == HIGH) {
isOn = LOW;
}
else {
isOn = HIGH;
}
digitalWrite(46, isOn);
}
}
else {
digitalWrite(46, LOW);
}
// Monitor the battery voltage
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // Convert the reading values from 5v to suitable 12V
// Send battery voltage value to transmitter
IBusSensor.loop();
IBusSensor.setSensorMeasurement(1, voltage * 100);
}Code language: PHP (php) Обзор кода
Итак, с помощью библиотеки IBusBM читаем входящие данные от RC Transmitter.
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beamCode language: JavaScript (javascript) Правый джойстик, каналы 0 и 1, используются для управления движением платформы, два кулисных переключателя, каналы 6 и 8, для управления светодиодами.
Преобразуем входящие данные в значения, подходящие для ШИМ-управления двигателями постоянного тока, а именно от 0 до 255.
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);Code language: JavaScript (javascript) Мы отправляем значения ШИМ драйверам и двигателям, используя функцию AnalogWrite() соответствующим образом.
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}Code language: JavaScript (javascript) В целом код не такой уж и сложный, поскольку сама платформа робота не имеет сложных функций.
Тестирование 3D-печатного робота – платформа гусеничного робота
Загрузив код, мы сможем включить платформу робота и RC-передатчик для его тестирования. На дисплее передатчика мы можем увидеть напряжение LiPo батареи, а также напряжение приемника и передатчика.
И вот оно. С помощью правого джойстика мы можем управлять движением платформы. Левым кулисным переключателем мы управляем светодиодами фар и задних фонарей, а правым 3-позиционным кулисным переключателем — светодиодами дальнего света. Светодиоды дальнего света имеют два режима:всегда включенный и мигающий.
Здесь можно отметить, что двигатели, которые я установил, на самом деле немного недостаточно мощные для этой платформы.
Мы видим, что для того, чтобы гусеницы начали двигаться, достаточно, чтобы джойстик оказался почти вверху. Кроме того, я могу очень легко остановить трассу рукой. Система подвески и сами гусеницы вызывают большое напряжение и сопротивление моторов. Скорость этих двигателей составляет 888 об/мин, что хорошо с точки зрения скорости, но это двигатели меньшего размера, рассчитанные на ток чуть менее 500 мА.
Итак, я заменил их другими моторами большего размера, которые у меня были, но на самом деле я получил почти те же результаты. Хотя это были более мощные двигатели, их снижение скорости было меньше или у них была более высокая частота вращения — 1280 об/мин, поэтому я получил те же результаты.
На самом деле они не так уж и плохи. Роботизированная платформа с ними работает вполне хорошо.
Честно говоря, ездить на этой штуке действительно весело, особенно когда светодиоды мигают и перегорают или пончики.
Однако веселье длилось недолго:как только я вынес его на улицу, он очень быстро перестал работать. Проблема в маломощных моторах, это верно, но еще и в конструкции гусениц. В них легко скапливается грязь в местах расположения зубьев звездочки.
Итак, я изменил их дизайн, чтобы на другой стороне было отверстие, через которое могла проходить грязь. Я также сделал звездочку немного меньше, сместив ее на 0,2 мм, чтобы обеспечить более свободное прилегание между ней и гусеницей.
Я собрал все заново с помощью этих обновлений, и теперь платформа могла выезжать на улицу. Хотя маломощные моторы снова стали проблемой. Платформа время от времени заваливалась и не могла идти в гору. Итак, я предлагаю приобрести двигатель со скоростью не более 500 об/мин и более мощный с номинальным током не менее 1 А или 2 А.
На самом деле я пробовал платформу с более мощными моторами. Их скорость составляла всего 20 об/мин, что явно было слишком медленно для развлечения и приготовления пончиков, но платформа теперь напоминала настоящий танк. Он может пойти буквально куда угодно.
Моторы со скоростью 20 об/мин были достаточно мощными, чтобы преодолевать любые препятствия. Они были очень медленными, но, возможно, они подходят для некоторых конкретных приложений. Я бы предложил, если нам нужны более низкие скорости для двигателей со скоростью около 50 об/мин, а для более высоких скоростей — около 500 об/мин.
Надеюсь, вам понравилось это видео и вы узнали что-то новое. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже. Не забудьте подписаться на будущие обновления и проверить мою Коллекцию проектов Arduino.
Производственный процесс
- Ткань с лосьоном
- Робот с подвижной сигнализацией
- Конечная таблица ЧПУ Zen Garden
- Arduino воспроизводит национальный гимн Индии
- Что такое сверлильный станок с ЧПУ?
- Датчик отслеживания линии с RPi
- Представляем сварочный аппарат для швов тормозных колодок
- Система оповещения об уровне воды
- R2D2pi
- Типы ветряных турбин