Em làm mạch điều khiển góc mở triac thông qua arduino, ở đây em dùng 1 mạch cầu phát hiện điểm 0 của của dòng điện xoay chiều 220V
Mạch cầu phát hiện điểm 0

Mạch kích triac

Khi phát hiển điểm 0 thì INVKD = HIGH, chân này e đưa vào hàm ngắt của arduino (ngắt cạnh lên)
Code arduino như sau:
khi tín hiệu INVDK = HIGH thì em cho delay 1 khoảng t ( 0ms - 9ms, vì tần số của 220V là 50Hz => 1 chu kì bằng 20ms), khoảng t này dùng để kéo dài điểm 0 của đầu ra (e điều chỉnh khoảng t bằng biến trở), sau khi delay thì e cho OUTVDK bằng HIGH, delay 1 ms rồi cho bằng LOW luôn
Nhưng khi test mạch thực tế thì lại ko dc như v. Khi chỉnh khoảng t = 0 thì đèn sáng, còn t khác 0 thì đèn tắt hẳn luôn chứ không giảm độ sáng.
Mạch e test:

Bị như v là do nguyên nhân nào ạ??? rất mong mọi người giúp đỡ
P/s: e tham khảo theo bài này ạ: http://hocdientu.vn/threads/dieu-khi...-bong-den.168/
Mạch cầu phát hiện điểm 0
Mạch kích triac
Khi phát hiển điểm 0 thì INVKD = HIGH, chân này e đưa vào hàm ngắt của arduino (ngắt cạnh lên)
Code arduino như sau:
Code:
unsigned int val = 0;
unsigned int TimeDL = 0;
#define IN_D 2
#define OUT_D 3
void setup() {
Serial.begin(9600);
pinMode(OUT_D, OUTPUT);
pinMode(IN_D, INPUT);
pinMode(A0, INPUT);
digitalWrite(OUT_D, LOW);
}
void cross_zero()
{
delay(TimeDL);
digitalWrite(OUT_D, HIGH);
delay(1);
digitalWrite(OUT_D, LOW);
}
void loop()
{
attachInterrupt(0, cross_zero, RISING);
val = analogRead(A0);
TimeDL = val/100;
if(TimeDL >= 10)
{
digitalWrite(OUT_D, LOW);
}
Serial.print(val);
Serial.print(" ");
Serial.println(TimeDL);
}
Nhưng khi test mạch thực tế thì lại ko dc như v. Khi chỉnh khoảng t = 0 thì đèn sáng, còn t khác 0 thì đèn tắt hẳn luôn chứ không giảm độ sáng.
Mạch e test:

Bị như v là do nguyên nhân nào ạ??? rất mong mọi người giúp đỡ
P/s: e tham khảo theo bài này ạ: http://hocdientu.vn/threads/dieu-khi...-bong-den.168/

Comment