Модуль представляет собой двухканальный полный мостовой драйвер управления индуктивными нагрузками, такие как реле, соленоиды, DC и шаговые двигатели. Управление платы происходит посредствам подачи TTL логического уровня. Модуль двухканальный и может управлять одновременно либо 2 двигателями постоянного тока либо одним шаговым двигателем.
В отличие от аналогичных драйверов, данный контроллер выгодно отличается наличием джамперов CSA и CSB, установка которых отключает контроль перегрузки (по току) на каналах А и В соответственно.
Краткое описание
Конструктивно модуль собран на печатной плате , на которой установлены микросхема сдвоенного драйвера коллекторных двигателей L298N, стабилизатор 78М05, клеммные колодки для подключения моторов и питания, pin – разъемы и перемычки (джамперы) режимов работы и светодиоды индикации состояния. По углам платы предусмотрены отверстия O 3 мм для удобного монтажа модуля.
Управление модулем (драйвером мотора) осуществляется от контроллера Arduino или от другого микропроцессорного устройства с TTL логикой с помощью специализированного программного обеспечения.
Назначение выводов
Обозначение на плате | Функциональное назначение |
Колодка питания | |
VMS | Питание для двигателей |
GND | Общий |
5V | Вход/выход +5D |
Pin-разъем управления моторами | |
ENA, ENB | Разрешение/запрещение вращения моторов канала А и В. Если перемычка ENA установлена, то входы IN1 и IN2 будут управлять выходами OUT1 и OUT2. Соответственно и для ENB. |
IN1…..IN4 | Управление вращением моторов. Входы IN2, IN3 - широтно-импульсная модуляция – отвечают за плавное изменение скорости вращения двигателя. Если не нужно ШИМ- управление, то на соответствующий вход нужно просто подать логическую единицу. Входы IN1, IN4 – отвечают за направление вращения двигателя. |
Перемычки (джамперы) | |
CSA, CSB | Включение/отключение контроля тока защиты от перегрузки, установленная перемычка отключает функцию защиты |
U1…..U4 | Выводы подтягивающих резисторов 10 кОм, одетая перемычка – сопротивление включено |
5V_EN | Установленная перемычка включает встроенный в модуль стабилизатор на 5В. При этом 5В подаются и на колодку питания. Если перемычка не установлена, на колодку питания необходимо подать напряжение 5В извне. |
Схема электрическая принципиальная.
Краткие технические характеристики:
напряжение питания встроенной логики, В: 5;
потребляемый ток встроенной логики, mА: 0 – 36;
напряжение питания драйвера, В: 5 – 35 (максимальное 46В);
рабочий ток драйвера, А: 2А (пиковый ток 3А);
максимальное потребление энергии, Вт: 25;
рабочая температура, °С: -20 – +135;
габариты, мм: 43,5 х 43,2 х 29,4;
вес, г: 26.
Подключение одного мотора и состояние выводов модуля.
Перемычки CSA/CSB и U1-U4 должны быть все установлены.
Перемычка 5V_EN должна быть установлена.
IN1 - 5V, IN2 - GND - движение вперед
IN1 - GND, IN2 - 5V - движение назад
ENA - 5V - максимальная скорость движения
ENA - GND - остановка
ENA - ШИМ - изменение скорости пропорционально ширине импульса.
Подключение двух моторов и состояние выводов модуля
Перемычки CSA/CSB и U1-U4 должны быть все установлены.
Перемычка 5V_EN должна быть установлена.
IN1 - 5V, IN2 - GND - движение вперед канал А
IN1 - GND, IN2 - 5V - движение назад канал А
ENA - 5V - максимальная скорость движения канал А
ENA - GND - остановка канал А
ENA - ШИМ - изменение скорости на канале А пропорционально ширине импульса
IN3 - 5V, IN4 - GND - движение вперед канал B
IN3 - GND, IN4 - 5V - движение назад канал B
ENB - 5V - максимальная скорость движения канал B
ENB - GND - остановка канал B
ENB - ШИМ - изменение скорости на канале B пропорционально ширине импульса
Подключение 4-проводного шагового двигателя
Перемычки CSA/CSB и U1-U4 должны быть все установлены.
Перемычка 5V_EN должна быть установлена.
IN1..IN4 подключаются к микроконтроллеру и управляются программно
ENA и ENB - 5В - разрешение работы двигателя
ENA или ENB - GND - двигатель не работает
Примечание: необходимо обратить внимание, что устройство может управлять не только двумя моторами. Устройство имеет два канала управления, т.е. на один канал можно подключить некоторое количество моторов, суммарный ток потребления которых не будет превышать максимально допустимый ток в соответствии с техническими характеристиками модуля. Однако, надо понимать, что все моторы одного канала будут работать синхронно! ? В качестве примера конструирования устройства с несколькими моторами, можно рассмотреть приведенный ниже скетч.
В нижеприведенном скетче автор отрабатывал возможность управления одним модулем 4 двигателей постоянного тока и одним сервоприводом. Программируется следующий режим работы двигателей:
- движение вперед в течение 5 секунд с поворотом сервопривода на угол 90 градусов;
- поворот вправо в течение 2 секунд с поворотом сервопривода на угол 180 градусов;
- движение назад в течение 5 секунд с поворотом сервопривода на угол 90 градусов;
- поворот влево в течение 2 секунд с поворотом сервопривода на угол 0 градусов;
- остановка двигателей на 3 секунды с поворотом сервопривода на угол 90 градусов.
Необходимо понять принцип организации поворота - так как колеса не могут поворачиваться, то поворот в стороны реализованы разнонаправленным вращением двигателей, т.е. при повороте вправо переднее правое и заднее правое колесо начинают вращаться назад, а переднее левое и заднее левое вращаются вперед.
Для программирования автор использует библиотеку AFMotor.
#include
#include
//Создаем объекты для двигателей
AF_DCMotor motor1(1); //канал М1 на Motor Shield — задний левый
AF_DCMotor motor2(2); //канал М2 на Motor Shield — задний правый
AF_DCMotor motor3(3); //канал М3 на Motor Shield — передний левый
AF_DCMotor motor4(4); //канал М4 на Motor Shield — передний правый
// Создаем объект для сервопривода
Servo myservo;
void setup() {
// Выбираем пин к которому подключен сервопривод
myservo.attach(9); // или 10, если воткнули в крайний разъём
// Поворачиваем сервопривод в положение 0 градусов при каждом включении
myservo.write(0);
// Пауза 5 секунд
delay(5000);
}
void loop() {
//Устанавливаем скорость 100% (0-255)
motor1.setSpeed(255);
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
// Задаем направление движение
// FORWARD - вперед
// BACKWARD - назад
// RELEASE - стоп
// Движение вперед в течении 5 секунд с поворотом сервопривода на угол 90 градусов
motor1.run(FORWARD);
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(FORWARD);
myservo.write(90); // Поворот сервопривода на угол 90 градусов
delay(5000);
// Поворот вправо в течении 2 секунд с поворотом сервопривода на угол 180 градусов
motor1.run(FORWARD);
motor2.run(BACKWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
myservo.write(180); // Поворот сервопривода на угол 180 градусов
delay(2000);
// Движение назад в течении 5 секунд с поворотом сервопривода на угол 90 градусов
motor1.run(BACKWARD);
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
myservo.write(90); // Поворот сервопривода на угол 90 градусов
delay(5000);
//Поворот влево в течении 2 секунд с поворотом сервопривода на угол 0 градусов
motor1.run(BACKWARD);
motor2.run(FORWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
myservo.write(0); // Поворот сервопривода на угол 0 градусов
delay(2000);
// Остановка двигателей на 3 секунды с поворотом сервопривода на угол 90 градусов
motor1.run(RELEASE);
motor2.run(RELEASE);
motor3.run(RELEASE);
motor4.run(RELEASE);
myservo.write(90); // Поворот сервопривода на угол 90 градусов
delay(3000);
}