Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Motor Drive Shield L293D ====== ===== Описание ===== Motor Drive Shield L293D - плата расширения для контроллеров линейки UNO, предназначенная для питания и управления моторами и сервоприводами. Плата будет очень удобна в проектах создания движущихся объектов: роботов, машин, управления открыванием/закрыванием и прочие проекты, где используются моторы и сервоприводы. Плата позволяет управлять четырьмя моторами или двумя сервоприводами. Имеет разъём для подключения внешнего питания. ==== Технические характеристики ==== * Напряжение питания двигателей: 5-36 В * Напряжение питания платы: 5 В * Допустимый ток нагрузки: 600 мА на канал * Максимальный (пиковый) ток нагрузки: 1,2А на канал ==== Особенности платы ==== * 4-ёх канальное управление * Имеются отдельные выводы для подключения сервоприводов * Контакты для дополнительного питания платы * Защита от перегрева ==== Физические размеры ==== * Шилд (Д х Ш х В): 70 х 54 х 20 мм ==== Плюсы использования ==== * Заменяет использование нескольких модулей для управления моторами * Позволяет упростить конечное устройство ==== Минусы использования ==== * Не подойдет для мощных моторов ==== Скачать ==== * [[https://files.smartelements.ru/know_libs/AFMotor.zip|Библиотека (AFMotor)]] //**Внимание!** При использовании данного шилда, цифровые выводы 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.// ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/shildy/product/motor-drive-shield-l293d|Motor Drive Shield L293D]] | 1 | | [[https://smartelements.ru/collection/motory-dravery-shassi/product/servoprivod-towerpro-sg90|Сервопривод TowerPro SG90]] | 2 | **Схема подключения** {{ :главная:шилды:motordriveshield_servo.fzz_-_fritzing_-_макетная_плата_.jpg?nolink |}} **Скетч для загрузки** <file Arduino> #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; // проверки граничных значений угла поворота } </file> **Пример 2**: В примере демонстрируется подключение четырех коллекторных моторов к шилду и демонстрация работы с ними. Для корректной работы требуется обеспечить внешнее питание для шилда (моторов). //Обратите внимание! Вывод **М1** (Мотор1) - на плате расширения соединен с цифровым **пином 11** , вывод **М2** (Мотор2) с **пином 3**, вывод **М3** (Мотор3) с **пином 5**, а вывод **М4** (Мотор4) с **пином 6** контроллеров UNO.// ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]] | 1 | | [[https://smartelements.ru/collection/shildy/product/motor-drive-shield-l293d|Motor Drive Shield L293D]] | 1 | | Коллекторный мотор | 4 | **Схема подключения** {{ :главная:шилды:motordriveshield_motors.fzz_-_fritzing_-_макетная_плата_.jpg?nolink |}} **Скетч для загрузки** <file Arduino> #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() { } </file>