
Аннотация к работе:
На любом производстве уборка помещений занимает достаточно много времени. Чтобы облегчить труд человека, уже давно применяются различные устройства и механизмы для сбора и утилизации различного мусора, полученного в процессе работы технологических механизмов. Роботы – уборщики используются в самых различных отраслях: от сбора пыли на полу в швейных цехах, до стерилизации помещений при изготовлении интегральных микросхем.
Собрать простейшего робота – уборщика достаточно просто! Для этого необходимо иметь навык в конструировании, а также владеть одним из языков программирования, чтобы робот мог работать автономно.
В данной работе использовалась робототехническая тележка одного из конструкторов, микроконтроллер, вентилятор и ультразвуковой датчик. Датчик определяет расстояние до препятствия, микроконтроллер включает двигатели колес и вентилятор, который начинает вращаться, втягивая в мешок воздух, пыль и всякий ненужный мелкий мусор.
Робота можно запрограммировать в различных режимах:
а) автономном, когда он движется, обходя препятствия и собирая мусор;
б) за человеком, который указывает ему, где следует произвести уборку.
Перечень оборудования и материалов, используемых в работе:
- Микроконтроллер Arduino Uno.
- Модуль управления двигателями L298N.
- Ультразвуковой датчик HC – SR04.
- Макетная плата.
- Два больших ведущих колеса и одно малое рулевое.
- Два аккумулятора на 4,5 В и один на 9 В.
- Вентилятор.
- Пластиковые и металлические элементы.
- Соединительные провода.
- Кнопки для вкючения/выключения.
Принципиальная схема робота:
Программа, по которой работает робот:
#define Trig 8
#define Echo 9
const int in21 = 4; // L298N-2 pin 4
const int in22 = 5; // L298N-2 pin 5
const int in23 = 6; // L298N-2 pin 6
const int in24 = 7; // L298N-2 pin 7
const int enA = 10; // L298N-2 pin 10
const int enB = 11; // L298N-2 pin 11
void setup()
{
pinMode(Trig, OUTPUT); // выход
pinMode(Echo, INPUT); // вход
pinMode(in21, OUTPUT); // выход на L298n
pinMode(in22, OUTPUT); // выход на L298n
pinMode(in23, OUTPUT); // выход на L298n
pinMode(in24, OUTPUT); // выход на L298n
}
unsigned int impulseTime=0;
unsigned int distance_sm=0;
void loop()
{
digitalWrite(Trig, HIGH);
delayMicroseconds(10); // 10 микросекунд
digitalWrite(Trig, LOW);
impulseTime=pulseIn(Echo, HIGH); // замеряем длину импульса
distance_sm=impulseTime/58; // переводим в сантиметры
if (distance_sm>25) // если расстояние более 25 сантиметров
{
digitalWrite(in21, LOW);
digitalWrite(in22, HIGH);
analogWrite(enA, 60);
analogWrite(enB, 60);
digitalWrite(in23, HIGH);
digitalWrite(in24, LOW);
}
else
{
digitalWrite(in21, HIGH);
digitalWrite(in22, LOW);
analogWrite(enA, 100);
analogWrite(enB, 100);
digitalWrite(in23, HIGH);
digitalWrite(in24, LOW);
delay(1100); // если застряет или не выезжает из угла - измените время поворота. сейчас там стоит 1,1 с.
}
delay(50);
}