Batıkan
Yeni Üye
- Katılım
- 12 Aralık 2024
- Mesajlar
- 7
Selamlar herkese, Üniversite projem olarak ac dimmer devresi istendi. Devreyi kurdum ancak ışığım sabit yanıyor ışığı dimming yapamıyorum zero cross algılama yapıyor pot çalışıyor
Kod:
#define ZC_PIN 2 // Zero Crossing algılayıcı pini (D2)
#define TRIAC_PIN 4 // TRIAC tetikleme pini (D4)
volatile int zero_cross_detected = 0; // Zero Crossing algılandığını işaret eden bayrak
int dimming_value = 128; // Dimming seviyesi (0-255 arasında)
void zero_cross() {
zero_cross_detected = 1; // Zero Crossing algılandı
}
void setup() {
pinMode(ZC_PIN, INPUT_PULLUP); // Zero Crossing pini giriş olarak ayarlandı
pinMode(TRIAC_PIN, OUTPUT); // TRIAC pini çıkış olarak ayarlandı
attachInterrupt(digitalPinToInterrupt(ZC_PIN), zero_cross, FALLING); // Zero Crossing tetiklenince kesme çağrılır
Serial.begin(9600); // Seri haberleşmeyi başlat
}
void loop() {
// Dimmer değerini test etmek için manuel ayar
dimming_value = 50; // 50 ile 150 arasında bir değer deneyin
if (zero_cross_detected == 1) { // Zero Crossing algılandıysa
zero_cross_detected = 0; // Bayrağı sıfırla
delayMicroseconds(dimming_value * 75); // Dimming süresine göre bekle (75µs çarpanı hassas ayar için)
digitalWrite(TRIAC_PIN, HIGH); // TRIAC'ı tetikle
delayMicroseconds(10); // TRIAC'ı tetiklemek için kısa bir süre bekle
digitalWrite(TRIAC_PIN, LOW); // TRIAC'ı kapat
}
// Seri monitörde dimming seviyesini yazdır
Serial.print("Dimming Value: ");
Serial.println(dimming_value);
}
Son düzenleme: