KONTROL KELUARAN SINYAL AC DENGAN AC Light Dimmer Module

 Informasi Umum Dari AC Light Dimmer Module

AC Dimmer dirancang untuk mengontrol tegangan arus bolak-balik, yang dapat mentransfer arus hingga 600V / 16А. Dalam kebanyakan kasus, Dimmer digunakan untuk menyalakan / mematikan daya untuk lampu atau elemen pemanas, juga dapat digunakan pada kipas, pompa, pembersih udara, dll.

Akhir-akhir ini, Dimmer telah menjadi keputusan yang sering digunakan untuk sistem smart home. Misalnya, saat Anda perlu mengubah kecerahan cahaya dengan baik. Lampu perlahan-lahan MENYALA atau MATI, menciptakan suasana yang nyaman. Peredup bekerja paling efektif dengan lampu filamen. Ini kurang stabil dengan lampu LED yang dapat diredupkan dengan kecerahan rendah, tetapi dengan kecerahan sedang dan tinggi akan berfungsi dengan baik. Perhatikan bahwa lampu luminescent (lampu pelepasan gas) tidak mendukung peredupan.

Bagian daya dimmer diisolasi dari bagian kontrol, untuk mengecualikan kemungkinan gangguan arus tinggi ke mikrokontroler. Level logika toleran terhadap 5V dan 3.3V, oleh karena itu dapat dihubungkan ke mikrokontroler dengan logika level 5V dan 3.3V. Di Arduino, peredup dikontrol dengan pustaka RBDdimmer.h, yang menggunakan interupsi eksternal dan interupsi waktu proses. Ini menyederhanakan penulisan kode dan memberikan lebih banyak waktu pemrosesan untuk kode utama. Itulah mengapa Anda dapat mengontrol beberapa Dimmer dari satu mikrokontroler.

Anda dapat mendownload perpustakaan RBDDimmer.h dan beberapa contoh di GitHub. Kami terus memperbarui perpustakaan kami, jadi kami menyarankan untuk memeriksa pembaruan situs web atau berlangganan buletin kami.

Dimmer terhubung ke pengontrol Arduino melalui dua pin digital. Pertama (zero-crossing detector) untuk mengontrol lewatnya Phase Null dari AC, yang digunakan untuk memulai sinyal interupsi. Kedua (DIM / PSM) untuk mengontrol arus (redup).

Gambar rangkaian Ac Light Dimmer

Ini adalah sirkuit yang agak klasik. Ini mendeteksi zerocrossing pada grid dan kemudian mikrokontroler menyalakan TRIAC dengan waktu tunda yang menentukan kecerahan Lampu yang terpasang. Siklus penuh adalah 10mS (pada 50Hz).

Perhatikan bahwa Zero crossing detector memerlukan koneksi ke pin mikrokontroler yang ditentukan (yang berbeda tergantung pada model Uno, Nano, Leonardo, Mega), karena terikat ke interupsi mikrokontroler.



Teori Dasar

Peredupan dapat dilakukan dengan Pulse Skip Modulation:

Metode 1 - Satu atau lebih siklus (sinyal gelombang sinus) ditransfer ke beban, sementara mengikuti satu atau beberapa siklus diblokir.

Metode 2 - Transfer parsial dari setiap gelombang sinus ke beban.

Metode 3 - Pembangkitan sinyal sinus penuh termodulasi dengan frekuensi berbeda hingga beberapa ratus hertz. Metode ini membutuhkan generator AC bertenaga khusus dengan modulasi berbeda.

Metode 1 dan 2 adalah yang paling mudah untuk dieksekusi dengan bantuan kode Dimmer dan program: dalam kedua kasus, ada kebutuhan sirkuit yang mendeteksi persimpangan nol dan dapat mengontrol triac.


Library AC Light Dimmer in Github 

Sebagai Contoh Coba dengan Library dari Github. import library ke arduino IDE. lalu buka File>Example>RBDdimmer>SerialMonitorDim





Note:



Pada Arduino Pin2 --- > Pin Zero Cross (Z-C)
Pada Arduino Pin7 --- > Pin PWM




                                                                    Skematik Rangkaian 

List Program dari Example :
/**************
 *  RobotDyn
 *  Dimmer Library
 *  **************
 * 
 * The following sketch is meant to define the dimming value through the serial port of the controller, 
 * using USE_SERIAL.begin 
 *    void printSpace() function is used for adding of space after functional data
 *    void loop()  serial port evaluator, used to register and define values in dimmer.setPower(outVal);
 *    
 * 
 *  ---------------------- OUTPUT & INPUT Pin table ---------------------
 *  +---------------+-------------------------+-------------------------+
 *  |   Board       | INPUT Pin               | OUTPUT Pin              |
 *  |               | Zero-Cross              |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Lenardo       | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  +---------------+-------------------------+-------------------------+
 *  | Mega          | D2 (NOT CHANGABLE)      | D0-D1, D3-D70           |
 *  +---------------+-------------------------+-------------------------+
 *  | Uno           | D2 (NOT CHANGABLE)      | D0-D1, D3-D20           |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP8266       | D1(IO5),    D2(IO4),    | D0(IO16),   D1(IO5),    |
 *  |               | D5(IO14),   D6(IO12),   | D2(IO4),    D5(IO14),   |
 *  |               | D7(IO13),   D8(IO15),   | D6(IO12),   D7(IO13),   |
 *  |               |                         | D8(IO15)                |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP32         | 4(GPI36),   6(GPI34),   | 8(GPO32),   9(GP033),   |
 *  |               | 5(GPI39),   7(GPI35),   | 10(GPIO25), 11(GPIO26), |
 *  |               | 8(GPO32),   9(GP033),   | 12(GPIO27), 13(GPIO14), |
 *  |               | 10(GPI025), 11(GPIO26), | 14(GPIO12), 16(GPIO13), |
 *  |               | 12(GPIO27), 13(GPIO14), | 23(GPIO15), 24(GPIO2),  |
 *  |               | 14(GPIO12), 16(GPIO13), | 25(GPIO0),  26(GPIO4),  |
 *  |               | 21(GPIO7),  23(GPIO15), | 27(GPIO16), 28(GPIO17), |
 *  |               | 24(GPIO2),  25(GPIO0),  | 29(GPIO5),  30(GPIO18), |
 *  |               | 26(GPIO4),  27(GPIO16), | 31(GPIO19), 33(GPIO21), |
 *  |               | 28(GPIO17), 29(GPIO5),  | 34(GPIO3),  35(GPIO1),  |
 *  |               | 30(GPIO18), 31(GPIO19), | 36(GPIO22), 37(GPIO23), |
 *  |               | 33(GPIO21), 35(GPIO1),  |                         |
 *  |               | 36(GPIO22), 37(GPIO23), |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino M0    | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  | Arduino Zero  |                         |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino Due   | D0-D53                  | D0-D53                  |
 *  +---------------+-------------------------+-------------------------+
 *  | STM32         | PA0-PA15,PB0-PB15       | PA0-PA15,PB0-PB15       |
 *  | Black Pill    | PC13-PC15               | PC13-PC15               |
 *  | BluePill      |                         |                         |
 *  | Etc...        |                         |                         |
 *  +---------------+-------------------------+-------------------------+
 */

#include <RBDdimmer.h>//

//#define USE_SERIAL  SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL  Serial
#define outputPin  7 
#define zerocross  2 // for boards with CHANGEBLE input pins

//dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards
dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero

int outVal = 0;

void setup() {
  USE_SERIAL.begin(9600); 
  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE) 
  USE_SERIAL.println("Dimmer Program is starting...");
  USE_SERIAL.println("Set value");
}

void printSpace(int val)
{
  if ((val / 100) == 0) USE_SERIAL.print(" ");
  if ((val / 10) == 0) USE_SERIAL.print(" ");
}

void loop() {
  int preVal = outVal;

  if (USE_SERIAL.available())
  {
    int buf = USE_SERIAL.parseInt();
    if (buf != 0) outVal = buf;
    delay(200);
  }
  dimmer.setPower(outVal); // setPower(0-100%);

  if (preVal != outVal)
  {
    USE_SERIAL.print("lampValue -> ");
    printSpace(dimmer.getPower());
    USE_SERIAL.print(dimmer.getPower());
    USE_SERIAL.println("%");

  }
  delay(50);

}




Video Hasil


Thank you, Semoga Bermanfaat 




0 Comments