Ардуино управление двигателем

Содержание

Ардуино управление двигателем, как это осуществить, зачем нам нужен контроллер двигателей? Не можем ли мы просто подключить двигатели непосредственно к Arduino или ESP8266, как светодиод или любой другой компонент? К сожалению нет. Выходные порты микроконтроллера не способны выдержать ток, потребляемый большинством электродвигателями. Максимальный ток на выводах большинства микроконтроллеров составляет 40 мА. Маленький желтый электромотор, используемый в вашем роботе, может легко превзойти его, потребляя ток 500 мА и выше.

TB6612FNG можно использовать для привода в действие одного или двух моторов, имеющих диапазон питания по напряжению 2,5 В до 13,5 В, по номинальному постоянному току 1,2 А, и пиковому току 3,2 А (на канал), т. е. это потребляемый ток, когда вы удерживаете кратковременно мотор в неподвижном состоянии, такая ситуация происходить очень часто при движении робота. Микросхема собрана на двух стандартных H-образных мостах на полевых транзисторах, позволяющих не только контролировать направление (против часовой стрелки /по часовой) и скорость вращения моторов, а также тормозить и останавливать их.

Две пары входных сигналов (AIN1, AIN2 и BIN1, BIN2) могут использоваться для управления двумя двигателями в одном из четырех функциональных режимов — CW, CCW, короткое торможение и останов. Два выхода двигателя (A и B) могут управляться отдельно, скорость каждого двигателя регулируется с помощью входного сигнала PWM с частотой до 100 кГц. Чтобы вывести двигатель из режима ожидания, на вывод STBY следует подать высокий логический уровень.

Кроме того необходимо учитывать, какой тип моторов Вы собираетесь использовать, существуют различные типы двигателей (шаговые, постоянного тока, бесщеточные), поэтому необходимо знать, а подойдет ли контроллер к Вашему типу моторов.

Микросхема контроллера двигателя — TOSHIBA TB6612FNG:

БЫСТРЫЙ ПРОСМОТР СПЕЦИФИКАЦИЙ КОНТРОЛЛЕРА ДВИГАТЕЛЯ TB6612FNG

  • Два независимых канала двунаправленного управления двигателем
  • Диапазон логического напряжения микросхемы 2,7 Вольт — 5,5 Вольт
  • Диапазон напряжения питания двигателя 2,5 Вольт — 13,5 Вольт
  • Ток выхода — 1 Aмпер непрерывный, максимальный 3 Aмпер на канал. Имеется возможность переводить каналы на двойной выход.

АРДУИНО УПРАВЛЕНИЕ ДВИГАТЕЛЕМ И/ИЛИ ДВИГАТЕЛЯМИ | СХЕМА ПОДКЛЮЧЕНИЯ

Arduino UNO мы приобрели в магазине FYD Open Source Hardware

Контроллер для двух моторов 1А TB6612FNG приобрели там же в FYD Open Source Hardware

Соединительные провода приобретали в магазине IGMOPNRQ module Store

Конденсаторы 0,1 мкФ — 1,0 мкФ приобрели в магазине Fantasy Electronics CO., Ltd

АРДУИНО УПРАВЛЕНИЕ ДВИГАТЕЛЕМ | ПОДРОБНОЕ ОПИСАНИЕ КОНТРОЛЛЕРА ДВИГАТЕЛЕЙ НА МИКРОСХЕМЕ TB6612FNG

  • VM — плюс аккумуляторной батареи электродвигателей (2,5 В -13,5 В по номинальномупостоянному току 1,2 А, ипиковому току 3,2 А)
  • VCC — напряжение питания логики от микроконтроллера для питания микросхемы и интерфейса с микроконтроллером (2,7 В — 5,5 В).
  • GND — общая земля для напряжения двигателя и логического напряжения (все контакты GND подключены вместе)
  • AO1 — Выход на (-) вывод двигателя A .
  • AO2 — выход на (+) вывод двигателя A .
  • BO2 — выход на (+) вывод двигателя B .
  • BO1 — выход на (-) вывод двигателя B .
  • GND — минус аккумуляторной батареи электродвигателей.
  • PWMA — вход управлением скоростью вращения электродвигателем A подключается к выходу PWM (ШИМ) микроконтроллера
  • AIN2 — вход 2, определяющий направление вращения двигателя А, подключается к одному из цифровых выходов микроконтроллера
  • AIN1 — вход 1, определяющий направление вращения двигателя А, подключается к одному из цифровых выходов микроконтроллера
  • STBY — вход ожидания цифровой вывод на микроконтроллере или привязка к VCC
  • BIN1 — вход 1, определяющий направление вращения двигателя B, подключается к одному из цифровых выходов микроконтроллера
  • BIN2 — вход 2, определяющий направление вращения двигателя B, подключается к одному из цифровых выходов микроконтроллера
  • PWMB — вход управлением скоростью вращения электродвигателем B подключается к выходу PWM (ШИМ) микроконтроллер
  • GND — минус питания GND микроконтроллера и управления микросхемы TB6612FNG

Прежде всего, ничего не произойдет, если вывод STBY не имеет высокого уровня (логическая 1). Можно подключить этот вывод к микроконтроллеру и управлять им программно, либо просто выставить на нём логическую единицу подав на него питание с вывода VCC микросхемы TB6612FNG .

Если вы хотите, чтобы двигатель A повернулся по часовой стрелке, установите AIN1 в HIGH, AIN2 — LOW, PWMA — ШИМ

Если вы хотите, чтобы двигатель A повернулся против часовой стрелки, установите AIN1 в LOW, AIN2 — HIGH, PWMA -ШИМ

Если вы не хотите использовать управление скоростью PWM для двигателей, вы можете просто связать контакты PWMA и PWMB с VCC. В случае Arduino это будет эквивалент AnalogWrite (5,255) ;. Также в отношении значений ШИМ — вам необходимо определить минимальный рабочий цикл ШИМ для минимальной скорости, с которой вы можете управлять своими двигателями. Установите значение ШИМ слишком низко, и вы можете поместить двигатель в состояние сваливания, которое будет потреблять слишком много тока. Низкие значения PWM также могут приводить к отрывистому режиму работы.

В моем конкретном случае для минимальной скорости работы моторов было необходимо значение ШИМ равное 35. Это будет функцией вашего источника питания двигателя, размера двигателя и веса вашего робота.

Теперь, когда вы можете контролировать направление и скорость вращения каждого двигателя, вы можете легко управлять своим роботом. На нашем роботе (с двумя приводными колесами и двумя опорными свободно вращающемися колесиками от мебели) вращающийся двигатель A и B в одном направлении с одной и той же скоростью будет приводить к относительно прямому движению в этом направлении. Вращайте двигатели в противоположных направлениях, и вы получите очень быстрый поворот нулевого радиуса. Вы можете экспериментировать с разными значениями для разных типов поворотов.

Из-за сочетания плохого дизайна шасси и дешевых желтых китайских двигателей, скорость на каждом двигателе немного отличается. Вы можете компенсировать, изменив рабочий цикл ШИМ для одного из двигателей. Например, вы можете обнаружить, что вам необходимо установить двигатель A на 255 и двигатель B на 249 для движения по прямой линии. Для калибровки может потребоваться небольшое экспериментирование.

Каждый вывод и его функции описаны в таблице ниже.

AIN1 / BIN1 AIN2 / BIN2 PWMA / PWMB A01 / B01 A02 / B02 Режимы работы электромоторов
HIGH HIGH HIGH/LOW LOW LOW Short brake — Торможение на небольшой промежуток времени, обычно указывается время в миллисекундах (1/1000 секунды)
LOW HIGH HIGH LOW HIGH CCW — Вращение по часовой стрелке
LOW HIGH LOW LOW LOW Short brake — Торможение на небольшой промежуток времени, обычно указывается время в миллисекундах (1/1000 секунды)
HIGH LOW HIGH HIGH LOW CW — Вращение против часовой стрелке
HIGH LOW LOW LOW LOW Short brake — Торможение на небольшой промежуток времени, обычно указывается время в миллисекундах (1/1000 секунды)
LOW LOW HIGH OFF OFF Stop — Стоп

АРДУИНО УПРАВЛЕНИЕ ДВИГАТЕЛЕМ | БИБЛИОТЕКА

В Интернете хватает уже готовых программ (скетчей) для работы Arduino с микросхемой TB6612FNG, но мы не ищем легких путей, нам нужна универсальная программа на все случаи жизни Заодно вспомним как подключается библиотека в нашей незабвенной ArduinoIDE. В процессе решения задачи, выучим язык С++ .

Библиотека — это универсальная программа, уже кем то для нас с Вами написанная, с уже готовыми функциями предназначенными для решения конкретной задачи. Нам остается загрузить библиотеку в ArduinoIDE и указать ей куда мы её загрузили. Ну и конечно, при самостоятельном написании программы (скетча) в самом начале скетча, подключить библиотеку в виде файла с расширением .h , например так: #include SparkFun_TB6612.h

  1. для начала загружаем библиотеку от компании SparkFun Electronics по этой ссылке, или качаем последнюю версию из их же репозитория на GitHub, в любую папку на Вашем компьютере, главное не забыть в какую, в дальнейшем понадобится.

2. Запускаем ArduinoIDE. Жмем: Скетч (1) — Подключить библиотеку(2) — Добавить ZIP Библиотеку . . .(3)

3. В левой части (Folders), появившегося окна, ищем ту самую папку в которую мы загрузили библиотеку от компании SparkFun Electronics (см. пункт 1.) . В правой части (Files) находим и подсвечиваем заархивированный (.ZIP) файл: SparkFun_TB6612FNG_ Arduino_ Library_master.zip, нажимаем OK (стрелка 1)

4. В нижней части следующего появившегося окна (черная часть для сообщений), читаем сообщение: Библиотека добавлена. Проверьте меню Подключить библиотеку

5. Проверяем меню Подключить библиотеку. Жмем: Скетч (1) — Подключить библиотеку(2) — в раскрывшемся длинном списке, почти в самом конце обнаруживаем библиотеку SparkFun TB6612FNG Мотор Driver Library(3).

6. Запускаем пример программы (скетча) от SparkFun TB6612FNG Мотор Driver. Жмем: Файл (1) — Примеры(2) — в раскрывшемся длинном списке, почти в самом конце, обнаруживаем библиотеку SparkFun TB6612FNG Мотор Driver Library(3) — и пример МоторTestRun(4)

7. Получаем пример программы (скетча) от SparkFun МоторTestRun. Она состоит из изменяемых входных данных и функций библиотеки SparkFun_TB6612.h

АРДУИНО УПРАВЛЕНИЕ ДВИГАТЕЛЕМ | ПРОГРАММА (СКЕТЧ)

Блок схема подключения с микроконтроллеру и моторам микросхемы — TOSHIBA TB6612FNG:

Все модули

Модуль контроллера моторов от WeMos на микросхеме TB6612FNG с интерфейсом I2C на микроконтроллере STM32

Компания WeMos Electronics в 2014 году предложила простую идею, на основе микроконтроллера ESP8266 от компании Espressif Systems, спроектировала единого размера небольшие совместимые модули как для центрального микроконтроллера так и для различных периферийных устройств сочленяемых в виде этажерки, контакты которой совместимы сквозным соединением. В дальнейшем компания WeMos Electronics выпустила несколько серий модулей, для пользователей отличительными особенностями модулей различных серий является размер модуля, его цвет или как сделано в первой серии для совмещения ножек питания 3,3 Вольта в плате сделан вырез например как на ниже представленном модуле контроллера моторов WeMos на микросхеме TB6612FNG. Чтобы не занимать 7 котактов микроконтроллера ESP8266 для управления микросхемой TB6612FNG на модуле установлен микроконтроллер STM32, который общаясь с модулем ESP8266 через шину I2C используя всего 2 контакта ESP8266, тем самым предоставляя другим модулям свободные контакты основного модуля ESP8266.

Подробнее про это устройство в нашей следующей статье: WEMOS МОДУЛЬ

Все модули WeMos мы приобретали здесь (картинка кликабельна):



Источник: mirrobo.ru