Управление двигателем от ESP8266. Контроллер двигателей TB6612FNG
Зачем нам нужен контроллер двигателей? Не можем ли мы просто подключить двигатели непосредственно к ESP8266 или Arduino, как светодиод или любой другой компонент? К сожалению нет. Выходные порты микроконтроллера просто неспособны обрабатывать количество тока, которое будет потреблять большинство двигателей. Максимальный ток на выводах большинства микроконтроллеров составляет 40 мА. Маленький игрушечный мотор, используемый в вашем роботе, может легко превзойти его, потребляя ток 500 мА и выше.
Микросхема контроллера двигателя — TOSHIBA TB6612FNG
БЫСТРЫЙ ПРОСМОТР СПЕЦИФИКАЦИЙ ДРАЙВЕРА ДВИГАТЕЛЯ TB6612FNG
- Два независимых канала двунаправленного управления двигателем
- Диапазон логического напряжения микросхемы 2,7 Вольт — 5,5 Вольт
- Диапазон напряжения питания двигателя 2,5 Вольт — 13,5 Вольт
- Ток выхода — 1 Aмпер непрерывный, максимальный 3 Aмпер на канал. Имеется возможность переводить каналы на двойной выход.
ПОДКЛЮЧЕНИЕ TB6612FNG К ВАШЕМУ МИКРОКОНТРОЛЛЕРУ, ИСТОЧНИКУ ПИТАНИЯ ДВИГАТЕЛЯ И ДВИГАТЕЛЯМ
Левая сторона
- GND — заземление микроконтроллера
- VCC — VCC от микроконтроллера (2.7V-5.5V)
- AO1 — Выход на (-) вывод двигателя A
- AO2 — выход на (+) вывод двигателя A
- BO2 — выход на (+) вывод двигателя B
- BO1 — выход на (-) вывод двигателя B
- VMOT — положительный полюс аккумуляторной батареи
- GND — отрицательный полюс аккумуляторной батареи
Правая сторона
- PWMA — штырь PWM на микроконтроллере
- AIN2 — цифровой вывод на микроконтроллер
- AIN1 — цифровой штырь на микроконтроллере
- STBY — цифровой вывод на микроконтроллере или привязка к VCC
- BIN1 — цифровой вывод на микроконтроллере
- BIN2 — цифровой вывод на микроконтроллере
- PWMB — штырь PWM на микроконтроллере
- GND — GND микроконтроллера
Прежде всего, ничего не произойдет, если вывод STBY не имеет высокого уровня (логическая 1). Можно подключить этот вывод к микроконтроллеру и управлять им программно, либо просто выставить на нём логическую единицу подав на него питание с вывода VCC микросхемы TB6612FNG .
Если вы хотите, чтобы двигатель A повернулся по часовой стрелке, установите AIN1 в HIGH, AIN2 — LOW, PWMA -> 0
Если вы хотите, чтобы двигатель A повернулся против часовой стрелки, установите AIN1 в LOW, AIN2 — HIGH, PWMA -> 0
Если вы не хотите использовать управление скоростью PWM для двигателей, вы можете просто связать контакты PWMA и PWMB с VCC. В случае Arduino это будет эквивалент AnalogWrite (5,255) ;. Также в отношении значений ШИМ — вам необходимо определить минимальный рабочий цикл ШИМ для минимальной скорости, с которой вы можете управлять своими двигателями. Установите значение ШИМ слишком низко, и вы можете поместить двигатель в состояние сваливания, которое будет потреблять слишком много тока. Низкие значения PWM также могут приводить к отрывистому режиму работы.
В моем конкретном случае для минимальной скорости работы моторов было необходимо значение ШИМ 35. Это будет функцией вашего источника питания двигателя, размера двигателя и веса вашего робота.
Теперь, когда вы можете контролировать направление и скорость вращения каждого двигателя, вы можете легко управлять своим роботом. В случае Clusterbot вращающийся двигатель A и B в одном направлении с той же скоростью будет приводить к относительно прямому движению в этом направлении. Вращайте двигатели в противоположных направлениях, и вы получите очень быстрый поворот нулевого радиуса. Вы можете экспериментировать с разными значениями для разных типов наклонных поворотов.
Из-за сочетания плохого дизайна шасси и дешевых игрушечных двигателей скорость на каждом двигателе немного отличается. Вы можете компенсировать, изменив рабочий цикл ШИМ для одного из двигателей.Например, вы можете обнаружить, что вам необходимо установить двигатель A на 255 и двигатель B на 249 для движения по прямой линии. Для калибровки может потребоваться небольшое экспериментирование.
Используемые ресурсы: Урок 3. Усиливаем «ноги робота». Драйвер двигателей.
TB6612FNG Техническое описание
Техническое описание FA-130RA Mabuchi