Ac dimmer ışığın sabit yanma sorunu

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
hintli ac dimmer.jpg
ac hintli.png

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:
Foruma hoş geldin! Program kodunu "Kod" bloğu içine alırsan daha anlaşılır olur.

1736197562714.png
 
ilk gördüğüm hata main loop içinde serial printler. bu yazdırmalar baud rate hızına göre epey vakit alır ve sistemin kararsız çalışmasına sebep olabilir. ilk zero cross yakaladıktan sonra bekledin, triacı açtın ve serial printlere gittin 9600 baud için her bir karakter için yazdırma süresi 104*9 = 936 usec, düze hesap 1 ms dersek 16 karakter yazdırdığında 16 ms orada bekleyecek. senin bir yarım alternansın zaten 10 ms bir sonraki zero cross detect edilemeyecek sonra gene seri yazdırmaya girecek ve bir sonraki alternansı da kaçıracak. yani işlemci vaktinin %99 kısmını serial printler içinde oyalanarak geçirecek.
 
Devrenin bağlantıları çok net görünmüyor. Sorun donanımsal ise muhtemelen triac ın T1 ve T2 bağlantıları ters olabilir .
 
ilk gördüğüm hata main loop içinde serial printler. bu yazdırmalar baud rate hızına göre epey vakit alır ve sistemin kararsız çalışmasına sebep olabilir. ilk zero cross yakaladıktan sonra bekledin, triacı açtın ve serial printlere gittin 9600 baud için her bir karakter için yazdırma süresi 104*9 = 936 usec, düze hesap 1 ms dersek 16 karakter yazdırdığında 16 ms orada bekleyecek. senin bir yarım alternansın zaten 10 ms bir sonraki zero cross detect edilemeyecek sonra gene seri yazdırmaya girecek ve bir sonraki alternansı da kaçıracak. yani işlemci vaktinin %99 kısmını serial printler içinde oyalanarak geçirecek.
Değerli vaktinizi ayırdığınız için teşekkür ederim. Bu kod da devrenin yapım sayfasında devre için paylaşılan kod. Bununla da dimming işlemi yapılamıyor
Kod:
int LAMP = 4;


int dim_val=0;


void setup()


{


  pinMode(LAMP, OUTPUT);


  attachInterrupt(digitalPinToInterrupt(2), zero_cross, CHANGE);


}


void zero_cross()


{


  int dimming_time = (200*dim_val);


  delayMicroseconds(dimming_time); 


  digitalWrite(LAMP, HIGH);


  delayMicroseconds(10);


  digitalWrite(LAMP, LOW);


}


 


void loop()


{


    int data=analogRead(A0);


    int data1 = map(data, 0, 1023,10,49);


    dim_val=data1;


}
 
Peki lambayı tamamen söndürebiliyor musun? Koddaki gecikmelerin lambayı tam güçte açmanı engellemesi lazım, oysa lamba hep açık oluyor. Triak bir sebepten kesime gitmiyor olabilir mi?
 
Peki lambayı tamamen söndürebiliyor musun? Koddaki gecikmelerin lambayı tam güçte açmanı engellemesi lazım, oysa lamba hep açık oluyor. Triak bir sebepten kesime gitmiyor olabilir mi?
Tamamen de sönmüyor hocam sabit şiddette yanık kalıyor lamba
 
bence önce şöyle bir kod yaz. lambayı 2 saniye açık tut, 2 saniye kapalı. bu şekilde dönsün bakalım triac gerçekten on-off yapıyor mu.
ardından da sıfır geçişleri doğru yakalayıp yakalamadığını test edersin. örneğin her 50 adet sıfır geçiş yakaladığında bir ledi yak ve söndür böylece eğer hiç geçiş kaçırmıyorsan saniyede 1 yanıp sönen bir led elde etmelisin.
 
Tamamen de sönmüyor hocam sabit şiddette yanık kalıyor lamba
Daha önceki mesajımda yine belirtmiştim. Bağlantı net görünmediği için kesin emin olunamıyor. Triac malzemenin (T1-T2 (A1-A2, M1-M2) uçları rastgele bağlanamaz. Muhtemelen bu uçlar ters. Gate uçundan hiçbir tetikleme yapmazsanız zaten hiç iletime geçmemesi gerekli. Ama sizin durumunuzda triac direkt iletimde. İlk önce donanım olarak çalıştığından emin oluması gerekli. Uçlar ters ise zaten mcu ile kontrol edemezsiniz.
 

Forum istatistikleri

Konular
7,541
Mesajlar
126,340
Üyeler
3,054
Son üye
rikvipart

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
Back
Top