Найти в Дзене
Электроника, Arduino и IT

Motor Shield L293D. Подключение к Arduino и управление четырьмя двигателями или двумя сервомоторами.

Оглавление

Всем привет! Сегодня я покажу вам как подключить Motor Shield L293D к Arduino.

Для этого понадобятся:

1. Arduino Uno или Mega с USB кабелем

2. Компьютер с установленной Arduino IDE и драйверами для плат

3. Четыре двигателя с припаянными проводами или два серво(можно использовать и один)

4. Motor Shield L293D

5. Бокс и два литий-ионных аккумулятора на 3.7V(в качестве источника питания). Можно использовать и другой источник питания.

Описание Motor Shield L293D

Motor Shield L293D оснащён двумя драйверами двигателей L293D, поэтому он может управлять четырьмя двигателями, или двумя двигателями и одним серво, или двумя серво, или двумя шаговыми двигателями. Также этот шилд имеет контакты для внешнего питания, что часто бывает полезно в проектах.

Motor Shield L293D
Motor Shield L293D

Нужно учесть, что для управления двигателями драйвер использует пины платы с 3 по 8 и 12 , а для управлением серво - пины 9 и 10. Поэтому к ним лучше ничего не подключать. Я пробовал в проекте танка использовать сразу L293D и L298N, подключенный к контактам управления драйвером L293D. Из-за того, что L298N и L293D использовали общие контакты управления часто срабатывали не те двигатели.

Для работы с L293D нужно установить библиотеку AFmotor. Скачать её можно отсюда. Извлеките содержимое скачанного архива в папку libraries.

Обратите внимание! Нельзя подавать на EXT_PWR напряжение больше 12V при наличии перемычки PWR!

Подключение четырёх моторов к Motor Shield L293D и скетч

Схема подключения четырёх моторов и источника питания к L293D представлена ниже:

Схема подключения четырёх моторов и источника питания к Motor Shield L293D
Схема подключения четырёх моторов и источника питания к Motor Shield L293D

Теперь напишем скетч для четырёх моторов. Вместо звёздочки перед include нужно вставить "решётку". Если мотор будет вращаться не в ту сторону нужно поменять контакты в клеммнике местами.

#include <AFMotor.h> // подключаем библиотеку для Motor Shield
AF_DCMotor motor1(1); // подключаем первый мотор к клеммнику M1
AF_DCMotor motor2(2); // подключаем второй мотор к клеммнику M2 AF_DCMotor motor3(3); // подключаем третий мотор к клеммнику M3 AF_DCMotor motor4(4); // подключаем четвёртый мотор к клеммнику M4


void setup() {
motor1.setSpeed(255); // задаем максимальную скорость первого мотора
motor1.run(RELEASE); // останавливаем первый мотор
motor2.setSpeed(255); // задаем максимальную скорость второго мотора
motor2.run(RELEASE); // останавливаем второй мотор

motor3.setSpeed(255);//задаем максимальную скорость 3-го мотора
motor3.run(RELEASE); // останавливаем третий мотор

m
otor4.setSpeed(255);//задаем максимальную скорость 4-го мотора
motor4.run(RELEASE); // останавливаем четвёртый мотор

}

void loop() {
motor1.run(FORWARD); // вращаем первый мотор вперёд
motor2.run(FORWARD); // вращаем второй мотор вперёд
motor1.setSpeed(255); // задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора
motor3.run(FORWARD); // вращаем третий мотор вперёд
motor4.run(FORWARD); // вращаем четвёртый мотор вперёд
motor3.setSpeed(255); // задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора

delay(5000); // задержка 5 секунд

m
otor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор
motor1.run(BACKWARD); // вращаем первый мотор назад
motor2.run(BACKWARD); //
вращаем второй мотор назад
motor1.setSpeed(255); //
задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора

m
otor3.run(BACKWARD); // вращаем третий мотор назад
motor4.run(BACKWARD); //
вращаем четвёртый мотор назад
motor3.setSpeed(255); //
задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора

delay(5000); // задержка 5 секунд

motor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор


}

Подключение сервомоторов к Motor Shield L293D и скетч

Подключать сервомоторы нужно к контактам, которые выделены на фото ниже. Соединяем так:

Красный провод(Сервомотор) - плюс(Motor Shield L293D)

Коричневый провод(Сервомотор) - минус(Motor Shield L293D)

Оранжевый провод(Сервомотор) - S(Motor Shield L293D)

Контакты для подключения сервомоторов
Контакты для подключения сервомоторов

Как я уже писал для управления сервомоторами используются пины 9 и 10 платы Arduino. Приступим к написанию скетча для двух сервомоторов. Вместо звёздочки перед include нужно вставить "решётку".

#include <Servo.h>

Servo servo;

Servo servo2;

void setup() {

servo.attach(9);

servo2.attach(10);

}

void loop() {

servo.write(90);

servo2.write(90);

delay(500);

servo.write(0);

servo2.write(0);

delay(500);

}

На этот раз всё, всем спасибо за внимание!