Автор Instructables под ником droiddexter сделал довольно сложную самодвижущуюся модель. Это робот, которым можно управлять с ноутбука. Для управления перемещением платформы используется клавиатура, а руке-манипулятору оператор может подавать команды с джойстика, подключённого к тому же ноутбуку. Джойстик применён типа Logitech Attack 3, но подойдёт и другой аналогичный. Макетные платы типа breadboard и перемычки с разъёмами типа DuPont (хотя теперь их производят и другие компании) позволяют быстро переконфигурировать и модифицировать конструкцию робота, а также его состав.
Приложение, работающее на ноутбуке, повторяет на экране в трёхмерном виде текущее положение руки-манипулятора, а также выводит в текстовую консоль информацию обо всех её перемещениях. Программа написана на C++ и имеет простую событийную архитектуру.
Поскольку droiddexter применил в самоделке много деталей от металлического конструктора (Meccano или его клон), он приложил иллюстрацию с перечнем этих деталей и их цифро-буквенными обозначениями. На фотографиях узлов робота он привёл рядом с деталями от конструктора соответствующие им обозначения из этого перечня.
В устройстве применены сразу две платы Arduino: одна Uno (в роботе) и одна Nano (подключена к ноутбуку). К каждой из этих плат подключено по 2,4-гигагерцовому модулю NRF24L01 через стандартные переходники со встроенными стабилизаторами на 3,3 вольта и блокировочными конденсаторами. Источников питания — вообще пять: две 12-вольтовых батарейки, две 9-вольтовых, и один 8,8-вольтовый литий-полимерный аккумулятор. Таким странным способом droiddexter вспомнил BigTrak, известный у нас как Электроника ИМ-11. Там, правда, источников питания всего два. Перемычек типа DuPont мастер взял 120 — по 40 штук каждого из трёх типов. Сервоприводы — двух видов: TowerPro MG995 — четыре штуки, TowerPro SG90 — одна штука. Ещё нужны: пятивольтовый стабилизатор (любой, хоть 7805, но лучше импульсный) и два коллекторных электродвигателя на 500 оборотов в минуту с редукторами.
Следом droiddexter приступает к подбору механических компонентов. Он берёт два деревянных бруска длиной в 540 мм, глубиной в 60 мм и шириной в 25 мм, листы стеклопластика (требуют защиты рук и органов дыхания при обработке), упомянутый выше металлический конструктор (потребовалось целых два набора), четыре колеса диаметром в 100 мм и толщиной в 20 мм, рассчитанные на 6-миллиметровый вал, два держателя с подшипниками и валами для тех колёс, которые вращаются свободно, а не приводятся во вращение электродвигателями, шесть держателей сервоприводов и два держателя двигателей с редукторами для оставшихся двух колёс.
Конструкцию робота droiddexter поделил на крупные модули. Любой из них можно снять, а затем переконфигурировать, починить (что очень удобно — не надо класть на стол всю модель) или заменить на другой, выполняющий иную функцию.
На данный момент модулей в роботе четыре, они показаны на рисунке A. Третий и четвёртый модули держат на себе передние и задние колёса, а также рулевой механизм в сборе. Первый и второй модули соединяют третий и четвёртый между собой, второй модуль также несёт на себе две 12-вольтовые батареи, питающие двигатели привода колёс и серводвигатели. Батареи приклеены клеем для дерева.
Ещё одна функция первого модуля — дополнительно поддерживать рулевой механизм в сборе. Иначе под действием довольно сильных нагрузок он деформируется. Поэтому в состав первого модуля входит выступающий вперёд деревянный брусок, в то время, как второй соединён с рулевым механизмом нежёстко — двумя пружинами и шарниром.
Для увеличения прочности droiddexter рационально применил в рулевом механизме детали как из стеклопластика, так и из стали.
На рисунке A1 крупно показан вид сверху на модуль 4. Узел A1:1 несёт на себе электронную часть робота. На куске стеклопластика закреплены макетная плата и Arduino, остальную электронику droiddexter прикрепил к A1:1 напрямую. Для этого он взял L-образный зажим и две детали AB-7, закреплённые на нём болтами и гайками.
Узел A1:2 держит задний привод.
Узел A1:3 состоит из двух деревянных брусков, которые droiddexter приклеил к раме клеем для дерева, чтобы модули 1 и 2 несли на себе все части робота.
Узел A1:4 несёт дополнительную электронику для управления электродвигателями перемещения робота.
Теперь посмотрим на модуль 4 снизу — рис. A2. Узел A2:1 — это главный сервопривод рулевого механизма. Два из трёх сервоприводов робота отвечают за руление. Их droiddexter разместил на листе твёрдого картона и прикрепил снизу к передней стороне модулей 3 и 4, прибив гвоздями к раме.
Узел A2:2 — это одна из частей рулевого механизма, которую droiddexter соединил с сервоприводами, а также с модулем 4. Также на ней расположены передние колёса робота.
На рисунках с A3 по A6 крупно показаны, соответственно, узел A1:3, модуль 4, узел A1:1 и узел A2:2 — рулевой механизм.
Механизм этот, в свою очередь, состоит из трёх основных составляющих: собственно механической части, меняющих под действием сервоприводов положение передних колёс, самих сервоприводов, а также пружин, поддерживающих всё это в вертикальном положении. На рисунке B0 показана эта система пружин. Вначале droiddexter построил рулевой механизм без стеклопластикового несущего элемента. Получилось непрочно. При езде на быстрой скорости механизм сломался, а металл погнулся. Со стеклопластиком прочность возросла, а пружины придают конструкции гибкость, принимая на себя усилия, которые иначе могли бы её разрушить. Руление становится плавнее, а при столкновении не происходит передача разрушающего усилия на сервоприводы. Добавив держатели пружин в узел B0:1, droiddexter решил, что шарниры можно закрепить так же.
На рис. B1 показано то же самое, но с другого ракурса. Дополнительные крепления стеклопластика добавлены после первых испытаний, приведших к поломкам. К деталям A-11, A-7, A-5 droiddexter добавил подобия рёбер жёсткости. Узел B1:3 — это держатель колеса с осью и подшипником, соединённый с L-образным зажимом; этими колёсами производится руление. B1:2 — одно из колёс, они весьма прочные и обеспечивают достаточный клиренс.
Узел B2:1 — это деталь A-5, соединённая с сервоприводом двумя болтами и гайками. Шайбы обязательны. B2:2 и B2:3 — металлические полоски, усиленные рёбрами жёсткости. B2:4 — шарнир, к которому для надёжности добавлены шайбы и детали TW-1.
По последующим рисункам с B3 по B14:
B5:1 — прорезь, сделанная, чтобы при поворотах на большие углы рулевой механизм не упирался в брусок. В качестве B5:3 можно применять только качественные L-образные зажимы. В них droiddexter сделал по два отверстия для крепления к дереву. Зажимы он выставил точно параллельно остальным деталям. B5:2 — это стопка из стеклопластиковых квадратиков с каждой стороны L-образного зажима.
Порядок расположения компонентов следующий. Если считать сверху: R-8, маленькая пружинка, PY-2 с прикреплённым к нему T-1, три слоя стеклопластика, L-образный зажим, ещё три слоя, ещё PY-2, пластмассовый держатель, ещё PY-2 с T-1, затем рулевой механизм, затем R-8.
В узле B7:1 деталь AUB-5 предотвращает ослаблению винтового соединения. Узлы с B7:2 по B7:6 — уже знакомые нам многослойные стопки из стеклопластика. В узле B7:7 droiddexter применил короткие болты, чтобы они не задевали вращающиеся части. B7:8, B7:9 — отверстия в стеклопластике для деталей SH-2 (80 мм) и R-8. Узел B7:10 не даёт металлической полоске согнуться, так как детали SQ-25 и A-11 вместе образуют шарнир.
Шарнирный манипулятор может перемещать конечное звено вверх, вниз, влево и вправо, даже если платформа неподвижна. Для перемещения по оси Y применена деталь SH-4 длиной в 127 мм, пропущенная через деревянный брусок. Для перемещения по оси X деталь SQ-25 прикреплена непосредственно к сервоприводу (рис. с C0 по C9).
Для управления частотой вращения двигателя droiddexter применил составной транзистор TIP122, ШИМ-сигнал на который поступает с Arduino. Чтобы менять направление вращения двигателя, droiddexter сделал из небольшого сервопривода оригинальный механический перполюсовыватель. До этого он пробовал H-мост, но тот оказался слишком маломощным. Что помешало применить простое реле, непонятно. Питаются двигатели от двух 12-вольтовых батарей, соединённых параллельно.
По фото очень даже понятно, как устроен и работает переполюсовыватель, но переводчик бы подключился подвижные контакты не прямыми, а спиральными проводами.
Для быстрой переконфигурации все соединения сделаны на макетной плате типа breadboard. Антенну droiddexter расположил сбоку и достаточно высоко. Двигатели перемещения робота, как указано выше, питаются от двух 12-вольтовых батарей, так как подходящие по параметрам литий-полимерные аккумуляторы оказались для мастера слишком дорогими. Серводвигатель устройства смены полярности питается от них же, но через пятивольтовый стабилизатор. Восьмивольтовые литий-полимерные аккумуляторы меньшей ёмкости оказались более доступными для мастера, от них он запитал все сервоприводы — и те, что используются для руления, и те, что установлены в манипуляторе. Эти приводы начинают сбоить, если нагрузочная способность источника питания слишком мала, или к нему подключено ещё много других нагрузок.
Arduino питается от отдельной 9-вольтовой батареи через стабилизатор, установленный на плате штатно.
Конечно, «зоопарк» источников питания, одни из которых надо менять, другие — заряжать, неудобен, но для прототипа сойдёт.
2,4-гигагерцовый модуль, как указано выше, питается от Arduino через специально предназначенный для этого переходник со стабилизатором. Так он работает стабильнее, чем при питании от стабилизатора самого Arduino.
Выводы Arduino использованы так: 6 и 7 — управление сервоприводами рулевого механизма, 2 и 3 — манипулятора, 5 — устройства переполюсовки, 8 — ШИМ для коллекторных двигателей перемещения, 2, а также с 9 по 13 — обмен информацией с 2,4-гигагерцовым модулем.
Всё вместе выглядит так:
Со стороны ноутбука всё совсем просто: Arduino Nano, такой же переходник со стабилизатором и такой же 2,4-гигагерцовый модуль. Питание от 9-вольтовой батареи. Корпус сделан из стеклопластиковых и металлических деталей.
ПО пока не готово, автор поделится им, когда и программная, и аппаратная части выйдут из стадии прототипа. Написано оно на C++ с использованием SDLи обеспечивает показ в трёхмерном виде текущего положения манипулятора, перемещение платформы по командам от клавиш со стрелками, а манипулятора — по командам от джойстика, смену скорости по командам от колёсика на джойстике. Чтобы реакция на команды от джойстика не была слишком резкой, реализовано программное сглаживание. Джойстик передаёт данные о положении осей в диапазоне 0 — 32767, они программно пересчитываются в диапазон 0 — 180 — в таком формате воспринимают команды сервоприводы. Информация передаётся пакетами, каждый из которых состоит из пяти целых чисел с данными о требуемых положениях всех исполнительных механизмов.
Управляя роботом, пользователь может одновременно любоваться такой красивой штукой:
После выхода из стадии прототипа всё будет перенесено с макетной платы на печатную. Составные транзисторы нагреваются довольно сильно, они требуют печатной платы и хороших теплоотводов в первую очередь.
В том, что при обработке стеклопластика необходимо защищать руки и органы дыхания, droiddexter убедился на сосбственном опыте и больше не будет работать с этим материалом без средств индивидуальной защиты никогда!
Забивать гвозди лучше большим количеством слабых ударов, чем наоборот. Мощность дрели выбирать в зависимости от диаметра отверстия и материала — да, понадобится две или три дрели, но нервов сэкономится больше. Чтобы отверстие не сдвинулось, сначала сильно прижать сверло к точке сверления, и лишь затем включить дрель и плавно увеличивать скорость. При работе с любыми инструментами носить перчатки. Прикладывая усилие к отвёртке, следить, чтобы её жало не соскочило на другую руку. Не резать ничего ножом в направлении к себе, только от себя. Не замыкать накоротко источники питания.
И тогда пользоваться любыми своими самоделками вы будете без бинтов, пластырей и гипса!