Регулятор оборотов электродвигателя ардуино своими руками

Обновлено: 07.07.2024

Хочу представить свою разработку. Код готов. На двигателе еще не испытывал. Идет процесс установки на двигатель.

1. Что это такое.

1.1 Регулятор оборотов .
Поддерживает постоянные обороты вне зависимости от нагрузки. Не нужна педаль "газа". Обороты выставляются потенциометром. Привод дроссельной заслонки от мощной серво-машинки. По сути, это PID-регулятор. Используется метод Зиглера-Никольса. Реагирование на внешние события. Например, поднятая навеска и КПП на нейтрали — перевод двигателя на ХХ.

1.2 Система запуска и прогрева ДВС. (Не нужна для инжекторных и дизельных двигателей)
1.2.1 "Автоподсос".Управление воздушной заслонкой в зависимости от температуры двигателя. Привод воздушной заслонки от мощной серво-машинки. Температура берется с цифрового датчика.
1.2.2 Обогащение топливной смеси. Эмуляция нескольких нажатий на педаль "газа" при запуске холодного двигателя.

1.3 Счетчик моточасов.

1.4 ШИМ-регулятор оборотов вентиллятора охлаждения.
Плавное управление вентиллятором. Растет температура — растут обороты вентиллятора.

2. Область применения.

2.1. Самодельные трактора, вездеходы, стационарные генераторы электроэнергии, мотопомпы и т.п.
2.2 Синхронизация работы нескольких ДВС.
2.3 Беспилотные ТС.


3. Готовность кода проекта.

3.1 Регулятор оборотов ДВС 95% (остался датчик нейтрали)
3.2 Система запуска и прогрева ДВС 100%
3.3 Счетчик моточасов 0%
3.4 ШИМ-регулятор оборотов вентиллятора 95%

4. Испытания на ДВС.

4.1 Регулятор оборотов ДВС 20%
4.2 Система запуска и прогрева ДВС 0%
4.3 Счетчик моточасов 0%
4.4 ШИМ-регулятор оборотов вентиллятора 0%

6. Список компонентов.

6.1 Предохранитель в корпусе, 10А 1 шт.
6.2 БП DC/DC 12В --> 5В 10-12А 1 шт. ali.onl/O0r
6.3 Arduino Mega 2560 1 шт.
6.4 Плата расширения для Mega 2560 R3 (Шилд) 1 шт. ali.onl/O0q
6.5 Потенциометр-слайдер (можно крутилку) 1 шт. ali.onl/O0p
6.6 ИК датчик препятствий для тахометра и датчик нейтрали 2 шт. ali.onl/O0o
6.7 Датчик температуры DS18B20 1 шт. (для карбовых ДВС) ali.onl/NZE
6.8 Сервопривод MG996R 2 шт. (для ижекторов и дизелей — 1шт.) ali.onl/NZC
6.9 Дисплей LCD1602 + I2C ЖК 1 шт. ali.onl/NZA
6.10 Зуммер на 5В. ЗП-5, например. 1 шт.
6.11 2-х позиционный переключатель 2 шт.
6.12 Концевой переключатель для навески трактора 2 шт.
6.13 Провода для макетирования 1 набор ali.onl/NZv
6.14 Светодиоды. Красный, желтый, зеленый 3 шт.
6.15 Резистор 200-240 Ом для светодиодов 3 шт.
6.16 Резистор 4.7 кОм для датчика темперетуры 1 шт.

7. Управление и индикация.

7.1 Тумблер выбора режима.
7.1.1 Режим регулирования оборотов.
7.1.2 Режим принудительного ХХ/прогрева ДВС (зависит от температуры).
7.2 Кнопка обогащения (без фиксации). При нажатии, если двигатель холодный и включен режим прогрева, сработает сервопривод дросселя и 4 раза "нажмет на педаль газа".
7.3 Потенциометр. Можно задать рабочие обороты ДВС, которые будут поддерживаться постоянными. В пределах от ХХ до 3000 (переменная RPMmax).
7.4 Тумблер включения автоматического перехода на ХХ при поднятой навеске (концевик) и (или) положении КПП в нейтрали (концевик или датчик). Либо любые другие события.
7.5 Красный светодиод. Горит, если выбран режим ХХ/прогрева.
7.6 Желтый светодиод. Горит, если выбран режим ХХ/прогрева и температура ниже 40 градусов. Мигает 4 раза, если нажали кнопку обогащения.
7.7 Зеленый светодиод. Горит, если выбран режим регулирования оборотов.
7.8 Дисплей. Показывает обороты ДВС (RPM), температуру ДВС (T), начальную температуру ДВС ™, угол открытия дроссельной заслонки (Out).

8. Алгоритм работы системы.

Включаем зажигание. Подается питание на контроллер и сервоприводы. Контроллер готов к работе. Звучит мелодия. Производится замер начальной температуры ДВС. Перед запуском холодного двигателя нужно выбрать режим ХХ/прогрева. Если температура ниже 40гр (TempMax), включается режим прогрева ДВС (желтый светодиод). Возможно нажать кнопку обогащения смеси (только если ДВС не вращается) для уверенного пуска. Заводим двигатель. С первыми оборотами закрывается воздушная заслонка. Далее, по мере пррогрева, она приоткрывается. Желтый светодиод погас, красный горит — ДВС работает на ХХ. Переключаем тумблер в режим регулирования. Обороты устанавливаются согласно положению потенциометра. По необходимости, вторым тумблером включаем автоматический переход на ХХ. Например, если остановились и включили "нейтраль", ДВС сам перешел на ХХ.

В статье речь пойдет о создании простого однофазного маломощного частотного преобразователя на базе Arduino.

Предыстория. Как-то давно возникла у меня необходимость регулировать скорость вытяжного (канального) вентилятора. К моему удивлению, задача эта оказалась не совсем простой, как казалось на первый взгляд. Я перепробовал несколько самых очевидных вариантов, но у всех были свои минусы. Первое, что приходит на ум, это диммер на симисторе и всяческие его разновидности, но этот вариант я отмел сразу, т.к. работает он некорректно: двигатель сильно гудит, греется и всем своим видом показывает, что ему это не нравится. Следующий вариант это регулировка (по факту – уменьшение) оборотов вентилятора путем увеличения скольжения двигателя, т.е. уменьшения напряжения. В общем, вариант неплохой (по крайней мере, для вентилятора), но только если нужно небольшое замедление, т.к. при увеличении скольжения опять же растут потери и нагрев двигателя. Еще одним недостатком данного варианта является сложность изменения переменного напряжения, это можно делать дискретно, включая последовательно с двигателем различную нагрузку: активную (лампочка, мощный резистор), реактивную (дроссель, конденсатор), как раз вариант с конденсатором проработал у меня в вытяжке довольно долго. Если же нужно менять напряжение постепенно, то самым простым и доступным вариантом является ЛАТР, его же основной недостаток – это размеры и вес, как-то не очень, когда регулятор в несколько раз больше и тяжелее регулируемого устройства. Ну и, наконец, последний, самый правильный вариант – это, конечно, частотный преобразователь, далее о нем.

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

Вкратце об общих принципах

За основу была взята плата Arduino (nano), как самый простой вариант для начала, до этого программированием каких-либо МК я не занимался. Задача ее формировать два шим сигнала, нарезающих синус, для положительной и отрицательной полуволн поочередно (Униполярная модуляция, если не ошибаюсь). Выглядеть это должно примерно так:


Силовая часть – это полный мост на четырех транзисторах, управляемых двумя драйверами IR2110, выход с которых фильтруется LC фильтром, также есть защита по току, реализованная на датчике тока и компараторе (ОУ tl072cp, был под рукой), порог срабатывания настраивается. Блок питания логики и драйверов изобретать не стал, просто оставил место на плате для отдельной платы бп, например такой:


(в рабочем варианте поставил плату от сетевого адаптера на 13в т.к. когда собирал китайцы БП еще не прислали). Выходное напряжение блока питания в идеале 13-15в, можно и 12, если ключи не особо мощные. Для питания ардуинки и дисплея на плате есть стабилизатор на 5 вольт (lm7805).

Теперь немного подробней, начнем с программной части. При написании прошивки очень помог сайт Алекса Гайвера, за что ему огромное спасибо!

Для начала с помощью библиотеки формируется ШИМ сигнал (частота около 8кГц) на 9 и 10 ногах, для положительной и отрицательной полуволны соответственно. Далее для создания синусоиды используется массив из 100 значений в диапазоне от 0 до 2000 (диапазон скважности для данного варианта ШИМа).


В основном цикле программы по значениям из этого массива меняется скважность поочередно для положительной и отрицательной полуволны (сначала для 9 потом для 10 пина). Частота синуса устанавливается через период для каждого значения из таблицы, например, для 50 гц расчет будет следующий: частота 50гц, соответственно, период одного полного колебания 0,02с или 20000 микросекунд (именно в них задается интервал), за это время должно получиться две полуволны, т.е. 200 значений скважности (сначала 100 для 9го пина потом еще раз для 10го), отсюда время на одно значение скважности будет рассчитываться как 20000мкс/200=100мкс, для 25гц соответственно 40000/200=200мкс. У меня диапазон регулируется от 81мкс до 178мкс на одно значение из массива, что соответствует значениям частоты от 53 до 26 герц примерно. Что соответствует регулировке скорости от 106% до 26%. Быстрей эти движки крутиться не способны, а медленней для вентилятора не нужно, да и к тому же это уже чрезмерное насилие, не рассчитаны они на такое.

Итак, частота регулируется, но в частотнике также пропорционально частоте понижается и напряжение (скалярное управление, о векторном я даже не думал, и трудно, и не нужно). Это реализовано следующим образом: (скважность/32)*коэффициент (PotMapSkvaz) , который принимает значения от 30 до 16 в итоге результирующее значение скважности получается в диапазоне от 94% до 50% от того, которое было считано из таблицы, соответственно, и напряжение понижается на столько же (забегая немного вперед: ровного синуса не получилось за счет чего напряжение на выходе немного завышено, поэтому максимальная скважность не 100% а 94%).

В общем, цикл выглядит так: обнуляем оба значения скважности (от греха, но больше от сквозняков), рисуем первую полуволну синуса, проходя по массиву на каждом значении, задерживаясь в течение установленного времени, опять обнуляем значения скважностей и повторяем все для второй полуволны (отрицательного полупериода). По сути, ШИМ на обоих пинах работает постоянно, меняется только скважность, но, когда она равна нулю, фактически на пине нет никаких импульсов.

Далее про управление и индикацию: с энкодером проблем не было, он работает на прерываниях и много ресурсов не тратит, при повороте он уменьшает и увеличивает, соответственно, частоту до установленных пределов (53-25Гц), при нажатии на кнопку устанавливает частоту в дефолт (~50Гц).
Дисплей. С ним пришлось немного повозиться, т.к. при работе в цикле он оказывает влияние на быстродействие программы и, соответственно, на частоту, что никуда не годится, поэтому решено было присовокупить это действо к моментам изменения частоты, т.е. информация на дисплее обновляется только в моменты поворота энкодера, что немного замедляет программу, но, т.к. это происходит не постоянно, то ничего страшного в этом я не вижу. Также была прикручена запись переменной энкодера в постоянную память, что позволяет сохранить настройки частоты при отключении устройства от питания, происходит это тоже только лишь в моменты изменения оной.

По софту все, далее про железо. Схема:


Энкодер в виде стандартного модуля для ардуино был немного переделан, изначально в нем стояли подтягивающие резисторы на 10к, что оказалось слишком много: наблюдались самопроизвольные срабатывания от наведенных помех, поэтому резисторы были заменены на 2к и добавлены конденсаторы по 0.47 мкФ, после этого ложных срабатываний больше не наблюдалось.



Также в схеме присутствует защита по току, реализованная на компараторе, на операционном усилителе tl072cp (из тех, что были под рукой) и датчике тока (R21 10 ом). В среднем положении подстроечного резистора R20 защита срабатывает примерно при токе в пол ампера, что соответствует нагрузке около 100 ватт (мощность стандартного канального вентилятора около 15-25 ватт), мощность моего по паспорту 16ватт. При превышении установленного тока и срабатывании компаратора высокий уровень сигнала подается на 11 ноги обоих драйверов (вход SD), что, соответственно, приводит к исчезновению сигналов на выходе и остановке генерации.

Далее про выходную часть. После транзисторов идет LC фильтр, состоящий из индуктивности, в моем случае – 2,78 мГн и конденсатора в 0,47 мкФ. Об индуктивности стоит сказать отдельно: катушка намотана на сердечнике из материала МП-140, типоразмера П19х11х6.7, из двух половинок, витки не считал, мотал около трех метров эмалированным проводом d0.4мм.


Ну и по итогу о результатах. Печатная плата:



Финальная реализация готового устройства:


(Все фото кроме последнего сделаны с RC фильтром, который в итоге был заменен на LC, остальное без изменений)

Платы были заказаны у китайцев, после сборки и экспериментов на тестовой:


Форма выходного сигнала:





Ровного синуса на выходе не получилось, то, что получилось, видно на примерах осциллограмм, почему так, я до конца не понял, грешу на выходной фильтр, возможно нужна катушка большей индуктивности, если кто подскажет, куда копать, буду очень благодарен. Однако, несмотря на неровности выходного сигнала, двигатель вентилятора работает на нем прекрасно, без гула и перегрева. Нагрев присутствует, но в пределах нормы, такой, как при питании от сети, ну или, немного больше, но, в общем, абсолютно не критично.

Как видно по фото, транзисторы установлены на радиатор (из алюминиевого уголка 40*40*3), также имеется принудительная вентиляция. Так вот, при первоначальных тестах в качестве фильтра был вариант RC пары (Резистор 100 Ом и конденсатор 0.47 мкФ), при таком варианте грелся достаточно неплохо резистор и немного радиатор с ключами, поэтому вентилятор и был прикручен. Однако с дросселем ситуация изменилась в корне: нагрев транзисторов фактически отсутствует, дроссель, может, на пару тройку градусов теплее температуры окружающего воздуха, но вентилятор убирать уже не стал, просто притормозил его резистором, чтоб не шумел, так он вроде никому не мешает.

На этом все. С удовольствием отвечу на вопросы, надеюсь, кому то мой опыт будет полезен.

P.S.: Про существование платы EGS002 я в курсе, к сожалению, про нее я узнал только ближе к концу моего приключения, и останавливаться было уже поздно)). Может, позже попробую что-нибудь и на ней собрать, но это будет уже совсем другая история.

Прикрепленные файлы:

AMatroskin Опубликована: 22.11.2019 0 1


Вознаградить Я собрал 0 1

Микроконтроллеры, такие как, например Arduino — это отличный способ управлять проектами в области электроники. К сожалению, максимальный вывод цифровых пинов равен 40 мА, чего недостаточно для питания большинства двигателей. Здесь может быть полезен шилд для регулятора оборотов двигателя на 12 вольт. Но это дорого, и позволяет вам управлять лишь несколькими моторами.





Простейший тип контроллера скорости использует сигнал модуляции ширины импульса. Этот сигнал может быть сгенерирован любым из ШИМ-пинов на Arduino. Поэтому нам нужно будет использовать внешний источник питания (например, аккумуляторную батарею) и транзисторную схему коммутации. Это похоже на транзисторную схему на шилде реле, но мы внесли несколько изменений. Я добавил светодиод для визуальной индикации на выходе.

В этом проекте я покажу вам, как сделать своими руками простой ШИМ регулятор оборотов двигателя.

Шаг 1: Инструменты и материалы




Вот материалы и инструменты, которые понадобятся вам для этого проекта.

  • 2 биполярных NPN транзистора (например, tip31a)
  • 2 диода IN4001
  • 2 резистора 1000 Ом
  • 2 светодиода любого цвета
  • 2 коннектора 2 x 1
  • 1 коннектор 1 x 4
  • 1 коннектор для батареи
  • 1 одножильный провод диаметром 0,255 мм
  • 1 печатная плата

Некоторые из компонентов продублированы, потому что я делаю два контроллера скорости на одной печатной плате. Вы можете сделать только один, используя по одному компоненту.

  • Паяльник и припой
  • Кусачки
  • Стриппер для проволоки
  • Плоскогубцы с узким носом

Шаг 2: Припаиваем транзисторы



Начните с пайки двух транзисторов на печатной плате. Оставьте между ними пространство, чтобы поместить другие компоненты. Пока не обрезайте провода. Обратите внимание на пин-аут транзистора, чтобы подключить все правильно. Чтобы лучше понять схему и то, как она работает, будет неплохо сначала сделать прототип схемы на плате.

Шаг 3: Припаяйте маленькие коннекторы



Припаяйте маленькие 2х1 коннекторы. В качестве альтернативы вы можете использовать винтовые клеммы. Опять же, оставьте пространство между коннекторами и транзисторами.

Шаг 4: Припаяйте диоды




Припаяйте диоды к передней панели, перед маленькими коннекторами. Соедините диоды с коннекторами как показано на 3 картинке. Это предотвратит подачу электродвигателем слишком большого тока на плату. Обрежьте излишки проводов на всех диодах. В идеале у вас должна остаться серебряная полоска, обращенная к верхней части доски — это упростит соединение.

Шаг 5: Припаяйте базовые резисторы



Припаяйте резисторы 1К к основанию (пин 1) каждого транзистора. Оставьте место между резисторами и не подключайте их ни к чему. Отрежьте основной провод и провод резистора, подключенный к нему.

Шаг 6: Припаяйте светодиодные резисторы





Припаяйте резистор 100 Ом к печатной плате, чтобы один из проводов был подключен к аноду светодиода (более длинный провод). Обрежьте один провод резистора и провод анода.

Шаг 7: Соедините пары резисторов




Подключите провод от одного из светодиодных резисторов к одному из транзисторных резисторов. Отрежьте провод только от светодиодного резистора. Повторите с остальными резисторами, чтобы сделать две пары резисторов.

Запомните, какой из резисторов подключен к какому! Эти пары будут раздельными, мы делаем 2 контроллера.

Шаг 8: Припаяйте внешние источники питания



Припаяйте провода источника питания. Вы можете подключить плату к аккумулятору на ваше усмотрение (учитывая напряжение и силу тока двигателя и микроконтроллера). Я подключил разъем для батареи 9 В, чтобы иметь возможность поставить аккумулятор 9 В или 12 В. Завяжите узел возле основания, чтобы разъем не выпал.

Дополнительно: просверлите отверстие, чтобы протащить провода насквозь для лучшей фиксации.

Шаг 9: Припаяйте большой коннектор



Припаяйте большой коннектор к левому верхнему углу платы. Подключите положительный провод от источника питания к самому дальнему контакту слева (положив плату так, чтобы коннектор был в левом верхнем углу). Подключите отрицательный провод источника питания к пину рядом с положительным контактом, который вы только что припаяли. Я использовал красный провод для положительных соединений, а синий для заземления.

Примечание: это можно использовать для питания микроконтроллера или другого аксессуара, а также вы можете использовать это в качестве источника питания, если вы не хотите использовать прилагаемые провода питания.

Шаг 10: Подключите входы ШИМ




Подключите резистор, подключенный к базе (пин 1) транзистора к одному из контактов большого коннектора. Сделайте то же самое для другого резистора, подключив его к оставшемуся контакту. Большой коннектор будет использоваться для входов/выходов. Подключите пин ШИМ к входным контактам ШИМ, которые вы только что припаяли, и используйте контакты питания в качестве входа или выхода для питания. Я использовал провод белого цвета для этих соединений.

Шаг 11: Подключение заземления


Подключите два эмиттера транзисторов (пин 3) к земле. Подключите два катодных провода светодиодов к земле. Обрежьте выводы трансмиттера и светодиодов. Я использовал провод синего цвета для заземления.

Шаг 12: Подключите контакты двигателя к электропитанию



Соедините положительный провод с ближайшим к серебряной полоске диода соединением. Руководствуйтесь для справки фотографией, так как эта часть может быть сложной. Сделайте это для обоих наборов коннекторов.

Шаг 13: Подключите контакты двигателя к коллектору транзистора


Здесь нужно вспомнить пару резисторов. Выберите пин для подключения мотора и выясните, к какому транзистору подключен светодиод возле этого пина. После этого подсоедините провод оставшегося соединения к коллектору (пин 2) транзистора, к которому подключен светодиод. Обрежьте провод транзистора и повторите это для другого коннектора и транзистора. Используйте изображения для справки.

Шаг 14: Загрузите код






Теперь у вас есть простое устройство для контроля двигателя. Вы можете установить скорость двигателя, отправив команду аналогового ввода на базу транзистора. Загрузите в Ардуино образец кода, приведенный ниже. Поиграйте со значениями и кодом, чтобы вам было удобно контролировать скорость двигателя.

Чтобы использовать это с другими микроконтроллерами, убедитесь, что он имеет выход ШИМ и установите выход в соответствии с требуемой скоростью. Если вы не знаете, как это сделать, найдите образец кода для управления светодиодом и измените код по-своему. В принципе, вы можете представить себе это как контроль светодиода; устройство принимает сигнал широтно-импульсного регулятора и управляет двигателем с более высоким напряжением и током.

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.


Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.

При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние) , прямо как светодиод: При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать: Купить модуль реле можно Реле aliexpress, aliexpress, искать

Мосфет

Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость) . Вместо “голого” мосфета можно использовать готовый китайский модуль: Купить мосфет модуль можно на Aliexpress: Мосфет модуль aliexpress, aliexpress, искать

Реле и мосфет

blank

Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:

Специальный драйвер

Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:

Драйвер 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р Купить

Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:

blank

blank

blank

blank

blank

blank

Пины направления управляются при помощи digitalWrite(pin, value) , а PWM – analogWrite(pin, value) . Управление драйвером по двум пинам может быть двух вариантов:

Моторы переменного тока

Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.

Библиотеки

У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:

  • Контроль скорости и направления вращения
  • Работа с ШИМ любого разрешения
  • Программный deadtime
  • Отрицательные скорости
  • Поддержка всех типов драйверов
  • Плавный пуск и изменение скорости
  • Режим “минимальная скважность”

Помехи и защита от них

Индуктивный выброс напряжения

Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства. Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:

  • При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
  • При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
  • Максимальный ток диода должен быть больше или равен максимальному току мотора.
  • Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
  • В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
  • Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!

Помехи от щёток

blank

Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.

Помехи по питанию, просадка

Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.

Разделение питания

Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.

Экранирование

В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.

Видео

Читайте также: