Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Драйвер моторов 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 мм ==== Преимущества драйвера: ==== * Имеет два канала для подключения моторов * Компактность исполнения платы (небольшие размеры) * Встроенная защита от перенапряжения * Встроенная защита от температуры * Встроенная защита от короткого замыкания ==== Ресурсы для загрузки: ==== * [[https://files.smartelements.ru/datasheet/TB6612.pdf|Даташит TB6612]] * [[https://files.smartelements.ru/know_libs/TB6612SE.zip|Библиотека для Arduino]] ==== Смотрите также ==== * [[main:motors:17hs4401|Управление шаговым мотором с помощью драйвера TB6612 (примеры №1 и №2)]] ===== Модуль драйвера ===== На рисунке ниже представлен модуль драйвера и описание его компонентов: {{ :главная:моторы_драйверы_шасси:компоненты_драйвера.png?nolink |}} - Выводы управления драйвером и питание микросхемы драйвера - Микросхема драйвера TB6612 - Клеммы подключения питания моторов - Клеммы подключения мотора А - Клеммы подключения мотора Б **//Помните, что выводы PWMA и PWMB должны быть подключены к контактам ШИМ.//** ===== Библиотека для работы с драйвером ===== ==== Описание работы с библиотекой ==== Для более удобной и простой работы с драйвером моторов воспользуйтесь [[https://files.smartelements.ru/know_libs/TB6612SE.zip|Библиотекой для Arduino]]. Данная библиотека содержит все основные функции и методы, необходимы для вращения моторов. ==== Создание объекта драйвера ==== Для создания объекта, для работы с драйвером, воспользуйтесь одним из двух вариантов. Выберите нужный вариант в зависимости от количества подключенных моторов. === Подключен один мотор === <file Arduino> TB6612SE driver(pinPwmA, pinAin1, pinAin2); </file> Параметры: * **pinPwmA** (uint8_t) - номер вывода ардуино, куда подключен контакт PMA драйвера * **pinAin1** (uint8_t) - номер вывода ардуино, куда подключен контакт AIN1 драйвера * **pinAin2** (uint8_t) - номер вывода ардуино, куда подключен контакт AIN2 драйвера === Подключены два мотора === <file Arduino> TB6612SE driver(pinPwmA, pinAin1, pinAin2, pinPwmB, pinBin1, pinBin2); </file> Параметры: * **pinPwmA** (uint8_t) - номер вывода ардуино, куда подключен контакт PMA драйвера * **pinAin1** (uint8_t) - номер вывода ардуино, куда подключен контакт AIN1 драйвера * **pinAin2** (uint8_t) - номер вывода ардуино, куда подключен контакт AIN2 драйвера * **pinPwmB** (uint8_t) - номер вывода ардуино, куда подключен контакт PMB драйвера * **pinBin1** (uint8_t) - номер вывода ардуино, куда подключен контакт BIN1 драйвера * **pinBin2** (uint8_t) - номер вывода ардуино, куда подключен контакт BIN2 драйвера ==== Команды (методы) драйвера ==== === Движение (вращение) вперёд === Вращает один или оба мотора вперёд (вращение вала против часовой стрелки). {{ :главная:моторы_драйверы_шасси:вращение_мотора_против_чс.png?nolink |}} <file Arduino> forward(speed, ms) </file> Параметры: * **speed** (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью. * **ms** (unsigned long) - __необязательный__ - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью. === Движение (вращение) назад === Вращает один или оба мотора назад (вращение вала по часовой стрелке). {{ :главная:моторы_драйверы_шасси:вращение_мотора_по_чс.png?nolink |}} <file Arduino> back(speed, ms) </file> Параметры: * **speed** (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью. * **ms** (unsigned long) - __необязательный__ - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью. === Остановка (тормоз) мотора === <file Arduino> brake(ms) </file> Параметры: * **ms** (unsigned long) - __необязательный__ - время задержки остановки. Запускает функцию delay() после остановки вращения. Если параметр не указан, то запускается только остановка. === Поворот вправо === Имеет смысл только при подключении двух моторов. Вращает правый мотор (мотор А) назад, а левый мотор (мотор B) вперёд. <file Arduino> right(speed, ms); </file> Параметры: * **speed** (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью. * **ms** (unsigned long) - __необязательный__ - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью. === Поворот влево === Имеет смысл только при подключении двух моторов. Вращает левый мотор (мотор B) назад, а правый мотор (мотор A) вперёд. <file Arduino> left(speed, ms); </file> Параметры: * **speed** (int) - скорость вращения мотора/ов (от минимальной 0 до максимальной 255). При скорости 0 - не вращается. При скорости 255 - вращается с максимально - возможной скоростью. * **ms** (unsigned long) - __необязательный__ - время задержки вращения. Запускает функцию delay() после начала вращения. По окончании заданного времени вызывает метод brake(), который останавливает вращение. Если параметр не указан, то запускается только вращение с заданной скоростью. ===== Примеры подключения и использования ===== ==== Пример №1. Вентилятор ==== Соберём простейший вентилятор, который запускается при нажатии кнопка и вращает мотор пока кнопка нажата. === Шаг 1. Соберите компоненты для урока. === ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер SmartUno]]| 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]]| 1 | | [[httpss://smartelements.ru/collection/motory-dravery-shassi/product/drayver-motorov-tb6612|Драйвер моторов TB6612]]| 1 | | [[httpss://smartelements.ru/collection/motory-dravery-shassi/product/kollektornyy-motor-fa-130|Коллекторный мотор FA-130]]| 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-knopki-chernyy|Модуль кнопки (черный)]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] | 8 | | [[httpss://smartelements.ru/collection/elementy-pitaniya/product/otsek-dlya-batareek-2haa-bez-shtekera-2|Отсек для 2-х батареек]] | 1 | | [[httpss://smartelements.ru/collection/elementy-pitaniya/product/akkumulyator-nimh-aa-2500mah|Аккумулятор АА]] | 2 | === Шаг 2. Соберите элементы в соответствии со схемой ниже. === {{ :главная:моторы_драйверы_шасси:motor_deriver_fan.png?nolink |}} === Шаг 3. Загрузите скетч на контроллер. === <file Arduino> #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(); //выключить мотор } } </file> === Шаг 4. Охлаждайтесь! === Подключите питание к контроллеру (или оставьте его подключенным к компьютеру). Нажимая на кнопку мотор вращается с заданной скоростью. Добавьте на вал мотора любой пропеллер и получите полноценный вентилятор! ==== Пример №2. Два мотора. ==== Теперь продемонстрируем работу двух моторов, подключенных к драйверу. Управлять вращением моторов будем с помощью кнопок. Чёрная отвечает за вращение вперёд, белая за вращение назад. === Шаг 1. Соберите компоненты для урока. === ^ Что нужно: ^ Кол-во, шт ^ | [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер SmartUno]]| 1 | | [[httpss://smartelements.ru/collection/shildy/product/sensor-shield|Sensor shield]]| 1 | | [[httpss://smartelements.ru/collection/motory-dravery-shassi/product/drayver-motorov-tb6612|Драйвер моторов TB6612]]| 1 | | [[httpss://smartelements.ru/collection/motory-dravery-shassi/product/kollektornyy-motor-fa-130|Коллекторный мотор FA-130]]| 2 | | [[httpss://smartelements.ru/collection/moduli/product/modul-knopki-chernyy|Модуль кнопки (черный)]] | 1 | | [[httpss://smartelements.ru/collection/moduli/product/modul-knopki-belyy|Модуль кнопки (белый)]] | 1 | | [[httpss://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] | 14 | | [[httpss://smartelements.ru/collection/elementy-pitaniya/product/otsek-dlya-batareek-2haa-bez-shtekera-2|Отсек для 2-х батареек]] | 1 | | [[httpss://smartelements.ru/collection/elementy-pitaniya/product/akkumulyator-nimh-aa-2500mah|Аккумулятор АА]] | 2 | === Шаг 2. Соберите элементы в соответствии со схемой ниже. === {{ :главная:моторы_драйверы_шасси:motor_deriver_two_motors.png?nolink |}} === Шаг 3. Загрузите скетч на контроллер. === <file Arduino> //полное описание возможностей библиотеки на сайте https://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 секунду } } </file> === Шаг 4. Результат === Нажимайте на кнопки управления моторами и наблюдайте изменения во вращении. По нажатии белой кнопки моторы вращаются с более медленной скоростью вперёд, в течении 1 секунды. При нажатии на чёрную кнопку, моторы вращаются назад с более быстрой скоростью, в течении одной секунды.