Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к МК напрямую, особенно индуктивную - моторчики. Любой МК - цифровое устройство, которое может давать только логические сигналы другим железкам - драйверам, и уже они будут управлять мощной нагрузкой. Рассмотрим некоторые варианты.
Драйверы #
Реле #
При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние)
(читай урок про цифровые выходы), прямо как светодиод:
При помощи двух реле или двойного модуля реле можно включать мотор в одну или другую сторону, а также выключать:
Купить модули реле:
Мосфет #
Полевой транзистор, он же мосфет, позволяет управлять скоростью вращения мотора при помощи ШИМ сигнала (читай урок про ШИМ сигнал). При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ШИМ сигнала - analogWrite(пин, скорость)
:
Вместо "голого" мосфета можно использовать модуль силового ключа:
Реле и мосфет #
Если объединить реле и мосфет, то получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:
Специальный драйвер #
Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:
Драйвер | Напряжение | Ток (пик) | Aliexpress |
---|---|---|---|
L298N | 4-50V | 1A (2A) | Купить |
MX1508 | 2-9.6V | 1.5A (2.5A) | Купить |
TA6586 | 3-14V | 5A (7A) | Купить |
L9110S | 2.5-12V | 0.8A (1.5A) | Купить |
TB6612 | 4.5-13.5V | 1.2A (3A) | Купить |
BTS7960 | 5.5-27V | 10A (43A) | Купить |
Большой H мост | 3-36V | 10A (30A) | Купить |
Пины направления управляются при помощи 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 - значение!
Помехи и защита от них #
Индуктивный выброс #
Мотор - это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске.
Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства. Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор - тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону (реле, мосфет), драйверу диод не нужен:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx) или диоды Шоттки (например серии 1N58xx)
- Максимальный ток диода должен быть больше или равен максимальному току мотора
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный "паразитный" диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток #
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 uF на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор:
Помехи по питанию, просадка #
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания #
Если описанные выше способы не помогают - остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный - для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование #
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и шаговиками в станках. Такие наводки могут создавать сильные помехи на находящиеся рядом электронные компоненты, провода, аналоговые цепи, наводить помехи на линии измерения АЦП и радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV. Простейший вариант - просто скрутить провод к мотору в "косичку" - уже станет гораздо лучше.