🌟 Hướng dẫn điều khiển độ sáng đèn AC 220V bằng PIC16F877A và TRIAC
Trong các dự án nhà thông minh, việc điều khiển độ sáng đèn AC 220V là một ứng dụng phổ biến. Bài viết này hướng dẫn bạn chi tiết cách sử dụng vi điều khiển PIC16F877A kết hợp với TRIAC để điều chỉnh độ sáng của đèn.
TRIAC là linh kiện bán dẫn 3 chân (MT1, MT2, Gate) dùng để điều khiển dòng điện đi tới tải. Khi có xung vào chân Gate, TRIAC sẽ dẫn điện, từ đó điều chỉnh ánh sáng đèn.
📌 Mục lục
💡 Phần cứng cần thiết
- PIC16F877A microcontroller
- BT136 TRIAC — datasheet
- Đèn AC 220V
- LM393 (hoặc LM339) comparator để phát hiện điểm không (Zero Crossing)
- Optocoupler (MOC3020, MOC3021, MOC3022, MOC3023 hoặc tương đương) — datasheet
- 2 x Diode 1N4007
- Điện trở 220kΩ, 10kΩ, 470Ω, 180Ω, 100Ω
- Điện trở biến 10kΩ (Potentiometer)
- Tụ 0.01µF
- Nguồn 5V
- Breadboard và dây nối
⚡ Mạch điện điều khiển đèn AC
Sơ đồ mạch:
💻 Code C cho PIC16F877A
/* PIC16F877A AC Lamp Dimmer */
#define triac_gate PIN_D2
#include <16F877A.h>
#device ADC = 10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock = 20MHz)
#use fast_io(d)
#byte OPTION_REG = GETENV("SFR:OPTION_REG")
#bit INTEDG = OPTION_REG.6
int1 ZC=0; int16 alpha;
#INT_EXT
void ext_isr(){ZC=1;if(INTEDG)INTEDG=0;else INTEDG=1;}
void main(){
output_low(triac_gate); output_drive(triac_gate);
setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(AN0); set_adc_channel(0);
clear_interrupt(INT_EXT); enable_interrupts(GLOBAL); enable_interrupts(INT_EXT);
delay_ms(500);
while(TRUE){
alpha=(1023-read_adc())*10;
if(alpha>9500)alpha=9500; else if(alpha<200)alpha=0;
while(ZC==0); delay_us(alpha); output_high(triac_gate); delay_us(200); output_low(triac_gate); ZC=0;}}
6. Liên hệ hỗ trợ kỹ thuật
Zalo hỗ trợ: 0334 308 669
Gửi file project hoặc hỏi thêm về code CCS.
💡 Lưu ý: Khi làm việc với điện 220V, luôn tuân thủ các biện pháp an toàn. Ngắt nguồn trước khi đấu nối và sử dụng thiết bị cách điện đầy đủ.
