Характеристика ультразвука


Сборка робота для очистки пола


Download 1.68 Mb.
bet5/5
Sana17.06.2023
Hajmi1.68 Mb.
#1546402
1   2   3   4   5
Bog'liq
New Microsoft Word Document (2)

Сборка робота для очистки пола
Смонтируйте плату Arduino на шасси робота. Убедитесь в том, что она не касается никаких металлических деталей. Хорошей идеей будет установка платы Arduino и шилда драйвера двигателей в отдельную коробку. Зафиксируйте двигатели и колеса на шасси робота с помощью болтов. Также для этой цели можно использовать эпоксидный клей или другие способы. Закрепите приспособление для сбора мусора (не знаю как точно перевести, но в оригинале оно называется Scotch Brite scrub pad) позади щетки. Чтобы закрепить все это мы использовали ось, идущую вдоль шасси робота. Также отдельно смонтируйте батареи на шасси робота – для их крепления можно использовать отдельную коробку или специальный контейнер.


Работа схемы
Схема устройства представлена на следующем рисунке. Соедините ультразвуковой датчик с платой Arduino как показано на схеме и установите сверху платы Arduino шилд драйвера двигателей (Motor Driver shield).
Контакт Trig ультразвукового датчика соедините с контактом 12 платы Arduino, контакт Echo датчика - с контактом 13 платы Arduino, контакты питания и землю датчика – с контактами 5V и землей платы Arduino. Более подробно о взаимодействии ультразвукового датчика и платы Arduino можно прочитать в статье про измерение расстояний с помощью Arduino.

Шилд драйвера мотора должен иметь, по крайней мере, два выхода, которые необходимо подсоединить к вашим двигателям. Обычно они промаркированы метками “M1” и “M2” или “Motor 1” и “Motor 2”. Соедините ваши батареи с шилдом драйвера мотора и платой Arduino соответственно. Драйвер мотора также должен иметь входной канал (входные линии), который необходимо соединить с платой Arduino.


Исходный код программы
Откройте Arduino IDE и скопируйте в нее код программы, приведенный в конце статьи. Загрузите программу в плату Arduino. Протестируйте работу робота. Если он поворачивает слишком много или слишком мало во время своей работы поэкспериментируйте с задержками в программе.
Но перед загрузкой кода сначала скачать библиотеку для работы с драйвером мотора (Adafruit Motor Shield Library) чтобы у нас была возможность в программе управлять двигателями постоянного тока. Добавьте ее в папку библиотек Arduino IDE. Убедитесь что эта папка называется AFMotor. Более подробно об установке библиотек от Adafruit можно узнать по этой ссылке.
Рассмотрим наиболее важные фрагменты кода программы. Сначала в программе мы должны подключить библиотеку от Adafruit для управления шилдом драйвера мотора. Также мы должны инициализировать контакты Trig pin и Echo pin и двигатели. Еще необходимо установить режим работы для контакта Trig pin на вывод данных, а для контакта Echo pin – на ввод данных.

1
2
3
4
5
6
7
8
9
10

#include
#define trigPin 12
#define echoPin 13
AF_DCMotor motor1(1,MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_8KHZ);


void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

Далее следуют команды, выполняемые в цикле (в функции loop). Они содержат команды для управления ультразвуковым датчиком (запуска его в работу и считывание времени распространения звуковой волны, расчета расстояния до препятствия и на основании этого расстояния выдача команд на управление двигателями.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;
if (distance < 20) {
motor1.setSpeed(255);
motor2.setSpeed(0);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
delay(2000); //измените эту задержку на основании того как поворачивает ваш робот

Если робот обнаруживает на своем пути препятствие, то он останавливает одно колесо и таким образом осуществляет поворот.


Следующий фрагмент кода заставляет вращаться оба мотора в результате чего робот движется вперед до тех пока не обнаружит препятствие впереди себя.

1
2
3
4
5
6

else {
motor1.setSpeed(160); //измените это число в зависимости от того какая скорость робота вам необходима
motor2.setSpeed(160); //измените это число в зависимости от того какая скорость робота вам необходима
motor1.run(FORWARD);
motor2.run(FORWARD);
}

Далее приведен полный код программы.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

#include //библиотека для работы с двигателями
#define trigPin 12
#define echoPin 13
AF_DCMotor motor1(1,MOTOR12_64KHZ);
AF_DCMotor motor2(2, MOTOR12_8KHZ);


void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}


void loop() {


long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);


delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1; // расчет расстояния до препятствия

if (distance < 20) {
motor1.setSpeed(255);
motor2.setSpeed(0);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
delay(2000); // измените эту задержку на основании того как поворачивает ваш робот
}
else {
motor1.setSpeed(160); // измените это число в зависимости от того какая скорость робота вам необходима
motor2.setSpeed(160); // измените это число в зависимости от того какая скорость робота вам необходима
motor1.run(FORWARD);
motor2.run(FORWARD);
}
}

Download 1.68 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling