Как сделать простой диммер для управления светом со смартфона на Ардуино
На модуле Ардуино Нано можно построить простой диммер, при помощи которого можно на расстоянии управлять не только включением и выключением света, но и его яркостью. Все управление производится с вашего смартфона без каких-либо пультов управления. Схема несложная и вполне повторима даже начинающим радиолюбителем.
Понадобятся следующие детали
- Ардуино Нано — http://ali.pub/5idze0
- Модуль Bluetooth HC-05 — http://ali.pub/5idzbv
- Симистор BTA16 или BT139 — http://ali.pub/5idzai
- Оптрон EL817 или PC817 — http://ali.pub/5idzo4
- Оптопара с симисторным выходом MOC3020 или MOC3021 — http://ali.pub/5idzgx
- Диодный мост — http://ali.pub/5idzr8
- Резисторы 47 кОм, 1 кОм, 100 Ом, 200 R — http://ali.pub/5h6ouv
Схема и прошивки
По левую часть Ардуино собран детектор нуля. Он дает сигнал модулю когда синусоидальная волна проходит нулевую отметку, переходя из положительной в отрицательную.По правую сторону собран симисторный ключ с гальванической развязкой на оптопаре. Также подключен блютуз модуль к Ардуино.Прошивка для Ардуино и приложение для телефона в архиве:
downloads.zip
(cкачиваний: 184)
Приложение нужно предварительно скопировать в память телефона любым удобным для вас способом.
Делаем простой диммер на Arduino Nano
Первым делом запрограммируем Ардуино Нано. Зальем прошивку так сказать.Ардуино устанавливаем на плату при помощи колодок. Это дает возможность в любой момент его снять с платы.
В плате сверлим отверстия и устанавливаем диодный мост.
Устанавливаем оптрон и резисторы в цепи детектора нуля.
Устанавливаем и припаиваем колодку блютуз модуля.
Вид пайки снизу. Длинные проводники выполнены монтажным проводом.
Запаиваем оптопару с симистором.
Берем блютуз модуль.
Устанавливаем его в колодку на плате.
Подключаем вилку с проводом и нагрузку в виде лампы накаливания.
Ардуино будем питать от отдельного блока 5 В. Подключим его через микро USB.
На этом все, диммер готов к работе.
Проверка диммера
Устанавливаем приложение на смартфон.
Подключаемся по блютуз к диммеру.
Теперь можно управлять яркостью света.
Двигаем ползунок в приложении и яркость лампы увеличивается от нуля.
И до полной яркости.
Область применения диммера на Arduino
Конечно, использовать дорогостоящий Arduino для управления яркостью галогенных ламп – избыточно. Для этой цели лучше заменить обычный выключатель диммером промышленного изготовления. Диммер на Arduino способен решать более серьёзные задачи:
- управлять любыми видами активной нагрузки (температурой нагрева паяльника, проточного водонагревателя и т. д.) с точным удержанием заданного параметра;
- одновременно выполнять несколько функций. Например, обеспечивать плавное включение утром (отключение вечером) света, а также контролировать температуру и влажность террариума.
Увидеть каким образом изменяется напряжение в нагрузке можно с помощью осциллографа. Для этого к выходным клеммам диммера припаивают резистивный делитель, благодаря которому сигнал в контрольной точке должен уменьшиться примерно в 20 раз. После этого к делителю подсоединяют щупы осциллографа и подают питание на схему. Изменяя положение ручки потенциометра, на экране осциллографа можно наблюдать насколько плавно Arduino управляет симистором и присутствуют ли при этом высокочастотные помехи.
Авторство вышеприведенных материалов принадлежит Youtube каналу AlexGyver.
Привет, Друзья! Сегодня хочу рассказать о том, как я управляю переменным током с помощью симистора. Сам начинающий радиолюбитель и здесь пытаюсь разбиратся в основах радиоелектроники. Без простого человеческого обьяснения сложновато, поэтому прошу у Вас советы, про то как лучше это сделать.
Строю инкубатор яиц и появилась необходимость сделать трехканальный ключ, для управления переменным током, чтоб подключать разные приборы типа обогрева и увлажнителя. Хотел сделать проще, тупо поставить реле и не парится, но необходимых реле под рукой не оказалось, ждать с Китая долго а в городе нужных мне не нашел. Почитал в интернете что бывают симисторы, которые используются в твердотельных реле. Раздобыл у друга несколько симисторов и оптодрайвер к ним, нашел подходящую схему.
Вот она самая.
Необходимых номиналов резистора под рукой не оказалось, использовал какие были.
Собрал схему, подключил к контроллеру, подал нагрузку и все работает! Но заметил такую странность, как только подать нагрузку(в качестве прибора лампочка 220в), то лампочка слегка загорается на долю секунды. Это значит в цепи на короткий промежуток появляется ток. Поискал в интернете других схем и нашел решение, достаточно поставить конденсатор и резистор на выходе.
Вот другая схема
Если есть специалисты подскажите как подбирают номинал резисторов для подобных схем. А то я встречаю в сети более-менее подобные схемы и в них суют резисторы разного номинала и с широким диапазоном. Поэтому есть подозрение что можно ставить любой резистор и все будет впорядке (шутка). Бывает ли четкая аргументация как подбирать резисторы для подобных схем?
В итоге собрал трехканальный, мимисторный ключ по вот такой схеме.
Вот так он выглядит.
И так он включает лампочку.
Если кто знает как сделать подобную схему эффективней, лучше и безопасней отзовитесь и поделитесь опытом.
По мере постройки инкубатора у меня появляются вот такие устройства, которые делаю впервые, скажу не очень сложно, но знаний маловато. Как доделаю инкубатор обязательно покажу, думаю вам будет интересно посмотреть
Спасибо за внимание!)
- https://arduinoplus.ru/arduino-dimmer/
- https://ledjournal.info/shemy/dimmer-na-arduino.html
- https://pikabu.ru/story/simistor__arduino_5311481
Схема проекта
Схема регулируемой электронной нагрузки постоянного тока на основе платы Arduino представлена на следующем рисунке.
В представленной схеме операционный усилитель имеет 2 секции: одна управляет MOSFET транзистором, а другая усиливает измеряемый ток. Первая секция содержит резисторы R12, R13 и MOSFET. Резистор R12 используется для уменьшения действия нагрузки в цепи обратной связи, а R13 является резистором затвора MOSFET транзистора. Более подробно про работу схемы и назначение ее элементов вы можете посмотреть на видео, приведенном в конце статьи, правда, на английском языке.
Дополнительные два резистора R8 и R9 используются для измерения напряжения, поступающего от источника питания. Исходя из их номиналов по правилу делителя напряжения легко определить что максимальное измеряемое напряжение составит 24V, если напряжение будет больше 24V, то оно может повредить контакт платы Arduino, поскольку на него в этом случае будет поступать напряжение более 5 В.
R7 является нагрузочным резистором, его сопротивление составляет 0,1 Ом и он может рассеивать мощность до 5 Вт. Исходя из формулы для расчета мощности P = I2R он может выдерживать ток до 7A, но в целях безопасности лучше ограничить ток, протекающий через данный резистор, значением 5A. Таким образом, получается что наша регулируемая электронная нагрузка постоянного тока (то есть эквивалент нагрузки) рассчитано на напряжение до 24V и ток до 5A.
Другая секция операционного усилителя работает как обычный усилитель с коэффициентом усиления 6x. При протекании тока через какой либо электронный элемент на нем создается падение напряжения. К примеру, если ток 5A протекает через шунтирующий резистор сопротивлением 0,1 Ом, то в нем по закону Ома (V = I x R) создается падение напряжения 0,5 В. Наш неинвертирующий усилитель усилит это значение в 6 раз, следовательно, на выходе второй секции операционного усилителя будет напряжение 3V. Это напряжение подается на аналоговый контакт платы Arduino Nano, которая измеряет его и на основе этого рассчитывает силу протекающего через шунтирующий резистор тока.
Первая часть операционного усилителя работает как повторитель напряжения и управляет работой MOSFET транзистора, который выступает в роли обратной связи для тока, протекающего через шунтирующий резистор.
MCP4921 представляет собой цифро-аналоговый преобразователь (ЦАП), который получает цифровые данные от платы Arduino по протоколу SPI и преобразует их в соответствующие аналоговые значения, которые в нашей схеме подаются на вход операционного усилителя.
Плата Arduino Nano передает цифровые данные ЦАПу MCP4921 по протоколу SPI и, таким образом, производит управление нашей электронной нагрузкой. Также она отображает необходимые данные на экране ЖК дисплея 16×2. Также к плате Arduino Nano подключены две кнопки для увеличения и уменьшения значения нагрузки. Вместо их подключения к цифровым контактам (как обычно) мы их подключили к аналоговым контактам платы Arduino. Поэтому вместо них можно в проекте использовать другие типы переключателей, например, слайдеры или аналоговые энкодеры. Также, при помощи небольших изменений в коде программы можно непосредственным образом подавать «сырые» (необработанные) аналоговые данные (raw analog data) в цепь операционного усилителя для управления нагрузкой. Подключение кнопок к аналоговым контактам также устраняет проблему, связанную с дребезгом их контактов (debounce problem).
Таким образом, в нашей схеме плата Arduino Nano передает данные ЦАПу в цифровой форме, ЦАП преобразует их в аналоговый вид и подает на вход операционного усилителя, который управляет работой MOSFET транзистора. Протекающий через шунтирующий резистор ток создает падение напряжения на нем, которое усиливается вторым каналом микросхемы LM358 и поступает на плату Arduino Nano, которая отображает его значение на экране ЖК дисплея. При помощи кнопок можно увеличивать и уменьшать значение тока через нагрузку.
Материалы
Вариант 1
Для удобства следует разбить список покупок на несколько основных пунктов, в зависимости от того, для чего мы будем использовать те или иные инструменты. Так, вам будет необходимо собрать:
- Детектор для отслеживания пересечений с нулем. Для этой части проекта потребуется H11AA11 с парой резисторов на 10кОм, а также мостовой выпрямитель на 400 Вольт и ещё пара резисторов на 30 кОм. Для удобства стоит прикупить и 1 разъем, а также стабилизатор на 5.1 Вольт.
- Драйвер для лампы. Здесь достаточно будет простого светодиода, а также MOC3021 с резистором 220 Ом (можно и больше), а еще резистором на 470 Ом и 1 кОм, и один симистор, подойдет версия TIC Также можете докупить ещё один разъем.
- Вспомогательные элементы. Конечно, при спайке не обойтись без проводов и куска текстолита 6 на 3 см.
Когда вы соберёте все необходимые элементы, придёт время спайки, поэтому, помимо выше перечисленного, потребуются также паяльник и канифоль с припайкой. Плату вы можете расчертить и сделать самостоятельно или воспользоваться специальным принтером, если есть в наличии. Варианты расположения дорожек можно найти на нашем сайте или спроектировать всё самостоятельно, по вашему желанию.
Вариант 2
Для нашего второго альтернативного варианта нам понадобятся:
1x — 330 Ом резистор 2x — 33К резистора 1x — 22К резистор 1x- 220 Ом резистор 4x — 1N4508 диоды 1x — 1N4007 диоды 1x — Диод Zener 10V.4W 1x — Конденсатор 2.2uF / 63V 1x — Конденсатор 220nF / 275V 1x — Arduino / Ардуино 1x — Оптрон: 4N35 1x — МОП-транзистор: IRF830A 1x — Лампа: 100 Вт 1x — Питание 230 В 1x — Розетка 1x — Паяльная плата и паяльный комплект
“Универсальное” электромагнитное реле
Электромагнитное реле является по сути управляемым механическим выключателем: подали на него ток – оно замкнуло контакты, сняли ток – разомкнуло. Контакты являются именно контактами: металлическими “пятаками”, которые прижимаются друг к другу. Именно поэтому такое реле может управлять как нагрузкой постоянного, так и переменного тока.
Сама катушка реле является неслабой индуктивной нагрузкой, что приводит к дополнительным проблемам (читай ниже), поэтому для управления “голым” реле нам понадобится дополнительная силовая и защитная цепь.
После изучения данного урока вы сами сможете её составить (транзистор и диод), а сейчас мы поговорим о модулях реле: готовая плата, на которой стоит само реле, а также цепи коммутации, защиты и даже оптическая развязка. Такие модули бывают “семейными” – с несколькими реле на борту. Спасибо китайцам за это! Смотрите варианты у меня в каталоге ссылок на Али.
Такое реле сделано специально для удобного управления с микроконтроллера: пины питания VCC (Vin, 5V) и GND подключаются к питанию, а далее реле управляется логическим сигналом, поданным на пин IN. С другой стороны стоит клеммник для подключения проводов, обычно контакты подписаны как NO, NC и COM. Это общепринятые названия пинов кнопок, переключателей и реле:
- COM – Common, общий. Реле является переключающим, и пин COM является общим.
- NO – Normal Open, нормально открытый. При неактивном реле данный контакт не соединён с COM. При активации реле он замыкается с COM.
- NC – Normal Closed, нормально закрытый. При неактивном реле данный контакт соединён с COM. При активации реле он размыкается с COM.
Подключение нагрузки через реле думаю для всех является очевидным:
Важный момент: катушка реле в активном режиме потребляет около 60 мА, то есть подключать больше одного модуля реле при питании платы от USB не рекомендуется – уже появятся просадки по напряжению и помехи:
Такие модули реле бывают двух типов: низкого и высокого уровня. Реле низкого уровня переключается при наличии низкого сигнала (GND) на управляющем пине . Реле высокого уровня соответственно срабатывает от высокого уровня . Какого типа вам досталось реле можно определить экспериментально, а можно прочитать на странице товара или на самой плате. Также существуют модули с выбором уровня:
На плате, справа от надписи High/Low trigger есть перемычка, при помощи которой происходит переключение уровня. Электромагнитное реле имеет ряд недостатков перед остальными рассмотренными ниже способами, вы должны их знать и учитывать:
- Ограниченное количество переключений: механический контакт изнашивается, особенно при большой и/или индуктивной нагрузке.
- Противно щёлкает!
- При большой нагрузке реле может “залипнуть”, поэтому для больших токов нужно использовать более мощные реле, которые придётся включать при помощи… маленьких реле. Или транзисторов.
- Необходимы дополнительные цепи для управления реле, так как катушка является индуктивной нагрузкой, и нагрузкой самой по себе слишком большой для пина МК (решается использованием китайского модуля реле).
- Очень большие наводки на всю линию питания при коммутации индуктивной нагрузки.
- Относительно долгое переключение (невозможно поставить детектор нуля, читай ниже), при управлении индуктивными цепями переменного тока можно попасть на большой индуктивный выброс, необходимо ставить искрогасящие цепи.
Важный момент связан с коммутацией светодиодных светильников и ламп, особенно дешёвых: у них прямо на входе стоит конденсатор, который при резком подключении в цепь становится очень мощным потребителем и приводит к скачку тока. Скачок может быть настолько большим, что 15-20 Ваттная светодиодная лампа буквально сваривает контакты реле и оно “залипает”! Данный эффект сильнее выражен на дешёвых лампах, будьте с ними аккуратнее (за инфу спасибо DAK). При помощи реле можно плавно управлять сильно инерционной нагрузкой, такой как большой обогреватель. Для этого нужно использовать сверхнизкочастотный ШИМ сигнал, у меня есть готовая библиотека. Не забываем, что реле противно щёлкает и изнашивается, поэтому для таких целей лучше подходит твердотельное реле, о котором мы поговорим ниже.
Теоретическая часть и схема
На рисунке показана синусоидальная волна сети с частотой 50 Гц. Для построения диммера важны точки пересечения нуля (точки, где волна меняет свою полярность). Чтобы зафиксировать эти точки, надо использовать детектор пересечения нуля.
Рисунок 1. Сетевая синусоида (зеленые стрелки показывают точки пересечения нуля)
На рисунке далее приведена принципиальная схема всего регулятора мощности переменного тока.
Рисунок 2. Принципиальная схема цифрового диммера переменного тока
Элементы R1, R2, IC1, D1 и C3 создают схему детектора пересечения нуля. Он предназначен для обеспечения надлежащей оптоизоляции сетевого напряжения. Таким образом получаем сигнал, который можно безопасно подключить к входам и выходам Arduino. Далее показан выходной сигнал детектора пересечения нуля (вывод 4 микросхемы IC1). Согласно спецификации TLP521-1 это микросхема состоящая из фототранзистора, оптически связанного с инфракрасным излучающим диодом на основе арсенида галлия. Конечно, можно использовать и другие аналогичные оптопары.
Рисунок 3. Выходной сигнал цепи детектора пересечения нуля
Итак, тут будем использовать импульс пересечения нуля в качестве триггера для главной цепи управления. Это легче понять, просмотрев код Arduino и выходную волну. Радиоэлемент IC3 — тиристор BT138. Нагрузка включена последовательно с тиристором и линией переменного тока, поэтому он определяет количество энергии, которое должно быть подано на нагрузку.
Радиодетали R4, R5 и C2 реализуют схему демпфирования для IC2, а C1 и R7 создают схему демпфирования для IC3. Эти детали помогают устройству быть совместимым с различными типами нагрузок, такими как индуктивные. Оптрон IC2 является компонентом обеспечивающим надлежащую гальваническую развязку между цифровой стороной и линией переменного тока 220 В. Выбранный тип — MOC3021. Также можете использовать другие аналогичные, но будьте осторожны, чтобы не использовать детали со встроенным детектором пересечения нуля. Они полезны для переключения нагрузок переменного тока (ВКЛ / ВЫКЛ), а не для диммирования.
Создание платы
Мы рассмотрим самый бюджетный вариант – вытравку платы в соляном растворе, но прежде на неё необходимо будет наклеить проект, который вы можете создать в программе по желанию. Дальнейшая сборка не несёт никаких трудностей и секретов, необходимо будет воспользоваться панельками под оптроны и мостовые выпрямители. Также, при написании текста, для разметки элемента, его стоит делать зеркальным, так как при ЛУТе, отпечатавшийся рисунок примет правильный вид на меде, и перенесется так, что вы без проблем прочитаете все необходимые данные.
Хорошим выбором станет TIC206, который выдаст добротных 6 ампер. Но здесь стоит учесть, что те проводники, которые установлены на плате, просто не выдержат такую силу тока, поэтому дополнительно стоит припаять провод на проводник симистора у разъемов, а вторую часть – к другим разъемам.
Также, при наличии оптрона H11AA11, мостовой выпрямитель можно не использовать, ведь в нем уже имеются два не параллельных диода, а также возможность работы с переменными токами. Совместимость с выводами 4N25 позволяет просто вставить его к припою с двумя перемычками, находящимися между 5 и 7 резистором, на нашей схеме.
Во втором варианте схема будет выглядеть так:
Принцип работы симистора
Симистор (симметричный триодный тиристор, в англ. TRIAC) представляет собой переключатель переменного тока с тремя выводами, который можно переключить при помощи подачи отпирающего импульса на его управляющий вывод (затвор). Но в отличие от других подобных переключателей, которые проводят ток в одном направлении, симистор может управлять током в обоих направлениях. В нашем проекте мы будем использовать симистор BT136.
Принцип управления симистора переменным током показан на следующем рисунке.
Как показано на рисунке, мы можем переключать, к примеру, симистор на угле 90 градусов при помощи подачи отпирающего импульса на его управляющий вывод. В этом случае мы будем подавать ток на лампу только в половине времени положительной полуволны сигнала (на графике время t1), соответственно, лампа будет гореть вполовину мощности. Уменьшая или увеличивая это время мы можем заставить лампу гореть ярче или тусклее.
Частота сигнала переменного тока в нашей сети составляет 50 Гц, соответственно, период сигнала равен 1/f =20 миллисекунд. Значит, половина периода будет равна 10 мс. Поэтому мы можем изменять время t1 на приведенном графике для управления яркостью свечения лампы переменного тока в диапазоне от 0 до 10 мс (10000 мкс).
Объяснение программы для Arduino
Полный код программы и видео, демонстрирующее работу проекта, приведены в конце статьи, здесь же мы кратко рассмотрим основные фрагменты кода.
В самом начале программы нам необходимо объявить используемые глобальные переменные. Симистор у нас подключен к контакту 4 платы Arduino. В переменной dim_val мы будем хранить значение шага диммирования (регулирования силы света), который мы далее будем использовать в программе.
Arduino
int LAMP = 4;
int dim_val=0;
1 |
intLAMP=4; intdim_val=; |
Далее, в функции void setup() для контакта, к которому подключен симистор, мы зададим режим работы на вывод данных. Затем мы используем функцию attachInterrupt чтобы сконфигурировать контакт 2 на обработку внешнего прерывания. При срабатывании этого прерывания будет вызываться функция обработки прерывания zero_cross.
Arduino
void setup()
{
pinMode(LAMP, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), zero_cross, CHANGE);
}
1 |
voidsetup() { pinMode(LAMP,OUTPUT); attachInterrupt(digitalPinToInterrupt(2),zero_cross,CHANGE); } |
Внутри функции void loop() мы будем считывать аналоговое значение с потенциометра, подключенного к контакту A0 платы Arduino. Затем мы будем конвертировать это значение в диапазон 10-49. Чтобы вычислить этот диапазон нам пришлось сделать некоторые вычисления. Ранее мы говорили, что каждая половина цикла (периода) волны переменного тока в сети составляет 10 000 микросекунд. К примеру, мы хотим управлять регулировкой силы света с помощью 50 шагов (это значение является произвольным, его вы можете изменить по своему усмотрению). В этом случае мы использовали минимальный шаг, равный 10 (значения от до 9 не рекомендуются в силу ряда физических процессов). А в качестве максимального значения шага мы использовали значение 49.
Время каждого шага можно рассчитать следующим образом: 10000/50=200 микросекунд. В результате этих вычислений мы и написали следующий фрагмент кода:
Arduino
void loop()
{
int data=analogRead(A0);
int data1 = map(data, 0, 1023,10,49);
dim_val=data1;
}
1 |
voidloop() { intdata=analogRead(A0); intdata1=map(data,,1023,10,49); dim_val=data1; } |
Теперь все, что нам нужно сделать, это запрограммировать функцию обработки прерывания zero_cross. В ней мы время регулировки (dimming_time) рассчитываем при помощи умножения индивидуального времени шага на число шагов. Далее мы делаем задержку в программе на рассчитанное время и после этой задержки переключаем симистор с помощью небольшого импульса длительностью 10 микросекунд.
Arduino
void zero_cross()
{
int dimming_time = (200*dim_val);
delayMicroseconds(dimming_time);
digitalWrite(LAMP, HIGH);
delayMicroseconds(10);
digitalWrite(LAMP, LOW);
}
1 |
voidzero_cross() { intdimming_time=(200*dim_val); delayMicroseconds(dimming_time); digitalWrite(LAMP,HIGH); delayMicroseconds(10); digitalWrite(LAMP,LOW); } |
Принцип регулировки мощности для электроплитки
Основное назначение этой тусовки китайских радиокомпонентов это симисторный регулятор мощности для электроплитки, поэтому начну рассказ о принципе работы устройства с цикла управления мощностью инертной нагрузки.
В сети у нас 220 вольт и 50 Герц, мы с вами адекватные пользователи, поэтому без лишней на то необходимости не будем сорить и шуметь в сеть. Используем принцип управления нагрузкой когда включать и выключать мы будем на целое количество полупериодов и в момент перехода сетевого напряжения через 0. Сейчас это не сложно реализовать, а развязка по напряжению сети от схемы управления это как минимум правило хорошего тона а как максимум — обязательное условие для своей безопасности и безопасности любого пользователя нашего девайса.
Для управления симистором есть отличная микросхема мос3063
Микросхема мос3063
с минимальной обвязкой рассыпухой она позволит сделать опторазвязку с напряжением сети и проконтролирует момент включения нашего тиристора при переходе сетевого напряжения через ноль. Для управления будет достаточно тока и напряжения с выхода ардуинки. Добавляем в комплект наших деталей мощный симистор например BTA41600 и получаем готовую выходную часть для активной инертной нагрузки как то электроплитка или водонагреватель или утюг или радиатор масляный — все что греется ТЕНом может быть запитано посредством этого симисторного регулятора мощности для электроплитки на Arduino nano.
Для трехфазной нагрузки достаточно будет сделать дубликаты этой схемы в количестве трех штук и подключить в разрыв фазы каждого канала 220V и получить регулятор для нагрузки большей мощности. Схема подключения к Ардуино
Подключение тиристора к выходу микроконтроллера Ардуино
Для непосредственного подключения оптрона тиристора используется 13 пин Ардуины, для возможного реализации исполнительного устройства на базе транзисторного ключа либо твердотельного реле можно использовать 12 pin Arduino Nano в скетче эта функция уже присутствует при этом выходной каскад может визуально быть похожим на подключение обычного реле, к примеру возьмем твердотельное реле SSR-40DA благо выбор реле сейчас достаточно широкий и цена плюс минус приемлемая напряжение срабатывания 4V ток нагрузки 40А и напряжение коммутации позволяет непосредственно подключать к сети 220V.
Твердотельное реле SSR-40DA
И есть встроенная схема контроля перехода сетевого напряжения через ноль что автоматически уменьшает помехи как и в случае рассыпухи мы делали. Так с выходным каскадом разобрались, можно вернуться чуть к теории к формулам и математике.
Помехи и защита от них
Индуктивный выброс напряжения
Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства.
Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
- Максимальный ток диода должен быть больше или равен максимальному току мотора.
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.
Помехи по питанию, просадка
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания
Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.
Какая программа необходима для устройства
Вы можете подгрузить готовый код с библиотеками с сайта или написать его самостоятельно. Благо, программа под диммер на Ардуино не очень тяжелая, и в ней достаточно учитывать, что нулевой сигнал будет генерироваться в прерываниях, которые в симисторе переключаются на определённое время.
Единственное, что стоит учесть – это использование переменной цикла, её стартовое значение стоит поставить не в 0, а в 1, а максимальный шаг варьируется от 1 до 5. Таким образом, нам будет подходить два вида диапазонов измерения – от 2 до 126, и от 0 до 128.
Код для альтернативного варианта у нас такой:
Скачать arduino-dimmer.ino
intledPin = 3; void setup() { Serial.begin(9600); Serial.println(“Serial connection started, waiting for instructions…n0 = Offn1 = 25%n2 =50%n3 = 75%n4 = 100%”); } void loop () { if (Serial.available()) { char ser = Serial.read(); //read serial as a character //NOTE because the serial is read as “char” and not “int”, the read value must be compared to character numbers //hence the quotes around the numbers in the case statement switch (ser) { case ‘0’: analogWrite(ledPin, 0); break; case ‘1’: analogWrite(ledPin, 64); break; case ‘2’: analogWrite(ledPin, 128); break; case ‘3’: analogWrite(ledPin, 192); break; case ‘4’: analogWrite(ledPin, 255); break; default: Serial.println(“Invalid entry”); } } }