После того, как я научился работать с Arduino, было решено построить робота. У меня не было, какой — либо конкретной идеи в голове, так что я напряг свой мозг (и Интернет) для поиска классных идей робота. В конце концов, мне пришла в голову идея создать робота, который может лазить по деревьям. Сначала пришлось отказаться от этой идеи, так – как это было выше моего уровня квалификации, но после дальнейших размышлений, и некоторых работ в Sketchup, я решил взяться за эту идею. Эта статья — результат моих усилий.
Проектирование
Я начал создавать базовый дизайн робота в Sketchup. Робот должен состоять из 2-х сегментов, соединенных позвоночником, который может сдвигаться и раздвигаться. Каждый сегмент будет иметь четыре ноги с очень острыми когтями. Чтобы робот мог подняться, когти должны хорошо сцепляться с корой дерева. Когда позвоночник будет сдвинут, робот будет висеть на когтях нижнего сегмента, после чего позвоночник раздвинется, когти верхнего сегмента зацепятся за дерево, нижние когти отцепятся, позвоночник задвинется, подтянув к себе нижний сегмент, нижние когти снова зацепятся за дерево, верхние отцепятся, и весь цикл повторится снова.
Видео:
Мой начальный дизайн (показан на изображении выше), все четыре ноги в каждом сегменте находятся под контролем одного двигателя. Я решил не использовать эту идею по нескольким причинам. Во-первых, я не мог найти цилиндрические зубчатые колёса необходимые для соединения ног вместе. Во-вторых, при таком дизайне, робот будет иметь плохое сцепление на неровных поверхностях. Наконец, я решил, что на каждый ряд ног, каждого по отдельности сегмента, будет приходиться свой двигатель.
Позвоночником робота служит резьбовая шпилька. Шпилька крепится к сегментам с помощью гаек, в которых она может спокойно вращаться, сдвигая или раздвигая сегменты, друг от друга.
Инструменты и материалы
Контролер:
- Arduino Uno (или любой другой)
Драйвер моторов:
- 3шт. L298HN — они могут быть получены бесплатно в качестве образцов от ST.
- Макетная плата.
- Винтовые клемники.
- Провода
- 3шт. алюминиевые радиаторы
- Термопаста
Питание:
- 9В батареи (для питания Arduino)
- 12V Li-Po или Li-Ion аккумулятор (я взял батареи из ноутбука, так что даже не придется покупать зарядное устройство).
- 5V регулятор (для регулирования мощности двигателей)
- Клипса для 9V батареи.
- Разъём для подключение питания к Arduino/
Другая электроника:
- 4шт. Мотор редуктор.
- 4шт. Тонкие линейные энкодеры (датчиками поворота для ног).
- Выключатель питания.
- 2шт. Мини переключатели мгновенного действия (концевой выключатель).
- 3шт. 10K резисторы (подтягивающие).
- Провода.
- Термоусадочные трубки.
Аппаратные средства
- 12 ‘3/4 «х 1/8» алюминиевые профиль.
- 6 «х 3» Лист акрила (К нему крепится электроника).
- 6шт. Стойки для плат с винтами.
- Резьбовая шпилька и соответствующая гайка.
- 2шт. 1 «х 3/16» стальной стержень.
- 1 «х 3/16» латунные трубки.
- 4X 5мм крепёжные винты.
- 4X 3/32 винты (для крепления двигателей)
- Много шестигранных болтов и гаек.
- Пластиковые трубочки.
- 4Шт. гайки.
- 5-минутный эпоксидный клей.
- Лист алюминия.
- Изолента.
- Подшипники.
- 3/4 «пластиковый уголок.
- Шлейф (провод).
- Швейные иглы большого размера
Инструменты:
- Электрическая дрель Ножовка.
- Паяльник.
- Плоскогубцы.
- Шестигранный ключ.
- Отвертки.
- Приспособление для зачистки проводов.
- Тиски.
- Правитель.
- Молоток
Драйвер моторов
Контроллер двигателя для этого робота базируется на двойном полумосте L298HN.
Схема драйвера показана на фото выше. Важное примечание: для того чтобы двигатель не перегрелся, к задней стенки микросхемы L298HN необходимо прикрепить алюминиевый радиатор для отвода тепла, место стыка необходимо промазать теплопроводной пастой.
Каждая микросхема L298HN может управлять двумя двигателями, в 2-х направлениях, с током до 2Ампер.
Питание
Робот снабжен двумя источниками питания, 9V батареей для питания контролера и 12V Li-Pol аккумулятором для питания двигателей.
Я хотел, избежать необходимости покупать дорогие Li-Po / Li-Ion аккумуляторы и зарядное устройство, так что я остановился на батарее из ноутбука. Я разобрал батарею и увидел, что она состоит из маленьких (по 3,7V аккумуляторов). Они были организованы в парах соединённых параллельно. Чтобы уменьшить размер пакета, но оставить прежнее напряжение, я удалить один аккумулятор от каждой пары. Затем я завернул аккумуляторы вместе изолентой, чтобы они держат свою форму, и припаял выводные провода.
Для питания Arduino я использовал внешний преобразователь напряжения на м/с 7805.
Лапы
Лапы являются одними из самых важных частей этого робота, их дизайн определяет, то, как робот будет хвататься за деревья. Робот имеет четыре пары лап, каждую пару контролирует один двигатель.
Лапы робота имеют «U» образную форму, и сделаны из алюминиевого профиля, концы которого загнуты под углом 90 градусов.
Когти
Для захвата дерева, робот имеет очень острые когти на конце своих лап (где же еще?). Когти сделаны из швейных игл большого размера, которые вы можете купить в вашем местном швейном магазине. Чтобы прикрепить их к ногам, я сделал зажимы из алюминия. В алюминиевых полосках, и продавил тонкие канавки, чтобы иглы (когти) не съезжали в сторону. Пластины притягиваются к лапам с помощью шестигранных болтов. Длину когтей необходимо подбирать экспериментальным образом, для того чтобы установить необходимую длину нужно ослабить болты — зажимы и вытянуть или вдавить иглы.
Крепление вала мотора
Следующим шагом является установка валов двигателей. Для этой работы идеально подходят 5мм монтажные ступицы. Чтобы их закрепить, я просверлил четыре отверстия, на одной стороне каждой пары лап, и ввернул в них винты. Для крепления вала двигателя на лапах, нужно просто выстроить плоскую сторону вала двигателя с винтом в ступице и затянуть винт.
Крепление мотора и лап
Следующим шагом является скрепление моторов и лап. Двигатели скреплены между собой с помощью алюминиевой пластины, в ней были просверлены отверстия по размерам винтов крепления на двигателе. Двигатели удерживается на месте с помощью шестигранных винтов.
Противоположные, свободные стороны лап скреплены подобным образом. Задняя алюминиевая пластина нужна, для того чтобы лапы не перекашивало во время их вращения. В лапах и в самой пластине, напротив валов двигателей просверлены отверстия. Через пластину вставлен болт с шайбой и контргайкой, чтобы удерживать лапы вместе и позволить им свободно вращаться.
Переднее и заднее крепление скреплены между собой с помощью ещё одной алюминиевой пластины. К этой же пластине крепятся блок электроники и аккумулятор.
Вся конструкция понятна из фото.
Как лишь оба сегмента робота были построены, я решил проверить их способность хвататься за деревья, методом прямого подключения двигателей к батарее. К счастью испытания прошли хорошо, иначе пришлось бы что-нибудь переделывать.
Платформа электроники
Платформа представляет собой лист акрила размерами 3 на 6 дюйма (76 на 152мм). Я просверлил в ней шесть отверстий и ввернул в них резьбовые стойки, чтобы закрепить Arduino и контроллер двигателя. Сама платформа крепится над двигателями с помощью четырёх болтов.
Датчики поворота
Датчики вращения являются ключевыми в функционирования этого робота. Робот имеет один датчик вращения на двигатель, так что робот знает точное положение каждой ноги в каждый промежуток времени, что позволяет точно контролировать лапы. Для своего робота, я использовал четыре очень тонких энкодера.
В решение, которое я придумал, с одной стороны энкодер крепится к внутренней стороне лапы к выступающим головкам винтов. На другой стороне, на конец болта, который держит ногу на месте.
Магистральный мотор
Для перемещения вверх и вниз по дереву, робот, вращая резьбовую шпильку, с помощью магистрального мотора, сближает или удаляет друг от друга нижний и верхний сегменты. Когда стержень вращается по часовой стрелке, два сегмента сближаются, и отталкиваются, когда стержень вращается против часовой стрелки. Чтобы вращать стержень, нужен относительно высоким крутящий момент при невысокой скорости двигателя, который будет работать при напряжении в 12V.
Двигатель закрепляется на роботе, на алюминиевом уголке «L» формы. В уголке просверлено одно большое отверстие, для вала двигателя и два небольших для крепёжных винтов.
Установка позвоночника
Есть несколько особенностей монтажа позвоночника робота. Во-первых, шпилька, играющая роль хребта, должна быть хорошо соединена с валом двигателя, во-вторых, один из её концов должны иметь подшипник, в котором вал позвоночника будет вращаться.
Резьбовой вал вместе с подшипники можно снять со старого матричного принтера
Вал крепится к оси двигателя, с помощью гибкой нейлоновой трубочки, её необходимо разогреть и натянуть на вал двигателя, а далее на шпильку. Если достаточно плотного контакта между валом и трубочкой не получается – то соединение нужно усилить пластиковым хомутиком.
Монтаж нижнего сегмента и резьбовой шпильки
Второй конец резьбовой шпильки должен проходить через гайку, расположенную на нижнем сегменте робота. Для удобства монтажа, я использовал длинную гайку. Чтобы закрепить её на месте, я отрезал 2 пластины алюминия длинной примерно 4 дюйма, эти пластины позже станут опорами для полозьев. Сверху гайка прижимается ещё одной пластиной с помощью болтов.
Полозья
Ещё одним важным моментом является то, что верхний и нижний сегменты робота недолжны, вращаться друг относительно друга. Для решения этой проблемы я пропустил по правому и левому краю корпуса, два алюминиевых прутка. Один конец которых жёстко закреплён на верхнем сегменте робота, а другой свободно входит, в закреплённую на нижнем сегменте, латунную трубку, тем самым удерживая сегменты в одной плоскости
Для монтажа стальных стержней и латунных трубок к ним, я сделал зажимы похожие на зажимы когтей. Чтобы сделать такие зажимы стержней такого большого диаметра, я сжал 2 квадрата из алюминия вместе и просверлил между ними отверстие равное по диаметру прутку. Квадраты прижимаются к креплениям полозьев с помощью 2-х винтов.
Подключение электроники робота
Следующим шагом будет соединить все электронные компоненты робота вместе. Я начал с пайки длинных проводов к двигателю. Далее, подсоединил энкодеры на лапах. Я сделал это с помощью проводов от старого IDE кабеля. Четыре сигнальных провода от них были подключены к аналоговым входам Arduino A0 — A3.
Так как робот является автономным, ему необходим выключатель, с помощью которого его можно было бы заставить отцепиться от дерева. Для этого, я использовал простой ползунковый переключатель (ниже в списке он представлен как управляющий переключатель) подключенный к цифровому входу Arduino.
Далее, подключаем Arduino к драйверу мотора.
Подключаем провода следующим образом:
Концевой переключатель
Так как на позвоночнике моего робота установлен двигатель постоянного тока вместо сервопривода или шагового мотора, робот не может знать степень расширения позвоночника в тот или иной промежуток времени. Таким образом, концевые переключатели созданы, чтобы предотвратить чрезмерное расширение или сближение позвоночника.
Позвоночник имеет два концевых переключателя. Один замкнут, когда два сегмента робота слишком близки друг к другу, а другой, напротив, нажат когда позвоночник растянут слишком сильно.
Оба переключателя подключаются к +5V, сигналы от них идут на A4 и A5 порт Arduino.
Держатель батареи
Последняя механическая часть этого проекта заключается в создании держателя батареи, она должна легко сниматься для замены или зарядки.
Идеальное место для монтажа 9V батареи — прямо над Arduino, я сделал крепление для неё из какой-то металлической пластины изолированной с одной стороны. Этот кусок металла я согнул в форме буквы «U» под размер 9V батареи, прикрутил его над платой Arduino,а далее поставил батарею на место.
Крепление большой 12V батареи, я вырезал из какого-то мягкого пластика. Аккумулятор держится на месте за счёт трения
Программа
Чтобы залезть на дерево, робот должен сделать серию простых движений. Цикл работы был описан в начале статьи. Для удобства программирования, я написал функции основных движений. Они заключаются в следующем:
- Разжать верхние лапы
- Зажать нижние лапы
- Зажать верхние лапы
- Разжать нижние лапы
- Раздвинуть модули
- Сдвинуть модули
Объединив эти функции в правильном порядке, можно заставить робота подняться или спуститься с дерева.
Алгоритм разжатия лап, как верхних, так и нижних, очень прост. Двигатели лап нужно заставить вращаться наружу, до тех пор, пока лапы не раскроются полностью. Алгоритм зажатие лап на дереве является более сложным, так — как деревья различаются по диаметру, ноги должны быть в состоянии захватить широкий спектр диаметров без перепрограммирования робота. Чтобы выяснить, когда нужно прекратить подачу электроэнергии на двигателях, контроллер сначала должен вычисляет скорость, с которой лапы движутся в направлении дерева. Этого можно добиться, замеряя положение потенциометра каждые 0,05с. Программа вычитает предыдущее значение потенциометра от текущего значения, чтобы найти расстояние, лапами за период времени. Когда расстояние от лап до дерева становится близкой нулю, то это означает, что лапы охватили дерево и начинают замедляться. Затем контроллер прекращает подачу электричества на двигатель, чтобы предотвратить поломку двигателя и редуктора.
Последняя часть программы создана для ручного управления поведением робота. Если вы посмотрите на приведенный выше цикл движения, вы заметите, что робот прицеплен к дереву. Что в свою очередь затрудняет удаление, так что я установил на робота переключатель для ручного управления поведением робота. В то время когда цепь выключателя разомкнута, робот держится за дерево, тем или иным модулем лап, как лишь цепь замыкается, все лапы робота отцепляются от дерева, и его можно легко снять.
Прикрепленные файлы:
- tree_robot.pde (5 Кб)