Motor Shield
Опубликовано: 04.03.2024

Микроконтроллер, установленный на Arduino не может непосредственно управлять большой нагрузкой на своих цифровых выходах. Максимально возможный выходной ток с ножки микроконтроллера — 40 мА. Чтобы иметь возможность управлять большой нагрузкой существуют специализированные устройства. Именно к таким устройствам и относится Motor Shield .
Motor Shield — это плата расширения для Arduino, предназначенная для двухканального управления скоростью и направлением вращения коллекторных двигателей постоянного тока, напряжением 5–24 В и максимальным током до 2 А на канал.
Motor Shield также может быть использован для управления одним биполярным шаговым двигателем или, при совмещении двух каналов в один, для управления мощной нагрузкой с током до 4 А.
Arduino Tutorial - Servo Motor Control with Motor Shield
Подключение и настройка
Установите Motor Shield сверху на управляющую платформу, например Arduino Uno или Iskra Neo .Убедитесь в наличии и правильности соединения джамперов на плате Motor Shield:
H1 с 4 пином;
E1 с 5 пином.
E2 с 6 пином;
H2 с 7 пином.
28BYJ-48 Stepper Motor + Arduino + L293D Motor Shield + processing setup test run
Подключите внешнее питание для моторов через клеммник PWR, соблюдая полярность.
Управление коллекторными двигателями
Приступим к демонстрации возможностей. Схема подключения — на картинке. Джампер PWR JOIN установлен в положение «Раздельное питание». Arduino запитана через USB.
Для начала простейший код для демонстрации всех основных функций Motor Shield:
2DC_Motor_Shield.ino // Моторы подключаются к клеммам M1+, M1-, M2+, M2- // Motor shield использует четыре контакта 4, 5, 6, 7 для управления моторами // 4 и 7 — для направления, 5 и 6 — для скорости #define SPEED_1 5 #define DIR_1 4 #define SPEED_2 6 #define DIR_2 7 void setup ( ) { // Настраивает выводы платы 4, 5, 6, 7 на вывод сигналов for ( int i = 4 ; i < 8 ; i ++ ) pinMode (i , OUTPUT ) ; } void loop ( ) { // Для коллекторного мотора можно выбрать значение скорости от 0 до 255. // Покрутим в течении секунды M1 на средней скорости сначала в одну сторону... analogWrite (SPEED_1 , 126 ) ; digitalWrite (DIR_1 , LOW ) ; delay ( 1000 ) ; // ... а затем в другую. digitalWrite (DIR_1 , HIGH ) ; delay ( 1000 ) ; // После чего остановим мотор 1 analogWrite (SPEED_1 , 0 ) ; // А теперь заставим мотор 2 медленно разгоняться до максимума for ( int i = 0 ; i <= 255 ; ++ i) { analogWrite (SPEED_2 , i ) ; delay ( 50 ) ; } // Теперь он будет крутится до нажатия на Reset или выключения питания while ( true ) ; }Следующий код подойдёт для робот платформ :