Sensörlü Gece Aydınlatması

0
166
Attiny13 sensörlü gece lambası

Attiny13 mikroişlemci kullanılan gece aydınlatmasında, hareket algıladığında kademeli olarak ışık şiddeti artar.

Normal sensörlü aydınlatma devrelerinden farkı; lamba (veya 12V şerit led) parlaklığının PWM tetikleme ile kontrol edilebilmesidir. Sensör bir hareket algıladığında parlaklık kademeli olarak artar ve azalır. Bu ise gözün gece ortama uyum sağlamasını kolaylaştırır, aniden yanan ışık gibi rahatsız etmez.

Devre gece aydınlatması olarak dizayn edildiğinden ilk başta lamba parlaklığı %70 oranında düşüktür. Ortama loş bir ışık verir. Sensör tarafından bir hareket algılanırsa lamba parlaklığı kademeli olarak artmaya başlar. Yaklaşık 3 sn içinde lamba tam parlaklığa ulaşır. Herhangi bir hareket olmadığı durumda lamba 30 sn daha tam parlaklıkta yanmaya devam eder. Bu arada sensör tarafından tekrar hareket algılanırsa bu yanma süresi tekrar 30 sn olur. 30 sn süresince herhangi bir hareket algılanmaz ise lamba parlaklığı kademeli olarak tekrar %70 oranında düşer.

Hareket sensörü olarak küçük boyutlarından dolayı MH-SR602 hareket sensörü kullanılmıştır. Yurtiçi bir çok internet sitesinden temin edebilirsiniz. Sensörün 5 metreye kadar algılama mesafesi vardır. Bunun yerine Attiny13 işlemcisinin 6. pinini kısa süreli ( 3 ile 5V arası) tetikleyecek farklı bir hareket sensörü de olabilir.

12V lamba yerine 12V şerit led kullanılabilir. Daha yüksek akım değerleri için devredeki mosfet, IRFZ44N (55V, 48A) ile değiştirilmelidir.

Arduino kaynak kodları

int cikis = 0;
int giris = 1;
int durum = 0;
int sure = 0;

void setup() {
pinMode(cikis, OUTPUT);
pinMode(giris, INPUT);
analogWrite(cikis,70);
}

void loop() {

if (digitalRead(giris) == HIGH || durum == 1) {      // Sensör çıkış verince tetikle
durum = 1;                                           // Kilitle

if (sure == 0) {                                     // İlk tetiklendiğinde yavaş yavaş lambayı yak                        
for (int artir = 70; artir <= 255; artir++) {        
analogWrite(cikis,artir); 
delay(16); 
}
}

if (digitalRead(giris) == HIGH) {                    // Sensör çıkış verdiği sürece yakılı kalma süresini uzat
sure = 1;  
}

sure++;                                              // Süreyi artır
delay(100);

if (sure == 300) {                                   // Süre dolunca lambayı kısma işlemine başla
  
for (int azalt = 255; azalt > 70; azalt--) {        // Yavaş yavaş kıs
analogWrite(cikis,azalt); 
delay(16); 
}
durum = 0;                                          // Değişkenleri sıfırla
sure = 0;
}

}
}

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz