Cara menggunakan Modul Dimmer AC dengan Arduino

Jadi mari kita lihat Dimmer secara umum:
Dimmer - perangkat elektronik yang dirancang untuk mengubah daya listrik (power regulator). Biasanya digunakan untuk mengatur kecerahan cahaya yang dipancarkan oleh lampu pijar atau LED.

Biasanya dimmer ditemukan sebagai saklar lampu, hanya saja tidak dengan tombol hidup dan mati. Dan dengan tombol penyesuaian kecerahan, dapat digunakan untuk menambah dan mengurangi kecerahan bola lampu, misalnya.

Tetapi penting untuk dipahami bahwa semua ini hanya akan bekerja dengan lampu pijar, tidak akan bekerja dengan lampu hemat energi.

Menyesuaikan kecerahan itu bagus, tetapi Anda harus terus-menerus mendekati sakelar dan menyalakan kecerahan. Tetapi untuk mengatasi masalah ini, ada dimmer digital yang akan dikendalikan oleh mikrokontroler dari kejauhan.

Sebenarnya modul ini dirancang untuk ini.

Modul Peredupan Cahaya AC ini dari RobotDyn dan mereka memiliki skema modul ini di situs web, yang akan saya berikan:

Skema:
Pinout:
Ketika saya memesan modul ini, saya pikir semuanya sederhana, saya akan menghubungkan plus dan minus dari Arduino dan kami akan memberikan sinyal ke cahaya untuk mengubah kecerahan. Tapi ternyata, semuanya jauh lebih rumit.

Modul ini memiliki 4 pin yang terhubung ke Arduino:

Vcc ~ +5v

Gnd ~ -5v

PWM ~ PWM

Z-C ~ Pendeteksi Zero-Cross

Pin Zero-Cross adalah pin interupsi. Pada akhirnya, saya menemukan sketsa yang berfungsi menampilkan karya dari dimmer, dengan mulus menyalakan dan mematikan bola lampu. sebenarnya dari contoh ini, Anda dapat melangkah lebih jauh dan melompat melakukan segalanya untuk diri sendiri.

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

Diagram koneksi:

Modul Dimmer Cahaya AC Arduino
+5 VCC
GND GND
pin 3 PWM
pin 2 Z-C


Jika Anda tahu bagaimana pin interupsi bekerja dan Anda telah memenangkan modul ini, silakan tulis di komentar.

Comments

Post a Comment