Драйвер моторов TB6612

Описание

Драйвер моторов представляет из себя плату с микросхемой, позволяющей управлять моторами.

Напрямую, подключать моторы к контроллерам очень опасно, так как моторы потребляют значительно больший ток, чем может выдать контроллер. Для решения задачи разделения питания и управления моторами и существуют драйверы моторов.

Драйвер моторов на базе микросхемы TB6612 позволит управлять мощными моторами или сервоприводом. С помощью данного драйвера можно независимо управлять двумя коллекторными моторами или одним шаговым. Драйвер обладает компактными размерами и будет незаменим в управлении небольшими роботами или в компактных проектах, где использовать шилды или громоздкие драйверы затруднительно.

Модуль имеет два управляющих канала, каждый из которых позволяет управлять нагрузкой до 1,2 А. Два канала можно объединить в один и управлять одним мощным мотором до 2,4 А.

Микросхема имеет встроенную защиту по температуре, перенапряжению и короткому замыканию.

Технические характеристики:

  • Рабочее напряжение (логическая часть): 2,7 - 5,5 В
  • Рабочее напряжение (силовая часть): 4,5 - 13,5 В
  • Номинальный ток на 1 канал: 1,2 А
  • Максимальный (пиковый) ток на 1 канал: 3,2 А
  • Количество каналов: 2
  • Максимальная частота ШИМ: 100 кГц

Физические размеры:

  • Модуль (Д х Ш х В): 30 х 21 х 12 мм

Преимущества драйвера:

  • Имеет два канала для подключения моторов
  • Компактность исполнения платы (небольшие размеры)
  • Встроенная защита от перенапряжения
  • Встроенная защита от температуры
  • Встроенная защита от короткого замыкания

Ресурсы для загрузки:

Модуль драйвера

На рисунке ниже представлен модуль драйвера и описание его компонентов:

  1. Выводы управления драйвером и питание микросхемы драйвера
  2. Микросхема драйвера TB6612
  3. Клеммы подключения питания моторов
  4. Клеммы подключения мотора А
  5. Клеммы подключения мотора Б

Помните, что выводы PWMA и PWMB должны быть подключены к контактам ШИМ.

Библиотека для работы с драйвером

Описание работы с библиотекой

Для более удобной и простой работы с драйвером моторов воспользуйтесь Библиотекой для Arduino. Данная библиотека содержит все основные функции и методы, необходимы для вращения моторов.

Создание объекта драйвера

Для создания объекта, для работы с драйвером, воспользуйтесь одним из двух вариантов. Выберите нужный вариант в зависимости от количества подключенных моторов.

Подключен один мотор

TB6612SE driver(pinPwmA, pinAin1, pinAin2);

Параметры:

  • pinPwmA (uint8_t) - номер вывода ардуино, куда подключен контакт PMA драйвера
  • pinAin1 (uint8_t) - номер вывода ардуино, куда подключен контакт AIN1 драйвера
  • pinAin2 (uint8_t) - номер вывода ардуино, куда подключен контакт AIN2 драйвера

Подключены два мотора

TB6612SE driver(pinPwmA, pinAin1, pinAin2, pinPwmB, pinBin1, pinBin2);

Параметры:

  • pinPwmA (uint8_t) - номер вывода ардуино, куда подключен контакт PMA драйвера
  • pinAin1 (uint8_t) - номер вывода ардуино, куда подключен контакт AIN1 драйвера
  • pinAin2 (uint8_t) - номер вывода ардуино, куда подключен контакт AIN2 драйвера
  • pinPwmB (uint8_t) - номер вывода ардуино, куда подключен контакт PMB драйвера
  • pinBin1 (uint8_t) - номер вывода ардуино, куда подключен контакт BIN1 драйвера
  • pinBin2 (uint8_t) - номер вывода ардуино, куда подключен контакт BIN2 драйвера

Команды (методы) драйвера

Движение (вращение) вперёд

Вращает один или оба мотора вперёд (вращение вала против часовой стрелки).

forward(speed, ms)

Параметры:

  • speed (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью.
  • ms (unsigned long) - необязательный - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью.

Движение (вращение) назад

Вращает один или оба мотора назад (вращение вала по часовой стрелке).

back(speed, ms)

Параметры:

  • speed (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью.
  • ms (unsigned long) - необязательный - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью.

Остановка (тормоз) мотора

brake(ms)

Параметры:

  • ms (unsigned long) - необязательный - время задержки остановки. Запускает функцию delay() после остановки вращения. Если параметр не указан, то запускается только остановка.

Поворот вправо

Имеет смысл только при подключении двух моторов. Вращает правый мотор (мотор А) назад, а левый мотор (мотор B) вперёд.

right(speed, ms);

Параметры:

  • speed (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью.
  • ms (unsigned long) - необязательный - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью.

Поворот влево

Имеет смысл только при подключении двух моторов. Вращает левый мотор (мотор B) назад, а правый мотор (мотор A) вперёд.

left(speed, ms);

Параметры:

  • speed (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью.
  • ms (unsigned long) - необязательный - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью.

Примеры подключения и использования

Пример №1. Вентилятор

Соберём простейший вентилятор, который запускается при нажатии кнопка и вращает мотор пока кнопка нажата.

Шаг 1. Соберите компоненты для урока.

Шаг 2. Соберите элементы в соответствии со схемой ниже.

Шаг 3. Загрузите скетч на контроллер.

#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(); //выключить мотор
  }
}

Шаг 4. Охлаждайтесь!

Подключите питание к контроллеру (или оставьте его подключенным к компьютеру). Нажимая на кнопку мотор вращается с заданной скоростью. Добавьте на вал мотора любой пропеллер и получите полноценный вентилятор!

Пример №2. Два мотора.

Теперь продемонстрируем работу двух моторов, подключенных к драйверу. Управлять вращением моторов будем с помощью кнопок. Чёрная отвечает за вращение вперёд, белая за вращение назад.

Шаг 1. Соберите компоненты для урока.

Шаг 2. Соберите элементы в соответствии со схемой ниже.

Шаг 3. Загрузите скетч на контроллер.

//полное описание возможностей библиотеки на сайте 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 секунду
  }
}

Шаг 4. Результат

Нажимайте на кнопки управления моторами и наблюдайте изменения во вращении. По нажатии белой кнопки моторы вращаются с более медленной скоростью вперёд, в течении 1 секунды. При нажатии на чёрную кнопку, моторы вращаются назад с более быстрой скоростью, в течении одной секунды.