Motor Drive Shield L293D
Описание
Motor Drive Shield L293D - плата расширения для контроллеров линейки UNO, предназначенная для питания и управления моторами и сервоприводами. Плата будет очень удобна в проектах создания движущихся объектов: роботов, машин, управления открыванием/закрыванием и прочие проекты, где используются моторы и сервоприводы. Плата позволяет управлять четырьмя моторами или двумя сервоприводами. Имеет разъём для подключения внешнего питания.
Технические характеристики
- Напряжение питания двигателей: 5-36 В
- Напряжение питания платы: 5 В
- Допустимый ток нагрузки: 600 мА на канал
- Максимальный (пиковый) ток нагрузки: 1,2А на канал
Особенности платы
- 4-ёх канальное управление
- Имеются отдельные выводы для подключения сервоприводов
- Контакты для дополнительного питания платы
- Защита от перегрева
Физические размеры
- Шилд (Д х Ш х В): 70 х 54 х 20 мм
Плюсы использования
- Заменяет использование нескольких модулей для управления моторами
- Позволяет упростить конечное устройство
Минусы использования
- Не подойдет для мощных моторов
Скачать
Внимание! При использовании данного шилда, цифровые выводы 2 и 13 контроллера не используйте в своих проектах! Также могут быть заняты и другие пины, в зависимости от использования моторов. Занятые выводы приведены в таблице ниже
Вывод шилда | Занятные выводы контроллера |
---|---|
SER1(сервопривод 1) | цифровой пин 9 |
SER2(сервопривод 2) | цифровой пин 10 |
M1(мотор 1) | цифровой пин 11 |
M2(мотор 2) | цифровой пин 3 |
M3(мотор 3) | цифровой пин 5 |
M4(мотор 4) | цифровой пин 6 |
Шаговый мотор | цифровые пины 4, 7, 8, 12 |
Примеры подключения и использования
Пример 1: В примере демонстрируется подключение двух сервоприводов к шилду и управление ими.
Обратите внимание! Вывод SER1 (Сервопривод1) - на плате расширения соединен с цифровым пином 9 , а вывод SERVO_2 (Сервопривод2) с пином 10 контроллеров UNO.
Что нужно: | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Motor Drive Shield L293D | 1 |
Сервопривод TowerPro SG90 | 2 |
Схема подключения
Скетч для загрузки
#include <Servo.h> //подключение библиотеки для работы с сервоприводами Servo myservo1; // создание объекта для работы с сервоприводом №1 Servo myservo2; // создание объекта для работы с сервоприводом №2 int val1 = 0; // переменная градуса поворота первого сервопривода int val2 = 180; // переменная градуса поворота второго сервопривода int stepVal = 30; // переменная шага поворота сервопривода void setup() { myservo1.attach(10); // подключение первого сервопривода к пину 10 myservo2.attach(9); // подключение второго сервопривода к пину 9 } void loop() { val1 += 30; // увеличить переменную поворота первого сервопривода val2 -= 30; // увеличить переменную поворота второго сервопривода myservo1.write(val1); // установить позицию первого сервопривода delay(15); // подождать пока сервопривод примет нужное положение myservo2.write(val2); // установить позицию второго сервопривода delay(15); // подождать пока сервопривод примет нужное положение delay(500); // задержка для раздумий if (val1 > 180) val1 = 0; // проверки граничных значений угла поворота if (val2 < 0) val2 = 180; // проверки граничных значений угла поворота }
Пример 2: В примере демонстрируется подключение четырех коллекторных моторов к шилду и демонстрация работы с ними. Для корректной работы требуется обеспечить внешнее питание для шилда (моторов).
Обратите внимание! Вывод М1 (Мотор1) - на плате расширения соединен с цифровым пином 11 , вывод М2 (Мотор2) с пином 3, вывод М3 (Мотор3) с пином 5, а вывод М4 (Мотор4) с пином 6 контроллеров UNO.
Что нужно: | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Motor Drive Shield L293D | 1 |
Коллекторный мотор | 4 |
Схема подключения
Скетч для загрузки
#include <AFMotor.h> // Подключение библиотеки для работы с шилдом //Создание объектов мотора и подключение AF_DCMotor motor1(1); // Подключение мотора к клеммнику M1 AF_DCMotor motor2(2); // Подключение мотора к клеммнику M2 AF_DCMotor motor3(3); // Подключение мотора к клеммнику M3 AF_DCMotor motor4(4); // Подключение мотора к клеммнику M4 void setup() { //Демонстрация работы motor1.run(FORWARD); // Установка направления движения вперед (FORWARD = вперед) motor1.setSpeed(255); // Установка максимальной скорости движения motor2.run(FORWARD); // Установка направления движения вперед (FORWARD = вперед) motor2.setSpeed(255); // Установка максимальной скорости движения motor3.run(FORWARD); // Установка направления движения вперед (FORWARD = вперед) motor3.setSpeed(255); // Установка максимальной скорости движения motor4.run(FORWARD); // Установка направления движения вперед (FORWARD = вперед) motor4.setSpeed(255); // Установка максимальной скорости движения delay(3000); // Время задержки (3 секунды моторы двигаются вперед) motor1.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor2.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor3.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor4.run(RELEASE); // Остановка двигателей (RELEASE - остановка) delay(500); // Время задержки (0,5 секунды моторы остановлены) motor1.run(BACKWARD); // Установка направления движения назад (BACKWARD = назад) motor1.setSpeed(255); // Установка максимальной скорости движения motor2.run(BACKWARD); // Установка направления движения назад (BACKWARD = назад) motor2.setSpeed(255); // Установка максимальной скорости движения motor3.run(BACKWARD); // Установка направления движения назад (BACKWARD = назад) motor3.setSpeed(255); // Установка максимальной скорости движения motor4.run(BACKWARD); // Установка направления движения назад (BACKWARD = назад) motor4.setSpeed(255); // Установка максимальной скорости движения delay(3000); // Время задержки (3 секунды моторы двигаются назад) motor1.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor2.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor3.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor4.run(RELEASE); // Остановка двигателей (RELEASE - остановка) delay(500); // Время задержки (0,5 секунды моторы остановлены) // Разгон двигателей в одном направлении от нулевой скорости, до максимальной for (int i=0; i<255; i++) { motor1.setSpeed(i); // Установка скорости движения motor2.setSpeed(i); // Установка скорости движения motor3.setSpeed(i); // Установка скорости движения motor4.setSpeed(i); // Установка скорости движения motor1.run(FORWARD); // Установка направления движения мотора motor2.run(FORWARD); // Установка направления движения мотора motor3.run(FORWARD); // Установка направления движения мотора motor4.run(FORWARD); // Установка направления движения мотора delay(100); // Время задержки } motor1.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor2.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor3.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor4.run(RELEASE); // Остановка двигателей (RELEASE - остановка) delay(500); // Время задержки (0,5 секунды моторы остановлены) // Снижение скорости двигателей в одном направлении от максимальной к нулевой for (int i=0; i<255; i++) { motor1.setSpeed(i); // Установка скорости движения motor2.setSpeed(i); // Установка скорости движения motor3.setSpeed(i); // Установка скорости движения motor4.setSpeed(i); // Установка скорости движения motor1.run(FORWARD); // Установка направления движения мотора motor2.run(FORWARD); // Установка направления движения мотора motor3.run(FORWARD); // Установка направления движения мотора motor4.run(FORWARD); // Установка направления движения мотора delay(100); // Время задержки } motor1.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor2.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor3.run(RELEASE); // Остановка двигателей (RELEASE - остановка) motor4.run(RELEASE); // Остановка двигателей (RELEASE - остановка) delay(500); // Время задержки (0,5 секунды моторы остановлены) } void loop() { }