Драйвер моторов представляет из себя плату с микросхемой, позволяющей управлять моторами.
Напрямую, подключать моторы к контроллерам очень опасно, так как моторы потребляют значительно больший ток, чем может выдать контроллер. Для решения задачи разделения питания и управления моторами и существуют драйверы моторов.
Драйвер моторов на базе микросхемы TB6612 позволит управлять мощными моторами или сервоприводом. С помощью данного драйвера можно независимо управлять двумя коллекторными моторами или одним шаговым. Драйвер обладает компактными размерами и будет незаменим в управлении небольшими роботами или в компактных проектах, где использовать шилды или громоздкие драйверы затруднительно.
Модуль имеет два управляющих канала, каждый из которых позволяет управлять нагрузкой до 1,2 А. Два канала можно объединить в один и управлять одним мощным мотором до 2,4 А.
Микросхема имеет встроенную защиту по температуре, перенапряжению и короткому замыканию.
На рисунке ниже представлен модуль драйвера и описание его компонентов:
Помните, что выводы PWMA и PWMB должны быть подключены к контактам ШИМ.
Для более удобной и простой работы с драйвером моторов воспользуйтесь Библиотекой для Arduino. Данная библиотека содержит все основные функции и методы, необходимы для вращения моторов.
Для создания объекта, для работы с драйвером, воспользуйтесь одним из двух вариантов. Выберите нужный вариант в зависимости от количества подключенных моторов.
TB6612SE driver(pinPwmA, pinAin1, pinAin2);
Параметры:
TB6612SE driver(pinPwmA, pinAin1, pinAin2, pinPwmB, pinBin1, pinBin2);
Параметры:
Вращает один или оба мотора вперёд (вращение вала против часовой стрелки).
forward(speed, ms)
Параметры:
Вращает один или оба мотора назад (вращение вала по часовой стрелке).
back(speed, ms)
Параметры:
brake(ms)
Параметры:
Имеет смысл только при подключении двух моторов. Вращает правый мотор (мотор А) назад, а левый мотор (мотор B) вперёд.
right(speed, ms);
Параметры:
Имеет смысл только при подключении двух моторов. Вращает левый мотор (мотор B) назад, а правый мотор (мотор A) вперёд.
left(speed, ms);
Параметры:
Соберём простейший вентилятор, который запускается при нажатии кнопка и вращает мотор пока кнопка нажата.
Что нужно: | Кол-во, шт |
---|---|
Контроллер SmartUno | 1 |
Sensor shield | 1 |
Драйвер моторов TB6612 | 1 |
Коллекторный мотор FA-130 | 1 |
Модуль кнопки (черный) | 1 |
Провода мама-мама | 8 |
Отсек для 2-х батареек | 1 |
Аккумулятор АА | 2 |
#include <TB6612SE.h> //библиотека для работы с драйвером
const int BUT_BLACK = 12; //вывод подключения кнопки
TB6612SE motor(5, 2, 4); //подключение драйвера, выводы PWMA, AIN1, AIN2
void setup() {
}
void loop() {
//Если кнопка нажата
if (digitalRead(BUT_BLACK)) {
motor.forward(25); //включить мотор со скоростью 25
} else { //иначе
motor.brake(); //выключить мотор
}
}
Подключите питание к контроллеру (или оставьте его подключенным к компьютеру). Нажимая на кнопку мотор вращается с заданной скоростью. Добавьте на вал мотора любой пропеллер и получите полноценный вентилятор!
Теперь продемонстрируем работу двух моторов, подключенных к драйверу. Управлять вращением моторов будем с помощью кнопок. Чёрная отвечает за вращение вперёд, белая за вращение назад.
Что нужно: | Кол-во, шт |
---|---|
Контроллер SmartUno | 1 |
Sensor shield | 1 |
Драйвер моторов TB6612 | 1 |
Коллекторный мотор FA-130 | 2 |
Модуль кнопки (черный) | 1 |
Модуль кнопки (белый) | 1 |
Провода мама-мама | 14 |
Отсек для 2-х батареек | 1 |
Аккумулятор АА | 2 |
//полное описание возможностей библиотеки на сайте http://know.smartelements.ru/
#include <TB6612SE.h> //библиотека для работы с драйвером моторов
const int BUT_BLACK = 12; //вывод подключения чёрной кнопки
const int BUT_WHITE = 11; //вывод подключения белой кнопки
TB6612SE motor(5, 2, 4, 6, 7, 8); //создание объекта драйвера с номерами выводов (PWMA, AIN1, AIN2, PWMB, BIN1, BIN2)
void setup() {
}
void loop() {
//Если сработала чёрная кнопка
if (digitalRead(BUT_BLACK)) {
motor.forward(25, 1000); //запустить моторы вперёд со скоростью 25 на 1 секунду
} else if (digitalRead(BUT_WHITE)) { //если сработала белая кнопка
motor.back(35, 1000); //запустить моторы назад со скоростью 35 на 1 секунду
}
}
Нажимайте на кнопки управления моторами и наблюдайте изменения во вращении. По нажатии белой кнопки моторы вращаются с более медленной скоростью вперёд, в течении 1 секунды. При нажатии на чёрную кнопку, моторы вращаются назад с более быстрой скоростью, в течении одной секунды.