Điều khiển góc mở của Triac để thay đổi độ sáng của bóng đèn


Xin chào các bạn, hôm nay mình xin giới thiệu với các bạn về cách điều khiển góc mở của Triac. Cụ thể của tôi ở đây là điều khiển độ sáng của bóng đèn thông qua vi điều khiển . Mạch của mình có dùng MOC3021 và một mạch cầu dùng để phát hiện điểm 0 của dòng điện xoay chiều 220V.


Mạch cầu dùng để phát hiện điểm 0 của điện xoay chiều 220V
Tín hiệu tại hai đầu của Diode Zener 5V

Tín hiệu tại điểm INVDK


 Tín hiệu tại điểm INVDK cho ta thấy khi điện áp xoay chiều 220V về giá trị 0 thì xung tín hiệu lúc đó tại INVDK sẽ là 5V. Chúng ta sẽ cho tín hiệu này vào VĐK và xử lý.



Khi tín hiệu vào bằng 1 chúng ta delay một khoảng thời gian ( thời gian delay sẽ được thay đổi thông qua việc vặn biến trở nó sẽ nằm trong khoảng từ 1ms->9ms bời vì chu kỳ của điện áp 220V là 20ms ). Khoảng thời gian delay này sẽ quyết định độ sáng của bóng đèn. Sau khi delay chúng ta sẽ cho tín hiệu OUTVDK bằng 1( để mở Triac ) sau đó cho bằng 0 luôn ( delay 1ms rồi cho về 0)

unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
void main(void)
{
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=1 State1=T State0=T
PORTC=0x00;
DDRC=0x02;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
OUT = 0;
while (1)
{
        val = read_adc(5);
        TimeDL = val/100;
      if (TimeDL==10)
        {
            OUT=0;
        }
      else
        {  if (IN)
            {
                delay_ms(TimeDL);
                OUT = 1;
                delay_ms(1);
                OUT = 0;
            }
        }
}
}


Mạch điều khiển góc mở của Triac dùng MOC3021
Khi tín hiệu tại OUTVDK lên 1 thì tại điểm G của Triac sẽ có dòng làm cho hai đầu A2 và A1 của Triac thông với nhau. Khi tín hiệu tại OUTVDK về 0 thì A2 và A1 sẽ đóng khi điện áp xoay chiều về 0 ( tức là chênh lệch điện áp giữa A2 và A1 là 0 ).
Điện áp đầu ra tại RL
Việc phát hiện được điểm 0 của điện áp 220V sẽ giúp chúng ta đóng mở được trong từng chu kỳ của điện 220V thay vì đóng và mở mỗi chu kỳ ( việc này có ừng dụng rất nhiều trong việc điều khiển động cơ xoay chiều )
DEMO

Nhận xét

Bài đăng phổ biến từ blog này

Cài đặt thư viện của ESP32 để lập trình trong Arduino