Управление щёточными моторами
Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер - логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. "Драйвером" мотора могут быть разные железки, рассмотрим некоторые из них.
Реле
При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние)
, прямо как светодиод: При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать: Купить модуль реле можно на Али:
Модуль реле: aliexpress, aliexpress, искать
Мосфет
Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость)
. Вместо "голого" мосфета можно использовать готовый китайский модуль: Купить мосфет модуль можно на Aliexpress:
Мосфет модуль: aliexpress, aliexpress, искать
Реле и мосфет
Если объединить реле и мосфет - получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:
Специальный драйвер
Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:
Драйвер | Vmot | Ток (пик) | ~Стоимость | Aliexpress |
L298N | 4-50V | 1A (2A) | 100р | Купить |
MX1508 | 2-9.6V | 1.5A (2.5A) | 20р | Купить |
TA6586 | 3-14V | 5A (7A) | 100р (чип 30р) | Купить |
L9110S | 2.5-12V | 0.8A (1.5A) | 50р | Купить |
TB6612 | 4.5-13.5V | 1.2A (3A) | 80р | Купить |
BTS7960 | 5.5-27V | 10A (43A) | 300р | Купить |
Большой | 3-36V | 10A (30A) | 700р | Купить |
Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:
Пины направления управляются при помощи digitalWrite(pin, value)
, а PWM - analogWrite(pin, value)
. Управление драйвером по двум пинам может быть двух вариантов:
// === первый тип, встречается чаще всего === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, 255 - value); // value 0.. 255 // === второй тип, например большой драйвер === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, value); // value 0.. 255 // разница в том, что ШИМ не нужно инвертировать как 255 - значение!
Моторы переменного тока
Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.
Библиотеки
У меня есть удобная библиотека для управления мотором - GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:
- Контроль скорости и направления вращения
- Работа с ШИМ любого разрешения
- Программный deadtime
- Отрицательные скорости
- Поддержка всех типов драйверов
- Плавный пуск и изменение скорости
- Режим "минимальная скважность"
Помехи и защита от них
Индуктивный выброс напряжения
Мотор - это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства. Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx) или диоды Шоттки (например серии 1N58xx).
- Максимальный ток диода должен быть больше или равен максимальному току мотора.
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный "паразитный" диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.
Помехи по питанию, просадка
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания
Если описанные выше способы не помогают - остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный - для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])