AC Light Dimmer Module: http://ali.pub/2keysm
Если кончатся на Ali то можно купить на banggood : http://bgd.by/2kez6f
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
И так давайте сначала ознакомимся, что же такое Диммер вообще:
Диммер — электронное устройство, предназначенное для изменения электрической мощности (регулятор мощности). Обычно используется для регулировки яркости света, излучаемого лампами накаливания или светодиодами.
Обычно диммеры встречаются как выключатели света, только не с клавишами вкл. и выкл. А с крутилкой регулировки яркости, с ее помощью можно увеличивать и уменьшать яркость лампочки например.
Но Важно понимать, что это все будет работать только с лампами накаливания, с энергосберегающими лампами не прокатит. С светодиодными лампами тоже не прокатит, за исключением специальных светодиодных ламп предназначенных для управления диммером.
Регулировать яркость это конечно хорошо, но нужно постоянно подходить к выключателю и крутить яркость. Вот для решения данной проблемы и существуют диммеры цифровые, которые управляться будут микроконтроллерами на растоянии.
Собственно данный модуль и предназначен для этого.
Данный модуль AC Light Dimmer Module фирмы RobotDyn и у них на сайте есть схематика данного модуля которую я и приведу:
Схематика:
Распиновка:
Размеры:
Когда я заказывал данный модуль, я думал, что тут все просто, подключу плюс и минус от ардуино и шим сигнал буду подавать, чтоб лампочка меняла яркость. Но как оказалось все гораздо сложнее.
Модуль имеет 4 пина подключаемых к Arduino :
Vcc – +5
Gnd – Земля
PWM – ШИМ
Z-C – Zero-Cross detector
Пин Zero-Cross это пин прерывания, как он работает я так и не понял, но мучался с ним долго. в итоге я нашел рабочий скетч демонстрирующий работу диммера, плавно включая и плавно выключая лампочку. собственно от данного примера можно дальше и прыгать делая все под себя.
Вот сам скетч для работы с модулем “AC Light Dimmer Module”:
#include <TimerOne.h> // Avaiable from http://www.arduino.cc/playground/Code/Timer1 volatile int i=0; // Variable to use as a counter volatile as it is in an interrupt volatile boolean zero_cross=0; // Boolean to store a "switch" to tell us if we have crossed zero int AC_pin = 3; // Output to Opto Triac int dim = 0; // Dimming level (0-128) 0 = on, 128 = 0ff int inc=1; // counting up or down, 1=up, -1=down int freqStep = 75; // This is the delay-per-brightness step in microseconds. // For 60 Hz it should be 65 // It is calculated based on the frequency of your voltage supply (50Hz or 60Hz) // and the number of brightness steps you want. // // Realize that there are 2 zerocrossing per cycle. This means // zero crossing happens at 120Hz for a 60Hz supply or 100Hz for a 50Hz supply. // To calculate freqStep divide the length of one full half-wave of the power // cycle (in microseconds) by the number of brightness steps. // // (120 Hz=8333uS) / 128 brightness steps = 65 uS / brightness step // (100Hz=10000uS) / 128 steps = 75uS/step void setup() { // Begin setup pinMode(AC_pin, OUTPUT); // Set the Triac pin as output attachInterrupt(0, zero_cross_detect, RISING); // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection Timer1.initialize(freqStep); // Initialize TimerOne library for the freq we need Timer1.attachInterrupt(dim_check, freqStep); // Use the TimerOne Library to attach an interrupt // to the function we use to check to see if it is // the right time to fire the triac. This function // will now run every freqStep in microseconds. } void zero_cross_detect() { zero_cross = true; // set the boolean to true to tell our dimming function that a zero cross has occured i=0; digitalWrite(AC_pin, LOW); // turn off TRIAC (and AC) } // Turn on the TRIAC at the appropriate time void dim_check() { if(zero_cross == true) { if(i>=dim) { digitalWrite(AC_pin, HIGH); // turn on light i=0; // reset time step counter zero_cross = false; //reset zero cross detection } else { i++; // increment time step counter } } } void loop() { dim+=inc; if((dim>=128) || (dim<=0)) inc*=-1; delay(18); }
Схема подключения:
Arduino | AC Light Dimmer Module |
+5 | VCC |
GND | GND |
pin 3 | PWM |
pin 2 | Z-C |
Если вы знаете как работает пин прерывания и вы победили данный модуль, пожалуйста отпишитесь в комментариях.
Демонстрация работы в Видео: