Dimmer для arduino на bt41 600

Dimmer для arduino на bt41 600

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

Схема подключения диммера к ардуино нано

Приведенный ниже код использует таймер1 и внешнее прерывание 0
Число одновременно работающих Dimmer каналов проверенных мной 10шт. использовал для них выходы D4 по D13, можно увеличивать и дальше, но мне лень это было делать потому как больше 10 думаю ни кому не понадобится
Сразу скажу что 0-это максимальное свечение, 200-это минимальное свечение, 255 отключить свет
Для тестов добавил управление первым каналом Dimmer через UART
Если в сериал мониторе послать заглавную русскую букву «Г» то лампочка будет светится минимальным свечением
Если в сериал мониторе послать маленькую английскую букву «d» то лампочка будет светится на 50%
Если в сериал мониторе пробел то лампочка будет светится почти на максимуме

Можно использовать другой вариант кода dimmer
Управлять можно ступенчато из сериал монитора значениями от 0 до 9

#include «CyberLib.h» //Библиотека от Cyber-Place.ru
volatile uint8_t tic , Dimmer1 , Dimmer2 , Dimmer3 ;
uint8_t data ;

void setup ()
<
D4_Out ; D5_Out ; D6_Out ; //Настраиваем порты на выход
D4_Low ; D5_Low ; D6_Low ; //установить на выходах низкий уровень сигнала
D2_In ; //настраиваем порт на вход для отслеживания прохождения сигнала через ноль

//CHANGE – прерывание вызывается при любом изменении значения на входе;
//RISING – вызов прерывания при изменении уровня напряжения с низкого (Low) на высокий(HIGH)
//FALLING – вызов прерывания при изменении уровня напряжения с высокого (HIGH) на низкий (Low)
attachInterrupt ( 0 , detect_up , LOW ); // настроить срабатывание прерывания interrupt0 на pin 2 на низкий уровень
StartTimer1 ( halfcycle , 40 ); //время для одного разряда ШИМ
StopTimer1 (); //остановить таймер
UART_Init ( 115200 ); //инициализация порта
>
//********************обработчики прерываний*******************************
void halfcycle () //прерывания таймера
<
tic ++; //счетчик
if( Dimmer1 tic ) D4_High ; //управляем выходом
if( Dimmer2 tic ) D5_High ; //управляем выходом
if( Dimmer3 tic ) D6_High ; //управляем выходом
>

void detect_up () // обработка внешнего прерывания. Сработает по переднему фронту
<
tic = 0 ; //обнулить счетчик
ResumeTimer1 (); //запустить таймер
attachInterrupt ( 0 , detect_down , HIGH ); //перепрограммировать прерывание на другой обработчик
>

void detect_down () // обработка внешнего прерывания. Сработает по заднему фронту
<
StopTimer1 (); //остановить таймер
D4_Low ; D5_Low ; D6_Low ; //логический ноль на выходы
tic = 0 ; //обнулить счетчик
attachInterrupt ( 0 , detect_up , LOW ); //перепрограммировать прерывание на другой обработчик
>
//*************************************************************************
void loop ()
< Start
if ( UART_ReadByte ( data )) Dimmer1 = data ;

Dimmer2 = 195 ; //200=мин. 0=макс
Dimmer3 = 0 ; //200=мин. 0=макс
End >

Источник

Самодельные диммеры для систем домашней автоматики

Привет всем! Эта статья про то, как собрать и применить диммеры для управления освещением. Схемы самые простые. Предназначены для сети 220 вольт переменного тока, управление — аналоговый сигнал 0-5 вольт (ардуино) или 0-3.3 вольта (esp8266).

1. Диммер для лампы накаливания, на транзисторе:

Q1 — IGBT транзистор IRG4BC30UD (необходим радиатор)
D1 — выпрямительный диод
D2 — диодный мост
Z 10V — диод зенера на 10 вольт
4N25 — оптопара
R 100K и R 10K — резисторы
C 4.7 — конденсатор

Принцип работы: усиление pwm сигнала с ардуино транзистором.

2. Диммер на симисторе, подходит для ламп накала и светодиодных диммируемых ламп:

BT 139 — симистор
MOC 3021 и 4N25 — оптопары
R300, R10K, R50K — резисторы

Принцип работы: INT0 — вход на ардуино (pin2) настроенный на прерывание, на него приходит сигнал перехода фазы через ноль (детектор нуля).
OUT — выход с ардуины (pin3) с которого через задержку приходит сигнал на симистор.

Параметр диммирования задается через serial порт (0-255#)
Пример: 99#

Для более стабильной работы (например ложные сигналы прерывания) желательно добавить RC фильтр.

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

Источник

Диммер на Arduino

Диммер на базе 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 управляет симистором и присутствуют ли при этом высокочастотные помехи.

Авторство вышеприведенных материалов принадлежит Youtube каналу AlexGyver.

Источник

AlexGyver/AC_Dimmer

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Диммер переменного тока на Arduino

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

  • Library — библиотеки для дисплея и прочего, скопировать в
    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
    C:\Program Files\Arduino\libraries\ (Windows x86)
  • Sketches — прошивки для Arduino, файлы в папках открыть в Arduino IDE (читай FAQ)
    • dimmer_timer — показанная в видео прошивка для 1 канала, с таймеромм и потенциометром
    • dimmer_6ch — прошивка для 6ти канального диммера с таймером, для платы из видео
    • dimmer_delay — версия, часто встречающаяся в интернете, с задержками. Чисто для ознакомления
  • Schematics&PCB — схемы и печатки. Весь проект полностью находится здесь https://easyeda.com/beragumbo/AC_Dimmer-76ae9ae002a64ab28c81e22fb88a56ab

Подключаем к Ардуино

Вариант печатки с подтяжкой на плате

Материалы и компоненты

  • Arduino NANO https://ali.ski/tc-c3
  • Макетка https://ali.ski/ITwkbK
  • Линейный потенциометр https://ali.ski/LasUn

Вам скорее всего пригодится

Настройка и использование

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

Настройки в коде

В: Как скачать с этого грёбаного сайта?
О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP

В: Скачался какой то файл .zip, куда его теперь?
О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.

В: Я совсем новичок! Что мне делать с Ардуиной, где взять все программы?
О: Читай и смотри видос http://alexgyver.ru/arduino-first/

В: Компьютер никак не реагирует на подключение Ардуины!
О: Возможно у тебя зарядный USB кабель, а нужен именно data-кабель, по которому можно данные передавать

В: Ошибка! Скетч не компилируется!
О: Путь к скетчу не должен содержать кириллицу. Положи его в корень диска.

В: Сколько стоит?
О: Ничего не продаю.

Вопросы по этому проекту

В: Работает нестабильно, мерцает!
О: Пайка приветствуется, соединение джамперами очень ненадёжно

Источник

Adblock
detector