Разработка структурной схемы робота пылесоса на ардуино
Как сделать робот-пылесос своими руками на Ардуино
Робот-пылесос своими руками Ардуино изготавливается из подручных материалов. Оборудование способно перемещаться по комнате, изменять направление движения после контакта с посторонними предметами и удалять пыль с поверхности пола.
Требуемые компоненты
Для сборки пылесоса на Ардуино потребуются компоненты:
- блок управления;
- отдельный контроллер для управления работой электродвигателей (обозначается на схемах как H-Bridge);
- электрические двигатели постоянного тока с редукторами для привода боковых колес;
- комплект колес;
- источник питания (аккумуляторы или батарейки, суммарное напряжение 5 В);
- турбина (используется узел, предназначенный для охлаждения процессоров или чипов видеокарт);
- адаптер питания (при использовании компонентов, рассчитанных на напряжение 12 В);
- комплект магнитов;
- коммутационный шнур USB;
- комплект кабелей для подключения блока Ардуино к цепям оборудования;
- листовой плотный картон;
- термический клей в тубе;
- пистолет для нанесения клея;
- резервуар для сбора пыли (готовый пластиковый или металлический контейнер);
- пластиковые хомуты;
- металлическая банка от напитков (для изготовления крепежных элементов).
Процесс сборки
Пошаговый процесс сборки робота-пылесоса Ардуино:
- Разложить компоненты конструкции будущего изделия на ровной поверхности для определения взаимного расположения и габаритов корпуса.
- Вырезать из картона круглое основание.
- Выполнить на детали прорези для боковых колес, которые располагаются по поперечной оси симметрии.
- Закрепить электрические приводы колес пластиковыми хомутами к корпусу.
- Прорезать канал для забора воздуха и зафиксировать клеем турбину над полученным окном. Узел крепится на противоположной от двигателей ходовой части стороне поддона.
- Разметить зону установки контейнера для пыли, который размещается над окном с роторным рабочим колесом.
- Установить и закрепить термическим клеем на внутренней части магниты (по предварительно размеченному контуру резервуара для пыли). Ответные магнитные элементы размещаются через лист бумаги на противоположной стороне поддона. Емкость для пыли приклеивается к магнитам, которые плотно прижимаются к боковой поверхности резервуара. Лист бумаги удаляется, коробка удерживается на запланированной монтажной точке взаимным притяжением магнитов.
- Закрепить на верхней плоскости поддона аккумуляторную батарею и контроллер Ардуино. Допускается установка элементов в направляющие узлы, изготовленные из древесины или пластика. Пользователи используют стандартные блоки управления Ардуино, часть владельцев самостоятельно корректирует прошивку микропроцессора путем подключения изделия к компьютеру.
- Разместить блок H-Bridge поверх контроллера и соединить электронику пылесоса с аккумулятором. Для соединения кабелей применяется пайка и установка коммутационных штекеров.
- Подключить электрические двигатели к выводам блоков управления.
- Вырезать картонные заготовки для фронтального бампера. Детали монтируются на передней части корпуса, точка соединения допускает перемещение бампера после столкновения робота с препятствием.
- Припаять отрезки кабеля к прямоугольным жестяным пластинам (требуется изготовить 2 элемента). Металлические пластинки устанавливаются на расстоянии от внутренней стороны импровизированных бамперов. На внутренней поверхности бампера наклеивается фольга, на которую подается положительное напряжение от батареи. При столкновении пластинка соединяется с фольгой и работает как датчик препятствия. В сигнальной цепи от пластины устанавливается дополнительное сопротивление, снижающее риск ложных срабатываний.
Для очистки воздуха от пыли применяется фрагмент от кухонной салфетки, изготовленной из волокнистого синтетического материала. Элемент устанавливается под основанием контейнера пылесборника и удерживается магнитами. В самом контейнере прорезается прямоугольный канал, через который затягивается воздух с пылью. Для регулировки зазора между резервуаром и напольным покрытием применяется сменное дистанционное кольцо из картона или пробки.
Робот пылесос на ардуино
Показано, как делать робот-пылесос. Он автоматически объезжает препятствия и пылесосит, при этом собирает бумажки, крошки различного происхождения.
Нужен стандартный набор для arduino машинки. Берём одну arduino uno, драйвер двигателя l298n, датчик приближенности, старый вентилятор и системного блока компьютера. Сначала взял толстую гофрокартон, вырвали снимок кружок, установил вентилятор, размер. Начал вырезать. Размер восьмиугольника должен быть несколько меньше вентилятора. Затем взял вентилятор и попробовал вставить туда в отверстие. Думал, что контур немного растянется. Но так не случилось. Немного подрезал и только после этого получилось установить вентилятор. Высота вентилятора над столом должно получиться небольшой, около 0,5 см. Только при этом он будет хорошо всасывать пыль. Затем установил двигатели и приклеил всё с помощью термоклея. В том числе и вентилятор. Его нужно клеить после того, как установлены моторы, чтобы видеть необходимо высоту. Практика показала, что хорошо будет всасываться мусор, если высота над столом от 0,5 до 1 см. Затем занялся установкой еще одного колеса, чтобы это система стояла на трех колесах. Третье колесо вращается не будет.
Все элементы пылесоса присоединяется с помощью термоклея. Для подобного устройства такой прочности предостаточно.
Кашаса всасывание мусор зависит от скорости работы, она не должна быть большой. Необходимо вставить глаза. Используем датчик ультразвуковой для arduino.
Кнопка установил сбоку, но практика показала, что это не совсем правильное решение, потому что робот сам себя несколько раз отключал. Он ударился о стену именно этой кнопкой. В принципе, это не совсем классический пылесос, потому что обычно используется коробка. А здесь стоит прямо на всасывание. Но это не ухудшает характеристик. Обратите внимание, что мастер взял обычный вентилятор, не предназначен для того, чтобы сосать были. Он просто дует воздух. Поэтому, если вы хотите создать пылесос, который будет сосать не только бумагу, то нужно установить двигатель помощнее. И придать лопастями необходимую для пылесоса конфигурацию. Весь процесс создания робота занял около 3 часов. Как видите, ничего сложного нет. Самое сложное в этом деле, это программирование. В этом случае мастер программируют лишь немного. Он взял свою машину, который объезжает препятствия, и чуть-чуть изменил, чтобы ограничить скорость передвижения робота. Для этого применил шим выводы на arduino и подключил их соответствующим выводом на драйвере двигателя. Кстати, он не такой и маленький расчёт радиатора. Но у него есть большой плюс по сравнению с другими драйверами двигателей. А именно, вывод на 50. Им очень удобно, сервоприводы а также arduino. Если вам не нравится большой размер этого драйвера, то можно просто взять и убрать оттуда радиатор. Дело в том, что при использовании этих двух двигателей, он греется не сильно. Температура не поднимается выше 40 градусов. Схема получает питание с аккумулятора с через выключатель и nano драйвер двигателя. Сюда же подключен и вентилятор.
Самодельный Робот Пылесос На Ардуино
самодельный робот пылесос на ардуино
Робот пылесос — Часть1: Механика
Наверное, каждый, кто только начинает по-настоящему увлекаться робототехникой, электроникой или программирование, проходя сложный путь изучения сопутствующих технологий, надеется в будущем применить накопленные знания для работы над серьёзным и интересным проектом.
Я вот, например, почитав робофорум. решил собрать робот пылесос. Причина такого выбора не столько в полезности данного устройства, сколько в том что, разрабатывая его, можно сконцентрироваться на конкретной задаче: робот способный автономно убирать мусор при минимальном обслуживании.
Данная статья не является подробным описанием по сборке и настройке робота. В ней я, главным образом, хотел бы изложить свой опыт, полученный во время выполнения данной работы.
Из всей механики робота пылесоса особую сложность в проектировании и изготовлении представляет мусороуборочный узел.
-Занимать как можно меньше места, но при этом иметь вместительный контейнер для мусора.
-Хорошо убирать загрязнения на любых поверхностях, но при этом обладать низким энергопотреблением и уровнем шума.
Прежде чем удалось добиться выполнения всех этих запросов, было перепробовано множество различных вариаций компоновки узла.
Макеты мусороуборочных узлов.
В конце — концов, остановился на схеме: широкая боковая щётка + пылесос. Радиальная щётка, расположенная с правой стороны, загребает мусор к жерлу пылесоса, расположенному по центру. Горизонтально-цилиндрическую щётку, как у Румбы, решил не ставить, так – как она лишь незначительно увеличивает качество уборки, но при этом сильно осложняет конструкцию жерла пылесоса. Устройство пылесосящего узла представлено на фото ниже.
Однако возникает вопрос: Где взять турбину и двигатель для пылесоса?
Можно спаять турбину из стеклотекстолита и жести
Турбина из жести.
Можно взять готовую турбину от большого пылесоса, предварительно обрезав её на токарном станке.
Готовая турбина, обрезанная на токарном станке до нужного диаметра(вентилятор от компьютера для сравнения).
А ещё её можно купить, в виде дешёвого китайского автомобильного пылесоса.
Не сочтите за рекламу, но рекомендую брать именно этот пылесос(kioki), так как в нём гарантировано правильная турбина с мощным двигателем и удобным краплением (при цене, в среднем, 500р). Хотя, что касается двигателя – то его лучше заменить. У стандартного потребление порядка 3А, при замене на двигатель QX-RS-385-2073 с потреблением 1.2А, мощность всасывания падает незначительно, зато робот начинает меньше шуметь и дольше бегает без подзарядки. Что касается самодельных турбин, они хоть и хорошо всасывают, но их довольно сложно отцентрировать так чтобы не было вибрации.
Боковая щётка собрана из двигателя от магнитофона, подключённого к оси с трещоткой (вынул из игрушечного шуруповёрта) через червячную передачу. Кисточки вынуты из половой швабры, и закреплены на диске из стеклотекстолита с помощью секундного клея.
В качестве приводных моторов служат два 25милиметровых моторредуктора, наверное, здесь нужно что-то более подходящее, например переделанные под постоянное вращение сервоприводы, но я поставил то что было под рукой.
Готовых колёс нужного размера не нашлось, поэтому пришлось вырезать их 10милеметровой фанеры и обклеить теплоизоляционной лентой, для лучшего сцепления с поверхностью. Отверстия в колесе – для энкодеров, хотя в конечном счёте я отказался от их применения из-за низкой точности.
Мотоблоки желательно ставить на независимую подвеску. В данной модификации робота я решил проверить, действительно ли она нужна, установив двигатели без подвески, в результате возникли проблемы при заезде на толстый ковёр. Оси двигателей должны совпадать диаметром окружности робота, так будет проще реализовать развороты на месте.
Датчик соударений(далее бампер), сделан из двух переключателей и подвешенной на них полоске из пластмассы согнутой полукругом.
По нормальному бампер должен закрывать собой всю морду робота снизу доверху, но так-так вся мебель у меня одной высоты, то я с этим заморачиваться не стал.
Механика робота в собранном виде.
Для проверки механической части робота была собрана следующая, простая, схема управления:
Робот пылесос — Часть2: Электроника и программа
В конце первой части статьи была представлена электронная схема простого управляющего алгоритма. В этой части будет рассмотрена электронная и программная составляющая системы управления робота, на основе микроконтроллера.
Плата управления построена на микроконтроллере atmega16, изначально она разрабатывалась, как универсальный модуль, поэтому оказалось плохо защищена от помех электродвигателя турбины. Проблема решилась экранированием проводов двигателя и установкой на него конденсатора в 0.1мкф, также необходимо кинуть вывод RESET контроллера прямо (без резистора) на +5v, это позволяет избавиться от произвольно сброса.
Драйвер двигателей собран на микросхеме L298, по стандартной схеме.
Плата драйвера двигателей.
Остальная электроника и органы управления собраны на макетной плате.
Общая электронная схема.
Как вы можете видеть, на схеме нет устройства для контроля заряда аккумулятора и сенсоров для поиска зарядной станции. Всё это было в прошлой модификации робота и достаточно неплохо работало, но так-так получилось всё немного кривовато и требует доработки, то описывать в данной статье эти недостающие элементы я не буду. Однако, чтобы не быть голословным, вот вам видео поиска ЗС, роботом прошлой модификации.
Наверное, самая интересная часть всей работы – это создание алгоритма и написание программы управления роботом.
Алгоритм уборки разделён на 4 режима:
•Движение вдоль стены
Разберём каждый из них по отдельности.
Здесь всё просто, приводные двигатели выключены, турбина и щётка тоже, индикатор мигает с низкой частотой, никакой реакции на срабатывание бампера, по нажатию кнопки — переход на следующий режим.
Данный алгоритм хорош для комнат с минимальным количеством мебели. После обнаружения препятствия робот переходит на следующий режим, так как этим препятствием, скорее всего, окажется стена, логично было бы сделать переход на режим движения вдоль стены.
На блок-схеме, проверка наличия препятствий дана условно, в программе же она производится постоянно, а не один раз за итерацию.
Движение вдоль стены
По-моему это самый нужный алгоритм в роботе уборщике, так как большая часть мусора и пыли скапливается именно около стен. На первом этапе робот двигается вперед, до тех пор, пока не обнаружит препятствие, а затем переходит к движению возле него. Так как этим препятствием может оказаться не только стена, а вообще что угодно (например ножка стула), то работа режима, дабы исключить зацикливание, должна быть ограничена по времени.
Алгоритм был предложен на робофоруме и опробован в среде logo. Является хорошей заменой случайному блужданию, в чём можно убедиться, прогнав алгоитм в logo на модели своей комнаты:
Конечно, в реальных условиях всё не так идеально, но зато из сенсоров, для данного алгоритма уборки, нужны только датчики соударений.
Приводить блок-схему этого алгоритма не буду, на робофоруме, есть код на logo.
Программа писалась на чистом С без asm вставок.
Код распилен на несколько частей:
main.c -документ с main функцией и главным циклом.
Periphery.с -аппаратные зависимости, настройка периферии контролера.
Action.c -функциональная часть программы
util/drivers.c -функции управления устройствами
util/timer.c -служба таймеров
Содержит только одну функцию — Periphery() в которой прописывается настройка периферии контроллера. Функция вызывается единожды, из главной функции программы.
Содержит макросы для управления уборочным узлом:
А также функцию управления приводными двигателями:
*_vector – направление вращение двигателя: 1-вперед, 0-стоп, -1-назад
*_speed – скорость вращения, число от 0 до 10
Внутри две функции:
Функция управления временными задержками. Вызывается только по прерыванию с таймера-счётчика2, каждую 1/1000сек.
Единственным параметром передаётся указатель на переменную, от которой будет отсчитываться время. Переменная должна быть заранее инициализирована некоторым, отличным от нуля значением. Как только значение переменной станет равно нулю указатель на неё будет удалён из очереди таймеров. Длину очереди таймеров можно задать с помощью макроса SIZE_ARRAY_HOURS. Обратите внимание что функция Timer_Task не является аналогом функции _delay(), так-как отдаёт управление сразу же, проверять дотикал ли таймер необходимо вручную. Например, вот так выглядит организация задержек в функции управления индикатором:
Функциональная часть кода разбита на модули, для каждого физического или программного устройства пишется свой модуль. Физические устройства:
-Управление циклом уборки.
Модули выполняют разную работу в зависимости от текущего режима. Программа внутри них организована по типу конечного автомата, с помощью конструкции switch – case. Модули могут взаимодействовать с помощью глобальных переменных или изменяя счётчики конечного автомата друг друга.
Вызов функций модулей производится из главного цикла программы:
Не буду описывать работу каждого модуля, в коде достаточно комментариев, кто захочет тот разберётся.
В Action.c так же есть функция util_mode(char _mode), она используется для смены режима работы. Помимо присваивания нового значения переменной Mode, в определении функции прописано обнуление счётчиков конечных автоматов и переменных-таймеров.
Проект собирается с помощью компилятора avrGCC, Makefile присутствует.
Управление двигателями робота на основе микроконтроллера Arduino
Arduino — отличная платформа для робототехники. Микроконтроллер предлагает множество входов, выходов и легко разработать код для работы с ними.
Этот урок является первым из серии «Роботы Arduino» и мы начнем с движения робота — путем управления двумя двигателями постоянного тока. Спасибо за данный урок нашим друзьям из проекта darkbluebit.com.
Шаг 1: Список комплектующих
Нам понадобятся для создания первого робота некоторые комплектующие.
- Комплект-шасси для создания робота (на фото выше) — можно купить отдельными деталями или в наборе
- Драйвер-мост двигателя H-Bridge TB6612FNG
- 4x — Диод 1N4001
- 4x — 1,5 В AA батарея
- 1x — 9 В батарея
- Макет и провода
Шаг 2: Шасси
Есть много шасси для роботов, мы купили на Amazon.com комплект шасси для автомобиля Smart Robot от Ardokit, потому что это очень простой и довольно дешевый вариант. Он поставляется с двумя колесами, управляемыми двумя двигателями постоянного тока (3 — 6 В).
Он предлагает много места на борту для будущих аксессуаров, таких как датчики, беспроводные модули, камеры или дополнительные батареи. В нашем случае мы использовали его для макета.
Шаг 3: H-мост (H-Bridge)
Arduino может обеспечить только очень ограниченный ток непосредственно от выходных контактов — около 20 — 40 мА. Этого достаточно для светодиода, но нам нужен еще один способ питания двигателей.
Контроллер H-Bridge (H-мост) — это схема, используемая для управления скоростью и направлением двигателя. В этом случае нам нужен двойной H-мост (H-Bridge) для управления двумя из них. В цепи используется внешнее питание для обеспечения тока для двигателей. Батарейный блок 4x AA (держатель, входящий в комплект корпуса) предназначен только для этой цели — таким образом, источник питания Arduino (батарея 9 В) можно разделить для защиты нашей платы.
Мы выбрали MOSFET на основе TB6612FNG от Pololu, вы также можете купить почти то же самое от SparkFun (с другим цветом и распиновкой). Эти H-мосты способны управлять двигателями в диапазоне от 4,5 В до 13,5 В и обеспечивать непрерывный ток 1 А (с пиками 3 А).
Шаг 4: Обратное подавление EMF
Двигатели постоянного тока, используемые для робота, подчиняются основному закону физики — они сохраняют энергию при включении, и они будут генерировать заднюю электромоторную силу (обратную ЭДС) при внезапном отключении электропитания. Обратное пиковое напряжение может привести к повреждению нашей цепи.
Мы можем подавить это поведение, подключив диод как на схеме ниже:
В нашем случае нам нужно вращаться в обоих направлениях, поэтому для каждого двигателя требуются четыре диода 1N4001. Диоды имеют разную полярность с каждой стороны — обратите внимание на белую полосу диода.
Шаг 5: Цепь
Наше финальное подключение можно посмотреть на схеме ниже:
Шаг 6: Код
Номера выводов в приведенном ниже коде соответствуют схеме с SparkFun H-Bridge (см.выше), номера контактов в видео на последнем шаге отличаются друг от друга, поскольку там использовался Pololu H-Bridge.
Шаг 7: Итоговый результат
На видео ниже процесс по созданию данного урока и итоговый результат.
Спасибо, что прошли этот урок с нами до конца! Желаем вам отличных проектов и до встречи в ближайших уроках.