Модуль двигателя MX1508, рассмотренный в этой статье, рекламируется на Aliexpress как «Двухканальная плата драйвера двигателя постоянного тока L298N, PWM Speed Dual H Bridge Stepper Module», однако присутствует микросхема MX1508 китайского производства. Также отличаются характеристики драйвера MX1508 от L298N. Давайте рассмотрим подробней данный драйвер и разберемся, как его подключить к Arduino и управлять моторами постоянного тока.
При управлении, например, с платой Arduino UNO, можно управлять двумя двигателями, при этом вращать в любом направлении каждый двигатель. Драйвер представляет из себя Н-мост с рабочим током 800 мА и пиковым током 2,5 А, а также, со встроенной системой контроля температуры.
Основной чип модуля - это микросхема MX1508, состоящая из двух H-мостов (H-Bridge), один для выхода A, второй для выхода B, каждый канал рассчитан на 0,8 А с пиком 2,5 А. H-мост широко используется в электронике и служит для изменения вращения двигателя, схема H-моста содержит четыре транзистора (ключа) с двигателем в центре, образуя H-подобную компоновку. Принцип работы прост, при одновременном закрытии двух отдельных транзисторов, изменяется полярность напряжения, приложенного к двигателю. Это позволяет изменять направление вращения двигателя. На рисунке ниже, показана работа H-мостовой схемы.
Управлять двигателем можно низковольтным напряжением, ниже, чем напряжение на плате Arduino. Для управления скоростью используется широтно-импульсная модуляция (PWM).
Модуль MX1508 содержит разъем для подключения питания, два выхода A и B, и разъем управления, с назначением каждого можно ознакомиться ниже:
Для урока понадодиться:
Первым делом, необходимо подключить источник питания от 2 до 9,6 B к модулю (в примере используется 5 В. от Arduino). Далее, подключаем управляющие провода A1, A2, B1, B2 (встречается маркировка, как на L298: IN1, IN2, IN3, IN1) к цифровым выводам Arduino 10, 11, 5 и 6. Теперь, подключаем двигатели, один к клеммам MOTOR A , а другой к клеммам MOTOR B. Схема подключения приведена ниже.
Теперь подключаем Arduino к компьютеру и загружаем скетч ниже.
const int PinA1 = 5; // (ШИМ) вывод 5 соединен с выводом А1 const int PinA2 = 6; // (ШИМ) вывод 6 соединен с выводом А2 const int PinB1 = 10; // (ШИМ) вывод 10 соединен с выводом (pin) B1 const int PinB2 = 11; //(ШИМ) вывод 11 соединен с выводом (pin)B2 byte speed = 250; // измените это значение (0-255), //чтобы управлять скоростью вращения двигателей void setup() { pinMode(PinA1, OUTPUT); // установите контакты на выход pinMode(PinA2, OUTPUT); pinMode(PinB1, OUTPUT); pinMode(PinB2, OUTPUT); Serial.begin(9600); } void loop() { Serial.println("Avanti"); forward(); delay(2000); STOP(); Serial.println("Indietro"); backward(); delay(2000); STOP(); Serial.println("Sinistra"); left(); delay(2000); STOP(); Serial.println("Destra"); right(); delay(2000); STOP(); } void backward() // Вперед. { analogWrite(PinA1, 0); analogWrite(PinA2, speed); analogWrite(PinB1, 0); analogWrite(PinB2, speed); } void forward() //Назад... { analogWrite(PinA1, speed); analogWrite(PinA2, 0); analogWrite(PinB1, speed); analogWrite(PinB2, 0); } void left() // В левую сторону { analogWrite(PinA1, speed); analogWrite(PinA2, 0); analogWrite(PinB1, 0); analogWrite(PinB2, speed); } void right() //В правую сторону { analogWrite(PinA1, 0); analogWrite(PinA2, speed); analogWrite(PinB1, speed); analogWrite(PinB2, 0); } void STOP() //Стоп { analogWrite(PinA1, 0); analogWrite(PinA2, 0); analogWrite(PinB1, 0); analogWrite(PinB2, 0); delay (2000); }
Скетч простой, не требует дополнительных библиотек. Первым делом, указываем, к каким выводам подключен модуль.
const int PinA1 = 5; // (ШИМ) вывод 5 соединен с выводом А1 const int PinA2 = 6; // (ШИМ) вывод 6 соединен с выводом А2 const int PinB1 = 10; // (ШИМ) вывод 10 соединен с выводом (pin) B1 const int PinB2 = 11; //(ШИМ) вывод 11 соединен с выводом (pin)B2
Управление скоростью осуществляется с помощью ШИМ, для удобства используем переменную speed, в которой указываем скорость двигателя. Значение «0» - значит остановка, а «255» равносильно напряжению питания, и двигатели крутятся на максимальной скорости.
byte speed = 250; // измените это значение (0-255), //чтобы управлять скоростью вращения двигателей
Далее, мы указываем, что данные выводы используем как выход.
pinMode(PinA1, OUTPUT); // установите контакты на выход pinMode(PinA2, OUTPUT); pinMode(PinB1, OUTPUT); pinMode(PinB2, OUTPUT);
Направление вращения двигателя осуществляется с помощью выводов A1 и A2 - для первого двигателя, B1 и B2 - для второго двигателя, то есть, если подать на вывод A1 — 0B (LOW), а на A2 — 5B (HIGH), двигатель A будет вращаться вперед (так же и для двигателя B). Для вращения назад, необходимо подать на A1 — 5B (HIGH), а на A2 — 0B (LOW), двигатель A будет вращаться назад (так же и для двигателя B). На основании этого напишем небольшие функции, которые позволят вращать оба двигателя вперед, назад, в противоположном направлении, и останавливать вращение обоих двигателей.
void backward() // Вперед. { analogWrite(PinA1, 0); analogWrite(PinA2, speed); analogWrite(PinB1, 0); analogWrite(PinB2, speed); } void forward() //Назад... { analogWrite(PinA1, speed); analogWrite(PinA2, 0); analogWrite(PinB1, speed); analogWrite(PinB2, 0); } void left() // В левую сторону { analogWrite(PinA1, speed); analogWrite(PinA2, 0); analogWrite(PinB1, 0); analogWrite(PinB2, speed); } void right() //В правую сторону { analogWrite(PinA1, 0); analogWrite(PinA2, speed); analogWrite(PinB1, speed); analogWrite(PinB2, 0); } void STOP() //Стоп { analogWrite(PinA1, 0); analogWrite(PinA2, 0); analogWrite(PinB1, 0); analogWrite(PinB2, 0); delay (2000); }
Реализуем вывод в монитор порта информацию о направлении вращения двигателя в данный момент.
Serial.println("Avanti"); forward(); delay(2000);
Используя драйвер MX1508, собрать данные проекты не составит труда, так как код из проектов выше совместим с драйвером MX1508.
Появились вопросы или предложения, не стесняйся, пиши в комментарии!
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
Скетч подключения MX1508 к Arduino.ino | 2 Kb | 942 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 27 ноября , 2020
Читайте также
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.