Регулятор напряжения и тока на ардуино. Световой диммер управляемый Arduino. Практическая реализация ключевого регулятора

Рассмотрим один интересный и полезный вопрос. Диммер для регулировки нагрузкой переменного тока при помощи arduino. То есть это плавный контроль таких сетевых приборов, как лампы, нагреватели в виде тэнов или тёплых полов.
Пару недель назад на втором канале, который полностью посвящен программированию arduino, вышел видос про управление нагрузкой постоянного тока при помощи шим- сигнала. То, что смотрите сейчас, тоже должно было выйти на том канале. Но решил опубликовать его.

Радиодетали, компоненты и приборы в этом китайском магазине .

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

Устройство, которое будем делать, называется диммер. В него входят обычные синусоиды из розетки и выходят обрезанные. Диммер не пропускает часть синусоиды. И чем больше эта часть, тем меньше среднее напряжение. Изменяя промежутки, когда напряжение равно нулю, будем регулировать суммарное выходное напряжение. Открывает и закрывает напряжение такая железяка, как симистор. Они есть в разных корпусах и на разный ток. Например, крупный парнишка может пропустить через себя 40 ампер при напряжении 800 вольт. Что как бы около 30 квт.

Чтобы управлять симистором в нужные моменты времени, понадобится пакетик рассыпухи. Несколько резисторов и две оптопары. Всё это можно за копейки купить в любом магазине радиодеталей или на радиорынке. Для удобства подключения можно взять клеммы. А собирать всю схему можно на макетной плате. Схема подключения, выглядит следующим образом.

Симистор разрывает сеть 220в, arduino будет его открывать и закрывать через оптопару. То есть сама arduino будет оптически развязана сетевым напряжением в целях нашей безопасности. И важный момент. Чтобы вовремя открывать симистор, arduino должна знать, когда напряжение сети проходит через 0. Для этого стоит вторая оптопара, подключенная в противоположную сторону. И на выходе из нее получаем сигнал каждый раз, когда напряжение в сети проходит через 0. И управляем симистором через верхнюю оптопару. Алгоритм работы чуть позже.

Соберем схему в железе

В идеале такие вещи нужно делать на печатной платье. Об на канале скоро отдельный цикл видео уроков. Покажем, как разводить платы и как травить. Ну а пока не умеем делать печатные платы, есть ещё два пути. Первый, это собрать схему на макетной плате. Чем займемся через минуту. И второй – заказать изготовление плат у китайцев. Сделал несколько вариантов плат на платформе easyeda. Первая – на маленьком семисторе, вторая – на большом семисторе. И третья, это трехканальный диммер. У которого есть один общий вход и один общий выход детектора нуля. Три выхода под нагрузку и 3 pin под управление тремя симисторами arduino. Схему легко масштабировать и сделать диммер на любое число каналов.

Чтобы заказать платы, нужно вытащить из проекта gerber- файлы. Нажимаем кнопочку и попадаем на страницу заказа плат у сервиса easyeda. И нажимаем кнопочку скачать gerber- файлы. Они скачаются одним архивом. Идем на сайт сервиса lg psb. Это один из дешевых и крупнейших сервисов изготовления печатных плат в промышленных масштабах c доставкой. Для начала залогинимся на всякий случай. Переходим в корзину и добавляем новый заказ. И добавляем gerber- файл, то есть, тот самый архив. Плата однослойная. Выбираем один слой. Размеры, как можете видеть, поставились автоматически. Количество – мнимум можно заказать 5 штук. Толщина текстолита, цвет. Пусть красный. Это цвет маски, которой покрыта плата. Выбирается припой, которым будут покрыты дорожки. Это оловянно-свинцовый, безсвинцовый и ещё, который не знаем. Дальше толщина медной фольги не текстолите. Ну цена почему-то меняется в два раза. Идут золотые пальчики. Это гребенка вставлять плату в разъем. Потом можно получить плату в таком виде. И еще можно обрезать крайние контакты. Но ничего из этого не нужно. Всё сохраняем корзину. Как можете видеть, цена за 5 плат составляет 2 бакса. То есть это примерно 25 рублей за одну плату. Платы промышленного качества достанутся практически даром.

Единственное, доставка. Нужно указать свой адрес. Для удобства обычно пользуемся сервисом транслит, который переводит русские буквы в транслит. Ну и сама доставка. 30 долларов за курьерскую, и стандартная – 250 рублей за отправку по почте. Dhl, с физическим лицами не работают. Если нет знакомых фирмы, то лучше не связываться и подождать пару недель почтой. Оплатить это дело можно по paypal или банковской карты. В общем, печатные платы заказал, и пока они едут, соберем схему на макетке.

Данный проект сборки регулятора переменного тока относится к тем, которые можно собрать на макетной плате, глядя на разводку печатной платы. То есть вставляем компоненты в макетку точно так же, как на печатке. И соединяем все ногами самих компонентов. Вот, например, симистор дотягивается до обоих клеммников и до оптопары. Берем и запаиваем. А еще можно использовать лайфхак из видео про сварочник для аккумуляторов. То есть распечатать разводку платы, приклеить ее на макетку и паять, ориентируясь на дорожки. И спустя 10 минут работы пинцетом и паяльником получается плата. Компактная.
Для соединения использованы многие компоненты. Единственное, надо было соединить общий выход куском медного провода. Важный момент. Паяем с глицериновым флюсом, и его следы можно видеть. Он блестит. Диммер работать с напряжением в 220в и пробивать через флюс, и работать не стабильно. Или вообще сгорит. Поэтому берём зубную щетку и идём чистить. Ну а лишнее отрезаем ножницами по металлу, а ровняем край. И всё, готов диммер. Здорово и компактно.
На обрезке макетки, собрал вариант с большим парнем. Идет прямое подключение к симистору при помощи колодок. Левая – это выход, средняя – вход, а правая – общая для входа и выхода. К ней по схеме только один резистор. Сам симистор приклеен на двухсторонний скотч. В идеале колодки надо было привинтить. Ну и так сойдет. Всё. Припаяно просто, ногами резисторов. Это плата нужна в одном из следующих проектов. Попробуйте угадать в комментариях, что это может быть.
Сейчас наконец посмотрим на алгоритм, по которому работает управление симистором. Так вот, управлять симистором будем с arduino. Прошивки пишутся в специальной программе. Есть два важных момента. Первый – получение сигнала с выхода детектора нуля, который сообщает, что синусоида напряжения сети пересекает напряжение 0 вольт. Выход детектора нуля подключен к обработчику аппаратных прерываний. Это второй pin arduino. И pin подтянут к земле резистором на 10 килоом. Внутренняя подтяжка не справляется. Не знаем почему. В отличие от всех прошивок в интернете, алгоритм не использует задержки. То есть управление симистором не мешает выполнению остального кода программы. Реализована это при помощи таймера таймер-1. Так как использование обычных счетчиков приведет к некоторым мерцаниям через каждые несколько минут.
Для удобной работы с таймером используем шуструю библиотеку сайберлип. В общем, суть такая, как только обнаруживается переход через ноль снизу, это точка, таймер запускает на время диммирования, и прерывание перенастраивается на переход напряжения через ноль сверху вниз. И время пошло. После срабатывания таймера, симистор открывает ток на потребитель. Как только прерывание замещает переход через ноль сверху вниз, оно останавливает таймер и снова перенастраивается. А также выключает ток через симистор. И так повторяется 50 раз в секунду.

Для регулировки времени, через которое откроется симистор после пересекания через ноль, использован потенциометр. Переменные диммер должны принимать значения от 0 до 255. Это полная и минимальная яркость. И всё. Напомню, что все схемы и скетч можно скачать на странице проекта. Ссылка в описании под видео.

Диммер можно использовать не только для управления яркостью. Гораздо больший интерес представляет система управления нагревательным элементом с обратной связью. Для точного поддержания заданной температуры.
Также диммер можно использовать в системах, таких как умный дом, и контроль этого самого диммера через интернет. Для этого нужно уметь писать программы под windows, android или под веб.

Приехали китайские печатные платы. Повторимся, если вы физическое лицо, то заказывать лучше почтой. Через dhl пришлось прикрываться знакомой фирмой и переоформлять документы на таможне. В общем, такие симпатичные печатки. Если учесть, что они обошлись по 25 руб штука, надеемся, китайцам это хоть чуть-чуть выгодно. Иначе обидно.

Распаяли один диммер и подключаем его к arduino, также как раньше. Двигаем потенциометром, накал лампочки меняется от максимального до еле-еле тлеющего. На самом деле, интересное зрелище.

Наверное, всё видео хотелось посмотреть на реальную форму волны на выходе из диммера. Соответствует ли она картинкам, которые показывал. Воспользуемся дешевым китайским осциллографом, который умеет измерять напряжение до 12 вольт. Стоп. Так делать нельзя. Чтобы измерить сетевое напряжение, нужно воспользоваться штукой, как делитель напряжения. Подойдет соотношение 1 к 20. Чтобы резисторы не грелись, взял номиналы двести и десять килоом. Аккуратненько всё подключаем и только потом включаем в сеть. Это опасно для жизни. И видим ту же самую красоту, как на картинках. Видно, как напряжение в периодах синусоиды появляется, доходит до нуля и пропадает. Чтобы снова включится по таймеру следующим полупериуде. Великолепное зрелище!

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

Диммер (от англ. dim - затемнять, в русском языке - светорегулятор, во французском - вариатор) - электронное устройство, предназначенное для изменения электрической мощности (регулятор мощности). Обычно используется для регулировки яркости света, излучаемого лампами накаливания или светодиодами.

В таком случае более эффективным будет использовать Ардуино диммер, КПД которого значительно выше в данной задаче, чем у того же симистра, учитывая необходимость рассеивать большое количество теплоты. Давайте разберёмся, как создать диммер, что необходимо прописать в программной части, и какие материалы вам потребуются.

Вариант 1

Ардуино диммер 220 В проектируется таким образом, чтобы в него входили простые синусоиды из розеток, а выходили уже обрезанные. Таким образом, он не будет пропускать часть синусоид, в зависимости от размера которой будет изменяться и усреднённое напряжение на устройстве. Поэтому, с помощью изменения промежутков с нулевым напряжением возможно регулировать ток на выходе, с помощью того самого симистра.

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

У нас будет два варианта исполнения. Теоретический и конкретный альтернативный, уж, простите, за аналогии.

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

Чтобы было удобнее подключать Аrduino симистор, потребуется несколько клемм, но можно обойтись и без них. А для сборки всей схемы необходимо спроектировать и сделать макетную плату. Удобнее всего использовать 3-Д принтер, но можно создать её и старым химическим способом.

В итоге у нас получится Аrduino диммер 220 В, который будет разрывать соответствующую сеть, а контролировать мы всё будем с помощью оптопары, для чего нам потребуется стандартная мигалка. Таким образом, выйдет, что сама плата останется развязанной с помощью сетевого напряжения, что поспособствует безопасности инженера и дальнейших пользователей.

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

С помощью такой незамысловатой схемы мы получим девайс, который будет отправлять нам сигнал каждый раз, когда напряжение проходит через 0 в сети, а управление симистром будет осуществляться с помощью верхней оптопары.

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

Вариант 2

Во втором варианте мы настроим яркость лампы, подключенной к цепи последовательным портом. Яркость можно изменить в соответствии с командами, которые мы предоставляем для последовательного порта. Мы будем использовать эти конкретные команды в этом проекте Ардуино диммера:

  • 0 для ВЫКЛЮЧЕНИЯ
  • 1 для яркости 25%
  • 2 для яркости 50%
  • 3 для яркости 75%
  • 4 для 100% яркости

Мы разработаем схему диммера с импульсной волной (PWM), которая будет использовать IRF830A в диодном мосте, который используется для управления напряжением на лампе с импульсной модуляцией (PWM). Напряжение источника питания для управления затвором подается с напряжением на полевом транзисторе с полевым эффектом из оксида металла (MOSFET).

Материалы

Вариант 1

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

  1. Детектор для отслеживания пересечений с нулем. Для этой части проекта потребуется H11AA11 с парой резисторов на 10кОм, а также мостовой выпрямитель на 400 Вольт и ещё пара резисторов на 30 кОм. Для удобства стоит прикупить и 1 разъем, а также стабилизатор на 5.1 Вольт.
  2. Драйвер для лампы. Здесь достаточно будет простого светодиода, а также MOC3021 с резистором 220 Ом (можно и больше), а еще резистором на 470 Ом и 1 кОм, и один симистор, подойдет версия TIC Также можете докупить ещё один разъем.
  3. Вспомогательные элементы. Конечно, при спайке не обойтись без проводов и куска текстолита 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 - Паяльная плата и паяльный комплект

Создание платы

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

Хорошим выбором станет TIC206, который выдаст добротных 6 ампер. Но здесь стоит учесть, что те проводники, которые установлены на плате, просто не выдержат такую силу тока, поэтому дополнительно стоит припаять провод на проводник симистора у разъемов, а вторую часть – к другим разъемам.

Также, при наличии оптрона H11AA11, мостовой выпрямитель можно не использовать, ведь в нем уже имеются два не параллельных диода, а также возможность работы с переменными токами. Совместимость с выводами 4N25 позволяет просто вставить его к припою с двумя перемычками, находящимися между 5 и 7 резистором, на нашей схеме.

Во втором варианте схема будет выглядеть так:

Какая программа необходима для устройства

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

Единственное, что стоит учесть – это использование переменной цикла, её стартовое значение стоит поставить не в 0, а в 1, а максимальный шаг варьируется от 1 до 5. Таким образом, нам будет подходить два вида диапазонов измерения – от 2 до 126, и от 0 до 128.

Код для альтернативного варианта у нас такой:

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”); } } }

Технологический процесс сборки

Мигалка на Ардуино без проблем собирается на макетной плате, и особенностей в спайке уже готового макета нет никаких. Единственное, стоит не забывать о примечаниях, приведённых выше, по поводу припайки одного провода к симистору, дабы не сжечь дорожки на плате, выстроив правильное прерывание. В остальном, даже новичку удастся без проблем собрать конечный проект, благодаря его простоте.

Как это выглядит в реальном виде:

Настройка и тестирование устройства

Наш второй вариант работает таким образом (на видео видно как к устройству подносится фонарик):

Уже распаянный Аrduino диммер подключите к Ардуино и двигайте потенциометр до тех пор, пока не достигнете максимума и минимума накала лампочки. Для того чтобы увидеть реальную картину волны, достаточно воспользоваться осциллографом, способным измерять напряжение до 12 вольт.

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

Продолжение разработки контроллера, начатой в уроке 36. Напишем программу для регулятора мощности на элементе Пельтье. Узнаем что такое интегральный регулятор.

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

Будем разрабатывать регулятор мощности, но сначала узнаем минимальные сведения о регуляторах.

Общие сведения о регуляторах.

Регулятор это устройство, которое поддерживает определенные параметры объекта на заданном уровне. Регулятор следит за состоянием объекта и вырабатывает управляющие воздействия для того, чтобы обеспечить стабильность параметра регулирования.

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

В любом регуляторе надо четко выделить, что мы регулируем и с помощью чего мы регулируем. Т.е.

  • регулируемый параметр;
  • и регулирующий элемент.

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

Для нашего регулятора мощности:

  • регулируемый параметр – электрическая мощность на нагрузке;
  • регулирующий элемент – широтно-импульсный модулятор.

Кто-то задастся вопросом, что является регулирующим элементом в нашей системе – коэффициент заполнения ШИМ или ключевой транзистор электронной схемы. Алгоритм регулятора мы реализуем программным способом. Для программы регулирующий элемент – коэффициент заполнения ШИМ.

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

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

Как у всего на свете у регулятора есть критерии оценки качества. Это:

  • Скорость регулирования (быстродействие) – время уменьшения ошибки регулирования до заданной величины.
  • Точность регулирования – ошибка параметра регулирования в установившемся состоянии.
  • Устойчивость регулятора – отсутствие колебаний параметра регулирования.

И еще. Мы реализуем алгоритм регулирования программным способом. Это значит, что у нас будет дискретный по времени регулятор. Управление будет происходить в отдельные моменты времени. В программе контроллера мы определили временную дискретность регулятора мощности 20 мс.

Интегральный регулятор.

Другие законы регулирования мы рассмотрим в следующем уроке, когда будем разрабатывать ПИД (пропорционально-интегрально-дифференцирующий) регулятор температуры. Сейчас мы говорим только об интегральном законе регулирования.

Итак, мы должны поддерживать значение мощности на выходе, меняя ШИМ. Самый простой, интуитивный способ это:

  • сравнить заданную мощность с измеренной;
  • если заданное значение больше реального, то ШИМ увеличить на 1 ;
  • если заданное значение меньше реального, то ШИМ уменьшить на 1.

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

Для более качественного регулирования необходимо прибавлять к текущему значению ШИМ величину, зависящую от ошибки параметра регулирования.

Математически закон управления интегрального регулятора выглядит так

  • Kw – коэффициент заполнения ШИМ;
  • Ki – интегральный коэффициент;
  • e(t) – ошибка рассогласования, т.е. разница между заданным и реальным значениями регулируемого параметра.

Выходная функция интегрального регулятора пропорциональна интегралу по времени от отклонения регулируемого параметра.

Интегральный регулятор это регулятор последовательного приближения. Большая ошибка – он изменяет ШИМ большими шагами. Маленькая ошибка он медленно ее компенсирует. Ошибка накапливается в интеграторе и сколь малой она не была бы, все равно со временем она окажет воздействие на регулирующий элемент.

В более понятном виде, близком к дискретной реализации схема интегрального регулятора выглядит так.

  • Вычисляется ошибка рассогласования e, как разность между заданной мощностью Pset и измеренной на выходе Preal: e = Pset – Preal.
  • Ошибка рассогласования e умножается на интегральный коэффициент Ki и накапливается в регистре-интеграторе RgI.
  • Целые разряды регистра поступают на широтно-импульсный модулятор.

Как правило, интегратор имеет достаточно большую разрядность с дробной частью. А ШИМ может воспринимать только целые значения. Здесь нет противоречия. Значения меньше еденицы постепенно накапливаются в интеграторе и переходят в целую часть, а значит и в ШИМ. Это позволяет при малых ошибках рассогласования или малом значении Ki уменьшать быстродействие регулятора. Малые значения будут долго переходить в целую часть.

Интегральные регуляторы обладают:

  • высокой точностью;
  • низкой скоростью регулирования;
  • посредственной устойчивостью, зависящей от скорости регулирования.

Почему для регулятора мощности на элементе Пельтье мы выбрали именно интегральный закон управления.

  • Элемент Пельтье меняет свои параметры в зависимости от температуры. Но происходит это крайне медленно. Быстрый регулятор нам просто не нужен.
  • Более того резкое изменение мощности на элементе Пельтье ведет к деградации полупроводниковых кристаллов модуля. Из-за резких изменений температуры в местах спайки полупроводников возникают механические напряжения, что ведет к снижению эффективности элемента и даже выходу его из строя. Поэтому как бы быстро не менял регулятор температуры заданное значение для регулятора мощности необходимо, чтобы изменение мощности на элементе Пельтье происходило плавно.
  • Есть еще конденсатор большой емкости на выходе регулятора, который также лучше заряжать медленно.

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

Ко всем этим требованиям идеально подходит именно интегральный регулятор. Более того коэффициент Ki мы специально снизим, чтобы обеспечить медленное изменение мощности на нагрузке.

Программа регулятора мощности.

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

Нам нужны следующие переменные и константы:

float measureP; // измеренная мощность на нагрузке, Вт – эта переменная в программе уже есть.

float setPower; // заданная мощность
float regPwrInt=0; //
#define koeffRegPwrInt 0.05 //

Сам регулятор уместился в одну строку:

И еще надо перегрузить целую часть из интегратора в ШИМ:

analogWrite(9, (unsigned int) regPwrInt); // ШИМ

В принципе эта программа уже работает. Можно временно задать мощность равной, например, 5 Вт:

setPower = 5; // временно заданная мощность 5 Вт

вставить регулятор в цикл 20 мс и проверить. Но не хватает еще кое-каких операций.

Ограничение интегратора.

Мы работаем с реальной схемой. Допустим, задана мощность, которую регулятор не способен обеспечить, например, 50 Вт. Регулятор должен сформировать максимальный ШИМ. Но интегральное звено нашего регулятора будет продолжать увеличиваться. Когда оно превысит максимально-допустимое значение ШИМ (у нас это 255), ШИМ перестанет правильно работать. Скорее сбросится в 0 и опять начнет увеличиваться. Т.е. необходимо ввести ограничения интегрального звена. Оно не должно быть больше максимального значения ШИМ и не допустимо, чтобы оно стало отрицательным.

if (regPwrInt < 0) regPwrInt=0; // ограничение снизу
if (regPwrInt > ограничение сверху

"Мертвое время" ШИМ.

Есть еще одна тонкость работы с ШИМ. Импульсы на выходе ШИМ переключают реальный ключ. При уменьшении коэффициента заполнения импульсы включения ключа могут стать очень короткими. Для нашего ШИМ значение 1 соответствует импульсу длительностью 62,5 нс. За такое короткое время ключ не успеват открываться полностью и нормально работать не будет. Скорее всего при нашем низковольтном питании (12 В) беды не случится. Но в высоковольтных цепях источников питания (300 В и более) такая коммутация приводит к катастрофическим последствиям. Поэтому хороший стиль управления ШИМ – это запрет слишком коротких импульсов управления.

Введем два временных отрезка, на которых запретим работу ШИМ. Один отрезок вблизи нуля, второй около максимального значения. Общепринято длительность этих отрезков называть “мертвым временем” ШИМ (dead time). Алгоритм простой:

  • Если значение ШИМ меньше “мертвого времени”, то ШИМ равен 0.
  • Если значение ШИМ больше разницы максимального ШИМ и “мертвого времени”, то ШИМ равен максимальному значению.

Реализация этого алгоритма в программе выглядит так:


if (pwm < DEAD_TIME) pwm=0;
if (pwm >
analogWrite(9, pwm); // ШИМ

Я задал “мертвого времени” равным 500 нс:

#define DEAD_TIME 8 // мертвое время ШИМ (* 62,5 нс)

Выключение регулятора.

Последнее, что надо добавить это быстрое выключение регулятора. Я говорил, что регулятор должен медленно изменять мощность на элементе Пельтье. Но это не касается аварийного выключения. При setPower=0 будем выключать регулятор мгновенно.

Полностью программный блок интегрального регулятора мощности выглядит так:

//------------------ регулятор мощности
if (setPower != 0) {
regPwrInt = regPwrInt + (setPower - measureP) * koeffRegPwrInt;
if (regPwrInt < 0) regPwrInt=0; // ограничение снизу
if (regPwrInt > MAX_PWM) regPwrInt=MAX_PWM; // ограничение сверху
// мертвое время ШИМ
unsigned int pwm = (unsigned int)regPwrInt; // перевод в ШИМ
if (pwm < DEAD_TIME) pwm=0;
if (pwm > (MAX_PWM - DEAD_TIME)) pwm=MAX_PWM;
analogWrite(9, pwm); // ШИМ
}
else { // выключение
regPwrInt=0;
analogWrite(9, 0); // ШИМ
}

Serial.print(" p="); Serial.print(regPwrInt, 2); // интегральное звено регулятора мощности

И оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Проверка и настройка регулятора.

Теперь проверим работу регулятора на реальной нагрузке и определим интегральный коэффициент.

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

Сначала я задал интегральный коэффициент равным 0,1.

#define koeffRegPwrInt 0.1 // интегральный коэффициент регулятора мощности

Запустил монитор последовательного порта и увидел такую картину.

Регулятор работает. Заданную мощность (5 Вт) устанавливает за 14-15 сек.

Замкнул один резистор. Мощность резко изменилась, но регулятор за 5-6 сек привел ее в норму.

Работает устойчиво. Об устойчивости надо судить по изменению целой части интегрального звена, т.е. ШИМ. В идеальном регуляторе ШИМ должен меняться на 1. Ток, а значит, и мощность “скачут” из-за не очень точной дискретизации АЦП при малых значениях. В принципе этот коэффициент (0,1) нас устраивает. Но лучше увидеть границы устойчивой работы регулятора и задать его с запасом.

Установил интегральный коэффициент равным 1 и увидел следующее.

Мощность устанавливается на заданном уровне примерно за 1 сек и регулятор продолжает работать устойчиво.

Теперь коэффициент 10.

Работает еще быстрее, но ШИМ начал “скакать” на 2-5 единицы. Регулятор работает неустойчиво. Такой коэффициент использовать нельзя.

Чисто в демонстративных целях я задал коэффициент равным 20.

Колебания достигли 30 единиц ШИМ. Вот осциллограмма напряжения на выходе. Все пошло в разнос.

Выбирайте коэффициент сами. Я думаю, что он не должен превышать 0,5. Я пока установил медленный коэффициент 0,05.

Регулятор устанавливает заданную мощность 5 Вт за 30 сек. При большей мощности будет работать еще медленнее. Но тем лучше для элемента Пельтье. Да и коэффициент всегда можно изменить.

Резюме.

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

Цель, которую я поставил это разработка контроллера для холодильника на элементе Пельтье.

Будем делать аналог моей разработки , только реализованный на основе платы Ардуино.

  • Эта разработка многих заинтересовала, и мне посыпались письма с просьбами реализовать ее на Ардуино.
  • Разработка идеально подходит для изучения аппаратной и программной части цифровых регуляторов. К тому же она объединяет в себе множество задач, изученных в предыдущих уроках:
    • измерение аналоговых сигналов;
    • работа с кнопками;
    • подключение систем индикации;
    • измерение температуры;
    • работа с EEPROM;
    • связь с компьютером;
    • параллельные процессы;
    • и многое другое.

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

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

Отличия разработки от прототипа.

Единственное функциональное отличие от прототипа разработки на PIC-контроллере – это отсутствие быстрого стабилизатора напряжения, который компенсирует пульсации питающего напряжения.

Т.е. данный вариант устройства должен питаться от стабилизированного источника питания с низким уровнем пульсаций (не более 5%). Этим требованиям отвечают все современные импульсные блоки питания.

А вариант питания от нестабилизированного блока питания (трансформатор, выпрямитель, емкостной фильтр) исключен. Быстродействие системы Ардуино не позволяет реализовать быстрый регулятор напряжения. Рекомендую прочитать о требованиях к питанию элемента Пельтье.

Разработка общей структуры устройства.

На этом этапе надо в общем виде понять:

  • из каких элементов состоит система;
  • на каком контроллере ее выполнить;
  • достаточно ли выводов и функциональных возможностей контроллера.

Я представляю контроллер “черным ящиком” или “мусорной ямой” и подключаю к нему все что надо. Потом смотрю, подходит ли для этих целей, например, плата Arduino UNO R3.

В моей интерпретации это выглядит так.

Я нарисовал прямоугольник – контроллер и все сигналы, необходимые для подключения элементов системы.

Я решил, что необходимо подключить к плате:

  • LCD индикатор (для отображения результатов и режимов);
  • 3 кнопки (для управления);
  • светодиод индикации ошибки;
  • ключ управления вентилятором (для включения вентилятора радиатора горячей стороны);
  • ключ импульсного стабилизатора (для регулировки мощности элемента Пельтье);
  • аналоговый вход измерения тока нагрузки;
  • аналоговый вход измерения напряжения нагрузки;
  • датчик температуры в камере (точный 1-wire датчик DS18B20);
  • датчик температуры радиатора (еще не решил, какой датчик, скорее тоже DS18B20);
  • сигналы связи с компьютером.

Всего получилось 18 сигналов. У платы Arduino UNO R3 или Arduino NANO 20 выводов. Осталось еще 2 вывода про запас. Может, захочется еще одну кнопку подключить, или светодиод, или датчик влажности, или вентилятор холодной стороны… Нам требуется 2 или 3 аналоговых входа, у платы – 6. Т.е. все нас устраивает.

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

Импульсные стабилизаторы.

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

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

Регулирующий элемент работает в линейном режиме. На нем выделяется “лишняя” мощность. При больших токах стабилизаторы такого типа сильно греются, имеют небольшой КПД. Типичным линейным стабилизатором напряжения является микросхема 7805.

Нам такой вариант не подходит. Будем делать импульсный (ключевой) стабилизатор.

Импульсные стабилизаторы бывают разные. Нам нужен понижающий импульсный регулятор. Напряжение на нагрузке в таких устройствах всегда ниже напряжения питания. Схема понижающего импульсного регулятора выглядит так.

А это диаграмма работы регулятора.

Транзистор VT работает в ключевом режиме, т.е. у него может быть только два состояния: открыт или закрыт. Устройство управления, в нашем случае микроконтроллер, коммутирует транзистор с определенной частотой и скважностью.

  • Когда транзистор открыт ток течет по цепи: источник питания, транзисторный ключ VT, дроссель L, нагрузка.
  • При разомкнутом ключе энергия, накопленная в дросселе, поступает в нагрузку. Ток течет по цепи: дроссель, диод VD, нагрузка.

Таким образом, постоянное напряжение на выходе регулятора зависит от соотношения времени открытого (tоткр) и закрытого ключа (tзакр), т.е. от скважности импульсов управления. Меняя скважность, микроконтроллер может менять напряжение на нагрузке. Конденсатор C сглаживает пульсации выходного напряжения.

Главное достоинство такого способа регулирования – высокий КПД. Транзистор всегда находится в открытом или закрытом состоянии. Поэтому на нем рассеивается небольшая мощность - всегда или напряжение на транзисторе близко к нулю, или ток равен 0.

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

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

  • При замкнутом ключе ток поступает в нагрузку по цепи: источник питания, дроссель L, ключ VT (путь тока показан красным цветом).
  • При разомкнутом ключе энергия, накопленная в дросселе возвращается в нагрузку через рекуперативный диод VD (путь тока показан синим цветом).

Практическая реализация ключевого регулятора.

Нам необходимо реализовать узел импульсного регулятора со следующими функциями:

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

Я, практически без изменений, взял схему регулятора из .

Схема импульсного регулятора для работы с платой Ардуино.

В качестве силового ключа я использовал MOSFET транзисторы IRF7313. В статье об увеличении мощности контроллера элемента Пельтье я подробно писал об этих транзисторах, о возможной замене и о требованиях к ключевым транзисторам для этой схеме. Вот ссылка на техническую документацию .

На транзисторах VT1 и VT2 собран драйвер ключевого MOSFET транзистора. Это просто усилитель по току, по напряжению он даже ослабляет сигнал примерно до 4,3 В. Поэтому ключевой транзистор обязательно должен быть низкопороговым. Есть разные варианты реализации драйверов MOSFET транзисторов. В том числе и с использованием интегральных драйверов. Этот вариант самый простой и дешевый.

Для измерения напряжения на нагрузке используется делитель R1, R2. При таких значениях сопротивлений резисторов и источнике опорного напряжения 1,1 В, диапазон измерения составляет 0 … 17,2 В. Цепь позволяет измерить напряжение на втором выводе нагрузки относительно общего провода. Напряжение на нагрузке мы вычислим, зная напряжение источника питания:

Uнагрузки = Uпитания – Uизмеренное.

Понятно, что точность измерения будет зависеть от стабильности поддержания напряжения источника питания. Но нам не нужна высокая точность измерения напряжения, тока, мощности нагрузки. Нам нужно точно измерять и поддерживать только температуру. Ее мы и будем измерять с высокой точностью. А если система покажет, что на элементе Пельтье установлена мощность 10 Вт, а на самом деле будет 10,5 Вт, это ни как не отразится на работе устройства. Это касается всех остальных энергетических параметров.

Ток измеряется с помощью резистора-датчика тока R8. Компоненты R6 и C2 образуют простой фильтр низких частот.

На элементах R7 и VT3 собрана простейшая аппаратная защита. Если ток в цепи превысит 12 А, то на резисторе R8 напряжение достигнет порога открывания транзистора 0,6 В. Транзистор откроется и замкнет вывод RES (сброс) микроконтроллера на землю. Все должно отключится. К сожалению, порог срабатывания такой защиты определяется напряжением база-эммитер биполярного транзистора (0,6 В). Из-за этого защита срабатывает только при значительных токах. Можно применить аналоговый компаратор, но это усложнит схему.

Ток будет измеряться точнее при увеличении сопротивления датчика тока R8. Но это приведет к выделению на нем значительной мощности. Даже при сопротивлении 0,05 Ом и токе 5 А на резисторе R8 рассеивается 5 * 5 * 0,05 = 1,25 Вт. Обратите внимание, что резистор R8 имеет мощность 2 Вт.

Теперь, какой ток мы измеряем. Мы измеряем ток потребления импульсного стабилизатора от источника питания. Схема измерения этого параметра гораздо проще, чем схема измерения тока нагрузки. Нагрузка у нас “отвязана” от общего провода. Для работы системы необходимо измерять электрическую мощность на элементе Пельтье. Мы вычислим мощность потребляемую регулятором, умножив напряжение источника питания на потребляемый ток. Посчитаем, что наш регулятор имеет КПД 100% и решим, что это и есть мощность на элементе Пельтье. На самом деле КПД регулятора будет 90-95%, но эта погрешность никак не скажется на работе системы.

Компоненты L2, L3, C5 – простой фильтр радиопомех. Возможно, в нем нет необходимости.

Расчет дросселя ключевого стабилизатора.

Дроссель имеет два параметра, важных для нас:

  • индуктивность;
  • ток насыщения.

Необходимая индуктивность дросселя определяется частотой ШИМ и допустимыми пульсациями тока дросселя. На эту тему есть очень много информации. Я приведу самый упрощенный расчет.

Мы подали на дроссель напряжение и ток через него начал увеличиваться ток. Увеличиваться, а не появился, потому что какой-то ток уже протекал через дроссель в момент включения Iвкл).


Транзистор открылся. К дросселю подключили напряжение:

Uдросселя = Uпитания – Uнагрузки.

Ток через дроссель начал нарастать по закону:

Iдросселя = Uдросселя * tоткр / L

  • tоткр – длительность импульса открытого ключа;
  • L - индуктивность.

Т.е. значение пульсации тока дросселя или на сколько увеличился ток за время открытого ключа определяется выражением:

Iвыкл – Iвкл = Uдросселя * tоткр / L

Напряжение на нагрузке может меняться. А оно определяет напряжение на дросселе. Существуют формулы, учитывающие это. Но в нашем случае я бы принял такие значения:

  • напряжение питания 12 В;
  • минимальное напряжение на элементе Пельтье 5 В;
  • значит максимальное напряжение на дросселе 12 – 5 = 7 В.

Длительность импульса открытого ключа tоткр определяется частотой периода ШИМ. Чем она выше, тем меньшей индуктивности необходим дроссель. Максимальная частота ШИМ платы Ардуино 62,5 кГц. Как получить такую частоту я расскажу в следующем уроке. Ее и будем использовать.

Возьмем худший вариант – ШИМ переключается ровно в середине периода.

  • Длительность периода 1 / 62500 Гц = 0,000016 сек = 16 мкс;
  • Длительность открытого ключа = 8 мкс.

Пульсации тока в таких схемах обычно задают до 20% от среднего тока. Не надо путать с пульсациями выходного напряжения. Их сглаживают конденсаторы на выходе схемы.

Если мы допускаем ток 5 А, то возьмем пульсации тока 10 % или 0,5 А.

L = Uдросселя * tоткр / Iпульсаций = 7 * 8 / 0,5 = 112 мкГн.

Ток насыщения дросселя.

Все на свете имеет предел. И дроссель тоже. При каком-то токе он перестает быть индуктивностью. Это и есть ток насыщения дросселя.

В нашем случае максимальный ток дросселя определяется как средний ток плюс пульсации, т.е. 5,5 А. Но лучше ток насыщения выбирать с запасом. Если мы хотим, чтобы работала аппаратная защита в этом варианте схемы, то он должен быть не менее 12 А.

Ток насыщения определяется воздушным зазором в магнитопроводе дросселя. В статьях о контроллерах элемента Пельтье я рассказывал о конструкции дросселя. Если я начну разворачивать эту тему подробно, то мы уйдем от Ардуино, от программирования и не знаю когда вернемся.

У меня дроссель выглядит так.


Естественно, провод обмотки дросселя должен быть достаточного сечения. Расчет простой – определение тепловых потерь за счет активного сопротивления обмотки.

Активное сопротивление обмотки:

Rа = ρ * l / S,

  • Rа – активное сопротивление обмотки;
  • Ρ – удельное сопротивление материала, для меди 0,0175 Ом мм2 / м;
  • l – длина обмотки;
  • S – сечение провода обмотки.

Тепловые потери на активном сопротивлении дросселя:

Ключевой регулятор потребляет от источника питания приличный ток и нельзя допускать, чтобы этот ток проходил через плату Ардуино. На схеме показано, что провода от блока питания подключены непосредственно к блокировочным конденсаторам C6 и C7.

Основные импульсные токи схемы проходят по контуру C6, нагрузка, L1, D2, R8. Эта цепь должна замыкаться связями с минимальной длиной.

Общий провод и шина питания платы Ардуино подключаются к блокировочному конденсатору C6.

Провода сигналов между платой Ардуино и модулем ключевого стабилизатора должны быть минимальной длины. Конденсаторы C1 и C2 лучше расположить на разъемах подключения к плате.

Я собрал схему на плате . Запаял только нужные компоненты. Выглядит собранная схема у меня так.

Я задал ШИМ 50% и проверил работу схемы.

  • При питании от компьютера плата формировала заданный ШИМ.
  • При автономном питании от внешнего блока питания все замечательно работало. На дросселе формировались импульсы с хорошими фронтами, на выходе было постоянное напряжение.
  • Когда я включил одновременно питание и от компьютера, и от внешнего блока питания у меня сгорела плата Ардуино.

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

У меня случилось следующее. На схеме не было диода VD2. Я добавил его после этой неприятности. Я посчитал, что плату можно питать от внешнего источника через вывод Vin. Сам же написал в уроке 2, что плата может получать питание от внешнего источника через разъем (сигнал RWRIN). Но я думал, что это один и тот же сигнал, только на разных разъемах.

Я подсоединил блок питания (не включил в сеть) и шнур платы Ардуино в USB разъем компьютера. На выход стабилизатора платы U1 NCP1117 с разъема USB поступило напряжение +5 В. А вход оказался замкнутым через достаточно низкое сопротивление выключенного блока питания. Схема есть в

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

Схема и принцип её работы

Как и большинство недорогих диммеров, данная схема работает за счёт фазовой регулировки напряжения, что достигается путем принудительного открывания силового ключа – симистора. Принцип действия схемы следующий. Arduino на программном уровне формирует импульсы, частота которых подстраивается сопротивлением потенциометра. Управляющий импульс с вывода P1 проходит через оптопару MOC3021 и поступает на управляющий электрод симистора. Он открывается и пропускает ток до перехода полуволны сетевого напряжения через ноль, после чего закрывается. Затем приходит следующий импульс и цикл повторяется. Благодаря сдвигу управляющих импульсов, в нагрузке формируется обрезанная по фронту часть синусоиды.

Чтобы симистор открывался в соответствии с заданным алгоритмом, частота следования импульсов должна быть засинхронизирована с напряжением сети 220 В. Другими словами Arduino должен знать, в какой момент синусоида сетевого напряжения проходит через ноль. Для этого в диммере на элементах R3, R4 и PC814 реализована цепь обратной связи, сигнал с которой поступает на вывод P2 и анализируется микроконтроллером. В цепь детектора нуля добавлен резистор R5 на 10 кОм, который нужен для подпитки выходного транзистора оптопары.

Один силовой вывод симистора подключается к фазному проводу, а ко второму – подключается нагрузка. Нулевой провод сети 220 В напрямую следует от клеммника J1 к J2, а затем к нагрузке. Применение оптопар необходимо для гальванической развязки силовой и низковольтной части схемы диммера. Потенциометр (на схеме не показан) средним выводом подключается на любой аналоговый вход Arduino, а двумя крайними – на +5 В и «общий».

Печатная плата и детали сборки

Минимум радиоэлементов позволяет сконструировать одностороннюю печатную плату, размер которой не превышает 20х35 мм. Как видно из рисунка на ней отсутствует переменный резистор, чтобы радиолюбитель мог самостоятельно подобрать потенциометр подходящего форм-фактора и определить место его крепления к корпусу готового диммера. Подключение к Arduino осуществляется через провода, которые запаивают в соответствующие отверстия на плате.

Для сборки своими руками диммера, управляемого Arduino, понадобятся следующие радиоэлементы и детали:

  1. Симистор BT136-600D, способный выдерживать обратное напряжение до 600 В и пропускать в нагрузку ток до 4 А (естественно с предварительным монтажом на радиатор). В схеме можно применить симистор и с большей нагрузочной способностью. Главное – обеспечить отвод тепла от его корпуса и правильно подобрать ток на управляющий электрод (справочный параметр). При подключении к нагрузке электроприбора большой мощности ширину печатных проводников в силовой части схемы необходимо будет пересчитать. Как вариант, силовые дорожки можно продублировать с другой стороны платы.
  2. Оптопара MOC3021 с симисторным выходом.
  3. Оптопара PC814 с транзисторным выходом.
  4. Резисторы номиналом 1 кОм, 220 Ом, 10 кОм мощностью 0,25 Вт и 2 резистора на 51 кОм мощностью 0,5 Вт.
  5. Переменный резистор на 10 кОм.
  6. Клеммные колодки – 2 шт., с двумя разъёмами и шагом 5 мм.

Все необходимые файлы по проекту находятся в ZIP-архиве: dimmer-arduino.zip

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

Программа управления симистором создана на базе таймера Timer1 и библиотеки Cyber.Lib, благодаря чему отсутствует влияние на работу других программных кодов. Принцип её действия следующий. При переходе сетевого напряжения через ноль «снизу вверх» таймер перенастраивается на обратный переход «сверху вниз» и начинает отсчёт времени в соответствии со значением переменной «Dimmer». В момент срабатывания таймера Arduino формирует управляющий импульс и симистор открывается. При следующем переходе через ноль симистор перестаёт пропускать ток и ожидает очередное срабатывание таймера. И так 50 раз в секунду. За регулировку задержки на открывание симистора отвечает переменная «Dimmer». Она считывает и обрабатывает сигнал с потенциометра и может принимать значение от 0 до 255.

Область применения диммера на Arduino

Конечно, использовать дорогостоящий Arduino для управления яркостью галогенных ламп – избыточно. Для этой цели лучше заменить обычный выключатель диммером промышленного изготовления. Диммер на Arduino способен решать более серьёзные задачи:

  • управлять любыми видами активной нагрузки (температурой нагрева паяльника, проточного водонагревателя и т. д.) с точным удержанием заданного параметра;
  • одновременно выполнять несколько функций. Например, обеспечивать плавное включение утром (отключение вечером) света, а также контролировать температуру и влажность террариума.

Увидеть каким образом изменяется напряжение в нагрузке можно с помощью осциллографа. Для этого к выходным клеммам диммера припаивают резистивный делитель, благодаря которому сигнал в контрольной точке должен уменьшиться примерно в 20 раз. После этого к делителю подсоединяют щупы осциллографа и подают питание на схему. Изменяя положение ручки потенциометра, на экране осциллографа можно наблюдать насколько плавно Arduino управляет симистором и присутствуют ли при этом высокочастотные помехи.

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