8 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создание маленького робота пылесоса на ардуино

Собираем робот-пылесос на Arduino


Шаг первый. Создаем поворотную платформу для робота
Для своей первой самоделки автор использовал танк из игры «Танковый бой», из игрушки были выброшены все лишние детали, остался только корпус, а также двигатели и колеса. После этого был установлен Arduino UNO, драйвер двигателей и ультразвуковой дальномер. В качестве источника питания использовались три литиевые батареи по 3.7 В.

Такая конструкция имела ряд минусов. К примеру, из-за того, что колеса находились сзади платформы, у робота возникали проблемы при повороте, робот часто буксовал.

Также из-за очень большой скорости передвижения робот порой не успевал реагировать на сигналы дальномера и врезался.


Все проблемы были решены путем сборки новой платформы из картона. Для этого нужно вырезать 2 круга диаметром 30 см, а затем склеить их поперек волокон. В итоге получается довольно прочная конструкция на изгиб. Что касается моторчиков и редукторов, то они были взяты из предыдущей самоделки.

Шаг второй. Создаем сенсоры
Изначально робот ориентировался за счет дальномеров, но автору их работа не понравилась и в итоге было решено от их избавиться. На их смену пришли контактные бампера, при этом робот стал вести себя адекватнее, да и вложений при этом требуется меньше.




Контактные бампера изготавливаются очень просто. Нужно взять картон и на одну его сторону приклеить фольгу, это будет первым контактом. К этой фольге нужно подать напряжение +5 В. Напротив платформы нужно установить изогнутый проводок от витой пары, он подключается через резистор, благодаря этому ложных срабатываний будет меньше. Когда робот будет во что-то врезаться, то будут замыкаться контакты, и затем электроника будет разворачивать робота в другом случайном направлении.

Шаг третий. Делаем пылесос и пылесборник
Благодаря таким материалам как картон и скотч можно быстро собрать практически любой макет. Для работы турбины используется источник питания в 18 Вольт, напрямую от батареи. При такой нагрузке кулеры греются, но работают.









Для изготовления турбины берется кулер от компьютера и затем от него отламываются все лопасти. Далее на кулер крепится турбина от пылесоса, ее нужно приклеить суперклеем. Самое главное здесь — приклеить точно, не должно быть дисбаланса. Без нагрузки и питании 18 Вольт кулер выдает порядка 2600 RPM, что создает отличную тягу. В заключении вся конструкция собирается так, как можно увидеть на фото и после этого робота можно испытывать.

Что касается алгоритма работы, то он очень простой. Если робот во что-то врезается, он затем разворачивается на случайный угол.
В будущем автор планирует сделать платформу из фанеры, чтобы она была прочнее. Еще в планах установка двух щеток спереди для более эффективной сборки мусора. Выдуваемый воздух можно направить под платформу, чтобы пыль собиралась эффективнее.
Источник

Получайте на почту подборку новых самоделок. Никакого спама, только полезные идеи!

*Заполняя форму вы соглашаетесь на обработку персональных данных

Как сделать робот-пылесос своими руками — 2 идеи сборки

В современном ритме жизни не всегда получается поддерживать в доме чистоту. В этом деле поможет современные технологии. Робот-пылесос появился более 15 лет назад. Его типовой внешний вид напоминает крупную шайбу, которая передвигается по комнате по заданному алгоритму или случайным образом (пока на что-нибудь не наткнется) и собирает мусор. Предлагаем вам изучить 2 пошаговые инструкции, позволяющие сделать робот-пылесос своими руками.

Материалы для сборки

Итак, для сборки робота-пылесоса нужно разобраться с его составными частями, пойдем по порядку. Он должен сам передвигаться по комнате, поэтому нужны двигатели, в зависимости от конечной конструкции их должно быть от 2-х до 4-х, а также возможность переключения направления вращения и скорость, значит, нужна плата для управления двигателями. Если вы используете двигатели постоянного тока, то нужна плата с 4-мя транзисторами (H-мост).

Самодельный робот-пылесос должен определять столкновения со стенами и мебелью. Для этого нужно предусмотреть датчики препятствия и концевые выключатели на «бампере». Также нужен сам рабочий орган – пылесос. При этом он должен быть рассчитан на работу от постоянного тока низкого напряжения (например, 12В).

Кроме пылесоса нужна подвижная (вращающаяся) щетка, которая будет отчищать поверхность, поднимать ворс половика, сметать мусор. Для этого нужен еще один или два моторчика.

Система, которая будет всем этим управлять. Простейший вариант на Arduino. Для такой задачи подойдет любая из плат, по размерам удобно разместить вариант Nano или Pro mini.

Идея №1: робот-пылесос из картона

Основа робота делается из плотного картона. Его лучше склеить в пару слоев, а волокна разместить перпендикулярно. Для его технической начинки нужен такой набор деталей:

  1. Любая плата Arduino.
  2. Breadboard или простая макетная плата, в принципе можно и без неё, всё просто спаять.
  3. 2 ультразвуковых датчика расстояния (дальномер).
  4. Турбина от пылесоса.
  5. Небольшой двигатель или кулер от компьютера.
  6. Двигатели с редукторами и колеса.
  7. Контроллер для двигателя.
  8. Провода для соединений схемы.
  9. Аккумуляторы и контроллер заряда.

В качестве питания для робота нужно использовать 3 литиевых аккумулятора. Напряжение каждого из них 3,7 В. Для их заряда нужен контроллер. Например, такой как на фото:

Для управления двигателями привода робота удобно использовать модуль на L298-микросхеме. Схемотехнически это H-мост, вы можете его собрать своими руками из отдельных компонентов, но купить готовую плату будет надежнее. С его помощью вы можете задавать скорость движения робота-пылесоса и изменять направление вращения.

Для регулировки скорости на пин ENA или ENB подаётся ШИМ сигнал, а для задания направления вращения подают разноименные сигналы на IN1 и IN2 для одного двигателя и IN3, IN4 для другого двигателя. При этом если на пине IN1 у нас логическая единица, а на пине IN2 – логический ноль, двигатель крутится в одну сторону, чтобы сменить направление нужно поменять местами 1 с 0. Его нужно собрать с ардуино по такой схеме (пины можно использовать любые, это вы укажете в скетче).

Схема на ардуино

Далее нужно делать основу из картона и закрепить на ней колеса, должно получиться что-то вроде этого:

Основа из картона

Вот вид с нижней стороны. Два ведущих колеса с угловым редуктором и поворотное колесо:

Теперь нужно собрать схему, которая монтируется на основание. Диаметр основания должен быть около 30 см, чтобы туда влезла и электроника и сам блок пылесоса.

Вместо дальномеров можно использовать вариант с бамперами, которые соединены с концевыми выключателями. При столкновении с препятствием система управления даст сигнал о смене направления движения.

Контактные бампера можно сделать и своими руками, для этого нужен тонкий, но жесткий провод, например от витой пары. Для этого формирует контактную площадку на внутренней стороне бампера из фольги, и закрепляем проводник как это показано ниже. При столкновениях робота-пылесоса с мебелью и стенами они будут соприкасаться. Вам остается отрегулировать расстояние от проволоки до фольги, чтобы добиться нужной чувствительности и исключить ложные срабатывания. На фольгу подается 5В, а провод идёт на вход Ардуино, подтянутый к минусу через резистор на несколько кОм.

Самодельный контактный бампер

Устройство питается от аккумуляторов, для питания системы управления можно применить линейные стабилизаторы типа l7805. Чтобы отрегулировать скорость вращения моторов подойдет понижающий преобразователь, например LM2596.

Самое сложное — это сконструировать и собрать пылесос. Вот его приблизительный чертеж:

Отламываем родные лопасти от кулера, и закрепляем на его роторе турбину от пылесоса. Важно закрепить турбину точно в центре, иначе вы получите дисбаланс и вибрации.

Вот так выглядит обратная сторона турбины, закрепленной на роторе кулера. Закрепить её можно на термоклей или на суперклей

Вид турбины изнутри

Вот и вся пошаговая инструкция по сборке робота-пылесоса, сделанного из подручных материалов. Алгоритм его работы такой: робот-пылесос едет вперед, пока не встретит препятствие. После столкновения (или приближения, если вы используете УЗ дальномеры) останавливается, отъезжает назад на заданное расстояние, разворачивается на произвольный угол и едет дальше.

Идея №2: почти заводской робот

Предлагаем вашему вниманию не более сложный проект робота-пылесоса. Вот его внешний вид в собранном состоянии:

Читать еще:  Стойка для лыж своими руками чертежи

Самодельный роботизированный пылесос

Система навигации в нем собрана из комплекта 6-ти ИК-датчиков препятствия. На случай, если не сработал ни один из них, то предусмотрены два контактных датчика (концевых выключателя). Система управления двигателями на таком же драйвере с микросхемой L298N. Для его сборки вам понадобится:

  1. Плата Ардуино, в оригинале использовалась Pro-mini.
  2. USB-TTL переходник для прошивки этой модели ардуино. Если вы будете использовать Arduino Nano, то он не нужен, т.к. в ней есть возможность прошивки по USB.
  3. Драйвер для моторчиков L298N.
  4. Моторчики для колес с редуктором.
  5. 6 ИК-датчиков.
  6. Моторчики для турбины (по возможности помощнее).
  7. Крыльчатка турбины пылесоса.
  8. Моторчики для щеток могут быть любыми.
  9. 2 датчика столкновения.

Всё это собрать по такой схеме:

Схема сборки робота-пылесоса

Для сборки цепи питания робота-пылесоса нужны:

  1. 4 литиевых аккумулятора, подойдут типа 18650.
  2. 2 преобразователя постоянного напряжения (повышающий и понижающий).
  3. Контроллер для заряда и разряда 2-х аккумуляторов (искать в интернете по запросу 2s li-ion controller). В схеме используется последовательное включение двух параллельно включенных банок, в итоге их выходное напряжение получается больше 7,4В, а параллельная цепочка нужна для повышения ёмкости и автономности работы.

Вот схема питания этого робота:

Кроме этого нужен пластик (ПВХ) или любой другой материал для корпуса робота, можно его распечатать на 3D-принтере, если у вас есть такая возможность.

Для работы самоделки нужна прошивка, вот пример алгоритма хаотичной уборки, мы взяли его с сети. Ссылка для скачивания скетча: прошивка для робота-пылесоса.

В этой статье были рассмотрены 2 конструкции робота-пылесоса, которые можно повторить и собрать своими руками. Сделать автоматическое средство для уборки помещения можно, вложившись в бюджет от 30 до 100 долларов. Самыми дорогими деталями являются аккумуляторы, двигатели и платы ардуино. Если у вас получилось собрать самодельный робот-пылесос или вы придумали другую конструкцию, присылайте примеры в комментарии, будем рады открытому общению!

Напоследок рекомендуем просмотреть видео, на которых наглядно демонстрируется еще несколько идей, как сделать робот-пылесос в домашних условиях:

Робот пылесос своими руками. Часть 2

Выдался выходной и пришли некоторые посылочки (прям как совпало). Распаковками мучать не народ нет желания, поэтому к делу. Решил все почти полностью разобрать чтобы удобней было внедрять новые «плюшки» ,а заодно и поведать о более детальном устройстве монстра)))

Снимаем самое сердце — электронику.

Крепится все на уголок для удобства разборки.

Снимаем «подметалки» . Шайбы компенсируют неровности самого мотор-редуктора.

Скидываем АКБ и DC-DC переобразователи. Кстати АКБ закреплял их стяжками к раме. Снизу все банки изолированы.

Вот кстати модель движка виднеется. Ссылки почти на все кину в конце поста.

Вот попутно еще фото реализации крепления колес.

Выемку сделал специально чтоб колесо на оси не проворачивалось.

Теперь снимаем сам пылесос.

Попутно еще фотки самого устройства пылесоса.

Чертеж крыльчатки есть в прошлом посте.

Ну теперь продолжим с самим монстром. Делаем новую площадку под ардуино мега и драйвер двигателей.

И примеряем чтоб не задевало крышку пылесборника.

Крепим «Мегу» к площадке через латунные стоечки. А драйвер просто на болтики чтоб по высоте не мешал будущему второму этажу.

Прикидываем второй этаж для экрана и датчиков (которые кстати все еще не пришли)

Теперь по деталюхам :

Аллюминиевый уголок — стоительный магаз.

Критика (по делу) и идеи по улучшению приветствуются. Надеюсь пост будет полезен кому нибудь. ВСЕМ ДОБРА.

Жаль что датчики не пришли. можно было бы уже обкатывать.

Продолжение постройки будет по мере появления всего необходимого

Ты я смотрю тоже минусы людям не ставишь)))))

В каждом ардуинщике помирает электронщик 🙂 травление не практикуешь?

не правда электронщик не умирает))) порой даже наоборот))) травлю платки по настроению. Благо опыт в это большой. Начинал еще в школьные годы с рисования дорожек нитролаком и травлением медным купоросом.

Тогда мне вас (в смысле ардуинщиков) не понять: плата стоит в 10 раз дороже чипа — это раз. Обвязку атмеге почти делать не надо — два. Каждый контакт который пин — 100% источник глюка в будущем, особенно на подвижной модели — три. Запилить себе платку, впаять несколько транзюков для управления двигателями, сделать выводы под программатор, экран, датчики и что там у тебя еще. хм. так похоже будет на вещь, а не на детскую поделку. (я прошу прощения, я ни в коем случае не учу и не навязываю своего мнения, просто в толк не возьму)

Что мне нравится в ардуинах так это модульность. Захотел что то изменить, заменил только часть конструкции а не всю конструкцию в целом. Так же ремонтопригодность отличная, а чтоб небыло глюков , я слегка приклеиваю пин (точнее их пластиковые части) к разьему горячим клеем, капли достаточно и шлейфы для готовой конструкции спаиваю всегда сам и креплю все провода стяжками. А по ценам китай радует клонами на любой вкус и малую цену: нано примерно 120 рублей с програматором на той же плате. Атмега 8 стоит примерно 55 рублей без платы и обвязки. Получается не сильно и дороже))). Можно самому паять всю конструкцию на одной плате когда сильно ограничено пространство корпуса. А глюки будут 100 процентов если собрать все на бредборде и так оставить в готовой подвижной модели.( Оскорбить чем либо никого не пытался. Все написанное мое чисто субьективное мнение)

А на сколько мощный такой пылесос получается? Он способен втягивать не только пыль и волосы, но и зерна, орешки, конфеты m&m например? Или тут все ограничивается мощностью двигателя?

Были проблемы с прочностью крыльчатки? Есть смысл её напечатать на 3д принтере, если возможность есть =)

Сам пылесос слабоватый. Тянет пыль, волосы, бумажки и тд. Но и работает тихо. Если поднять обороты раза в два (использовать другой двигатель) то тяга будет приемлимой, но и шуметь будет сильно, и энерго потребление будет высоким и сократится автономное время работы. Вот параметры которые мне нужны: тихая работа, долгое время автономной работы (по моим расчетам не менее 5 часов). А то что тяга самого пылесоса слабая то это для моих задач не решающий фактор, т.к и нужно лишь собирать мелкий мусор. А крыльчатку можно и на 3д принтере сделать и всю конструкцию самого пылесоса , но увы такой возможности нет..

DIY: Несложный робот пылесос под Arduino своими руками. Пошаговая инструкция по изготовлению

Популярность автоматизированных домашних уборщиков с каждым днем возрастает. Не исключение, роботы-пылесосы для сухой уборки, способные поддерживать чистоту пола без вашего вмешательства. Принцип работы этих устройств очень прост и схож на прицип работы ручного пылесоса, главным отличием является наличие микроконтроллера, набора датчиков для самостоятельной работы, подзарядки и ориентировании в пространстве. Об этом мы ранее описывали в целой статье, специально посвященной роботизированным уборщикам полов.

Если вы хотите узнать, как он устроен и построить его собственными руками, представляем вашему вниманию инструкцию по сборке простейшего робота-пылесоса из подручных средств.

Материалы и компоненты:

Для создания робота-уборщика необходимы:

  • плата Arduino;
  • плата контроля электромоторов Arduino motor shield;
  • два двигателя с коробкой передач (3 вольта, приблизительно 100 оборотов в минуту);
  • два колеса или две алюминиевые банки;
  • турбина-кулер компьютерного охлаждения (5 В или 12 Вольт);
  • аккумулятор для питания 5 вольт;
  • пластина для сбора радиоэлементов и провода;
  • большой круглый пластиковый контейнер — для корпуса;
  • небольшой пластиковый контейнер — для мусоросборника;
  • картон;
  • термоклей;
  • магниты.

Шаг 1: Программный код и скетч:

Для правильной и точной работы в роботе-пылесосе существует «сердце» в виде микроконтроллера Arduino, программируемого с помощью домашнего ПК и необходимого программного обеспечения.

Скетч для работы робота-пылесоса загружается на плату с помощью программы Arduino IDE. Ниже программный код.

/*
Program for controlling a robot with two motors.
The robot turns when motors changes their speed and direction.
Front bumpers on left and right sides detect obstacles.
Ultrasonic sonars can be connected to analog inputs (tested on LV-MaxSonar-EZ1):
— put pins in array sonarPins in following order: left, right, front, others..
Examples:
1. only left and right sonars connected to pins 2 and 3: sonarPins[] = <2,3>
2. left, right and front sonars connected to pins 2, 3 and 5: sonarPins[] = <2,3,5>
3. only front sonar connected to pin 5: sonarPins[] = <-1,-1,5>
4. only left sonar connected to pin 2: sonarPins[] = <2>
5. only right sonar connected to pins 3: sonarPins[] = <-1,3>
6. 5 sonars connected to pins 1,2,3,4,5: sonarPins[] = <1,2,3,4,5>
Motor shield is used to run motors.
*/
const int Baud = 9600; //UART port speed

Читать еще:  Бензопила husqvarna 365 инструкция по эксплуатации

//Sonar properties
int sonarPins[] = <1, 2>;//Analog Pin Nums to sonar sensor Pin AN
const long MinLeftDistance = 20; //Minimum allowed left distance
const long MinRightDistance = 20; //Minimum allowed right distance
const long MinFrontDistance = 15; //Minimum allowed front distance
const int SamplesAmount = 15;//more samples — smoother measurement and bigger lag
const int SonarDisplayFrequency = 10; //display only one of these lines — not all
int sonarDisplayFrequencyCount = 0;
const long Factor = 2.54 / 2;
long samples[sizeof(sonarPins)][SamplesAmount];
int sampleIndex[sizeof(sonarPins)];

//right side
const int pinRightMotorDirection = 4; //this can be marked on motor shield as «DIR A»
const int pinRightMotorSpeed = 3; //this can be marked on motor shield as «PWM A»
const int pinRightBumper = 2; //where the right bumper is connected

//left side
const int pinLeftMotorDirection = 7; //this can be marked on motor shield as «DIR B»
const int pinLeftMotorSpeed = 6; //this can be marked on motor shield as «PWM B»
const int pinLeftBumper = 8; //where the right bumper is connected

//uncomment next 2 lines if Motor Shield has breaks
//const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; //this can be marked on motor shield as «BREAKE A»
//const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; //this can be marked on motor shield as «BREAKE B»

//fields
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
//set in counter how long a motor is running back: N/10 (in milliseconds)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;

//Initialization
void setup() <
Serial.begin(Baud);
initPins();

//uncomment next 4 lines if Motor Shield has breaks
// pinMode(pinLeftMotorBreak, OUTPUT);
// pinMode(pinRightMotorBreak, OUTPUT);
// digitalWrite(pinLeftMotorBreak, LOW); //turn off breaks
// digitalWrite(pinRightMotorBreak, LOW); //turn off breaks

runRightMotorForward();
runLeftMotorForward();
startMotors();
>

//Main loop
void loop() <

delay(10);//repeat every 10 milliseconds
>

//—————————————————
void initPins() <
pinMode(pinRightMotorDirection, OUTPUT);
pinMode(pinRightMotorSpeed, OUTPUT);
pinMode(pinRightBumper, INPUT);
pinMode(pinLeftMotorDirection, OUTPUT);
pinMode(pinLeftMotorSpeed, OUTPUT);
pinMode(pinLeftBumper, INPUT);
for(int i = 0; i MinRightDistance //checks if the minimum allowed right distance is not reached
&& measureDistance(2, ‘F’) > MinFrontDistance)//checks if the minimum allowed front distance is not reached
return;
if(checkCounterIsNotSet(countDownWhileMovingToRight))//if the counter is not yet counting down
runRightMotorBackward();//run the right motor backward
countDownWhileMovingToRight = turnRightTimeout;//set the counter to maximum value to start it counting down
>

void verifyAndSetLeftSide() <
if(checkBumperIsNotPressed(pinLeftBumper) //checks if left bumper has NOT been pressed
&& measureDistance(0, ‘L’) > MinLeftDistance //checks if the minimum allowed left distance is not reached
&& measureDistance(2, ‘F’) > MinFrontDistance)//checks if the minimum allowed front distance is not reached
return;
if(checkCounterIsNotSet(countDownWhileMovingToLeft))//if the counter is not yet counting down
runLeftMotorBackward();//run the right motor backward
countDownWhileMovingToLeft = turnLeftTimeout;//set the counter to maximum value to start it counting down
>

bool checkCounterIsNotSet(int counter) <
return counter = sizeof(sonarPins) — 1 || sonarPins[pinIndex] = SamplesAmount)
sampleIndex[pinIndex] = 0;
samples[pinIndex][sampleIndex[pinIndex]] = value;
return true;
>

long calculateAvarageDistance(int pinIndex) <
long average = 0;
for(int i = 0; i

Шаг 2: Монтирование деталей:

Для крепления сервоприводов с колесами, кулера, плат управления, аккумулятора и другого используется картонная основа. Турбина и пластиковый контейнер (мусоросборник), с проделанным предварительно отверстием, прочно склеивается между собой и крепится на картон. Контейнер имеет отверстие для выдуваемого воздуха, на которое наклеена специальная синтетическая ткань, служащая фильтром.

Последовательно склеиваем кулер с сервоприводами, затем на сервоприводы клеим картонную площадку, на которой располагаются платы Arduino и батарея питания. Чтобы сделать колеса, необходимо отрезать нижнюю и верхнюю часть алюминиевых банок, склеить их между собой, а затем прочно закрепить на валу сервопривода.

В передней части монтируются металлические пластины (функция подвижного бампера), при замыкании которых сигнал поступает в плату управления электродвигателями Arduino motor shield, после чего сервоприводы начинают вращаться в другую сторону, изменяя направление движения робота.


Шаг 3: Установка корпуса:

При установке аккумуляторной батареи и подключении всех элементов конструкции с помощью проводов, необходимо обеспечить устройство прочным корпусом. Как раз таки для этого используется большой круглый контейнер. Для действия контактов, предотвращающих столкновение и застревание, делаем в контейнере специальные надрезы. Чтобы корпус был легкосъемным и прочно держался на механической части, используем восемь магнитов (при желании можно больше), по четыре приклеенных на самом контейнере и на внутренней части пылесоса соответственно.

Прекрасный прототип робота-пылесоса, сделанного своими руками. Не беря во внимание отсутствие дополнительных датчиков навигации и базы автоматической подзарядки, данный аппарат за пол часа работы вполне самостоятельно может собрать мусор, пыль и грязь на вашей кухне или в небольшой комнате. Его конструкция не представляет большой сложности, а стоимость и доступность деталей не вызывает сомнения. Все дело в творческом подходе. Вы можете менять элементы конструкции по вашему усмотрению, добавлять или убирать лишние элементы, модернизируя свой аппарат. Желаем приятно провести время, создавая свой робот для сухой уборки полов у вас дома.

Создание прототипа робота пылесоса на базе Arduino Uno

  • Цена: $5.80
  • Перейти в магазин

Arduino — это открытая платформа, которая позволяет собирать всевозможные электронные устройства. Arduino будет интересен креативщикам, дизайнерам, программистам …., и желающим собрать собственный гэджет. Устройства могут работать как автономно, так и в связке с компьютером. Всё зависит от идеи.
Платформа состоит из аппаратной и программной частей. Для программирования используется упрощённая версия C++. Разработку можно вести как с использованием бесплатной среды Arduino IDE, так и с помощью произвольного C/C++ инструментария.
Для программирования и общения с компьютером понадобится USB-кабель.

Для постройки прототипа робота — пылесоса заказал плату Arduino Uno. Вместе c Uno заказал: Драйвер двигателей, для управления двигателями, Ик датчики «органы чувств» робота пылесоса, Ну и проводочки, куда без них? Преобразователь DC-DC и аккумуляторы заказывал в других онлайн магазинах.

Составляющие моего устройства:

— Arduino -центральный контроллер
— Драйвер двигателей — устройство, которое преобразовывает управляющие сигналы малой мощности в токи, достаточные для управления моторами
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 3-80см
— ИК датчики — датчики препятствий расстояние обнаружения препятствия 2-20см
— Электродвигатель турбины
— Электродвигатель боковых щеток
— Электродвигатель центральной щетки
— Электродвигатель перемещения
— Аккумуляторы литиевые

Вот, что получилось.
Фотки не все, загружаю, какие остались.

Компоненты устройства:

Вид снизу:

Вид сверху:

Вид сбоку:

Перед первым пуском:





Первый пуск)) без корпуса


#define DriveVector1 2
#define DriveSpeed1 3
#define DriveVector2 4
#define DriveSpeed2 5
#define InSensor1 12
#define InSensor2 11
#define LedLamp 13

int sensorStatus1, sensorStatus2;
int HIGHValue, LOWValue;

void setup()
<
// put your setup code here, to run once:
pinMode(DriveVector1, OUTPUT);
pinMode(DriveVector2, OUTPUT);
pinMode(DriveSpeed1, OUTPUT);
pinMode(DriveSpeed2, OUTPUT);
pinMode(LedLamp, OUTPUT);
pinMode(InSensor1, INPUT);
pinMode(InSensor2, INPUT);
HIGHValue = HIGH div 2;
LOWValue = LOW;
>

sensorStatus1 = digitalRead (InSensor1);
sensorStatus2 = digitalRead (InSensor2);

void BodyForward()
<
digitalWrite(DriveVector1, LOWValue);
digitalWrite(DriveSpeed1, HIGHValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
>

void BodyBackward()
<
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, HIGHValue);
digitalWrite(DriveSpeed2, LOWValue);
>

void BodyRight()
<
digitalWrite(DriveVector1, HIGHValue);
digitalWrite(DriveSpeed1, LOWValue);
digitalWrite(DriveVector2, LOWValue);
digitalWrite(DriveSpeed2, HIGHValue);
>

void BodyStop()
<
digitalWrite(DriveVector1, 0);
digitalWrite(DriveSpeed1, 0);
digitalWrite(DriveVector2, 0);
digitalWrite(DriveSpeed2, 0);
>

Самодельный Робот Пылесос На Ардуино

самодельный робот пылесос на ардуино

Робот пылесос — Часть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 присутствует.

Ссылка на основную публикацию
Adblock
detector