Обзор драйвера мотора MX1508
В этой статье расскажу о драйвера на базе микросхемы MX1508, который идеально подойдет для управления двигателями в игрушечных автомобилями, роботах и других устройств. По сути этот драйвер может заменить популярный модуль L298N.
Технические параметры
► Напряжение питания: 2 — 10 В
► Рабочий драйвера на один канал: 1.5 А (пиковый ток 2.5 А, не более 10 секунд)
► Входной сигнал логика: 5 В
► Габариты: 24,7 х 21 х 0,5 мм
Общие сведения
Основной чип модуля это микросхема MX1508, состоящая из двух H-мост (H-Bridge), один для выхода A, второй для выхода B, каждый канал рассчитан на 1,5 А с пиком 2,5 А. H-мост широко используется в электронике и служит для изменения вращения двигателем, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытие двух отдельных транзистора изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.
Управлять двигателями можно низковольтным напряжением, ниже, чем напряжение на плате Arduino. Для управления скоростью используется широтно-импульсная модуляция (PWM).
Модуль MX1508 содержит разъем для подключения питания, два выхода A и B и разъем управления, назначение каждого можно ознакомится ниже:
► Вывод + и — — питание модуля и двигателей, от 2 до 10 В;
► Вывода A1 и A2 — используются для управления направлением вращения двигателя A;
► Вывода B1 и B2 — используются для управления направлением вращения двигателя B;
► Выходы MOTOR A — разъем для двигателя A;
► Выходы MOTOR B — разъем для двигателя B;
Подключение MX1508 к Arduino (коллекторный двигатель)
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Драйвер мотора на MX1508 x 1 шт.
► Коллекторный двигатель x 2 шт.
Подключение:
Первым делом необходимо подключить источник питания от 2 до 10 B к модулю (в примере используется 5 В от Ardyino). Далее подключаем управляющие провода A1, A2, B1, B2 к цифровым выводам Arduino 10, 9, 6 и 5. Теперь, подключаем двигатели, один к клеммам MOTOR A , а другой к клемме MOTOR B. Принципиальная схема подключения приведена ниже.
Теперь подключаем Arduino к компьютеру и загружаем счет ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
const int FwdPin_A = 10; const int BwdPin_A = 9; const int FwdPin_B = 6; const int BwdPin_B = 5; int MaxSpd = 100; // Скорость, значение 0-255 void setup() { pinMode(FwdPin_A, OUTPUT); // Устанавливаем FwdPin_A как выход pinMode(BwdPin_A, OUTPUT); // Устанавливаем BwdPin_A как выход pinMode(FwdPin_B, OUTPUT); // Устанавливаем FwdPin_B как выход pinMode(BwdPin_B, OUTPUT); // Устанавливаем BwdPin_B как выход } void loop() { // Движение двигателем A вперед analogWrite(BwdPin_A,LOW); analogWrite(FwdPin_A,MaxSpd); delay(5000); analogWrite(FwdPin_A,LOW); // Движение двигателем A назад analogWrite(BwdPin_A,MaxSpd); analogWrite(FwdPin_A,LOW); delay(5000); analogWrite(BwdPin_A,LOW); // Движение двигателем B вперед analogWrite(BwdPin_B,LOW); analogWrite(FwdPin_B,MaxSpd); delay(5000); analogWrite(FwdPin_B,LOW); // Движение двигателем B назад analogWrite(BwdPin_B,MaxSpd); analogWrite(FwdPin_B,LOW); delay(5000); analogWrite(BwdPin_B,LOW); } |
Описание скетча:
Скетч простой, не требует дополнительных библиотек. Первым делом указываем каким выводам подключены модуль.
1 2 3 4 |
const int FwdPin_A = 10; const int BwdPin_A = 9; const int FwdPin_B = 6; const int BwdPin_B = 5; |
Управление скоростью осуществляется с помощью ШИМ, для удобства используем переменную MaxSpd, в котором указываем скорость двигателя. Значение 0 значит остановка, а 255 равносильно напряжению питания и двигатели крутятся на максимальной скорости.
1 |
int MaxSpd = 100; |
Далее, мы указывает что данные вывода используем как выход.
1 2 3 4 |
pinMode(FwdPin_A, OUTPUT); pinMode(BwdPin_A, OUTPUT); pinMode(FwdPin_B, OUTPUT); pinMode(BwdPin_B, OUTPUT); |
Направление вращения двигателя, осуществляется с помощью выводов A1 и IA2 для первого двигателя и B1 и B2 для второго двигателя, то-есть, если подать на вывода A1 — 0B (LOW), а на A2 — 5B (HIGH) двигатель A будет вращаться вперед (так же и для двигателя B). Для вращения назад, необходимо подать на A1 — 5B (HIGH), а на A2 — 0B (LOW) двигатель A будет вращаться назад (так же и для двигателя B).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Движение двигателем A вперед analogWrite(BwdPin_A,LOW); analogWrite(FwdPin_A,MaxSpd); delay(5000); analogWrite(FwdPin_A,LOW); // Движение двигателем A назад analogWrite(BwdPin_A,MaxSpd); analogWrite(FwdPin_A,LOW); delay(5000); analogWrite(BwdPin_A,LOW); // Движение двигателем B вперед analogWrite(BwdPin_B,LOW); analogWrite(FwdPin_B,MaxSpd); delay(5000); analogWrite(FwdPin_B,LOW); // Движение двигателем B назад analogWrite(BwdPin_B,MaxSpd); analogWrite(FwdPin_B,LOW); delay(5000); analogWrite(BwdPin_B,LOW); } |
Если будут вопросы пишите.
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Драйвер мотора на MX1508
Мотор-колесо, диаметр 66 мм
Не могу написать комментарий о структуре главной страницы.
Хорошо бы составить список с гиперссылками на все представленные в обзоре статьи
Активно пользуюсь вашей информацией и каждый раз приходится перелистывать страницы, чтобы нгайти описание нужного устройства.
Здравствуйте,
Есть вопрос по этой плате.
Как будет выглядеть скетч при подключении двухполюсного шагового двигателя?
А что будет если подать сигналы вперед/назад одновременно?
Микросхема затормозит двигатель