"Parlak bir kıvılcım ol, karanlık olana kadar ışıkları söndür!" bazen ışıkları kapatmayı ve elektriği boşa harcamayı unutuyoruz ve gün içinde sokak lambasının yandığını da görmüş olmalısınız. Karanlık dedektörde, dışarısı parlaksa ışıkların otomatik olarak kapandığı ve dışarısı karanlıksa AÇIK hale geldiği birkaç devre inşa ettik. Ama bu sefer bu devrede sadece ışık koşullarına göre ışıkları açıp kapamakla kalmıyor, aynı zamanda ışık yoğunluğunu da dış ışık koşullarına göre değiştiriyoruz. Burada 1 watt Power LED'in parlaklığını otomatik olarak azaltmak veya artırmak için Arduino ile LDR ve PWM konseptini kullandık.
Temel olarak PWM, Darbe Genişliği Modülasyonunu ifade eder, bir PWM pini aracılığıyla çıkış sinyali analog bir sinyal olacaktır ve Arduino'dan dijital bir sinyal olarak alınacaktır. Sinyal için sıralı analog değeri oluşturmak için dijital dalganın görev döngüsünü kullanır. Ve bu sinyal ayrıca Güç LED'inin parlaklığını kontrol etmek için kullanılır.
Gerekli Malzeme
- Arduino UNO
- LDR
- Direnç (510, 100k ohm)
- Kondansatör (0.1uF)
- Transistör 2N2222
- 1 watt Güç LED'i
- Bağlantı telleri
- Breadboard
Devre şeması
Kod ve Açıklama
Otomatik LED dimmer için tam Arduino kodu sonunda verilmiştir.
Aşağıdaki kodda PWM pinini ve kodda kullanılacak değişkenleri tanımlıyoruz.
int pwmPin = 2; // pim 12'yi değişken pwm int LDR = A0'a atar ; // değişken pot int c1 = 0'a A0 analog girişini atar ; // c1 değişkenini bildirir int c2 = 0; // değişken c2'yi bildirir
Şimdi döngüde, önce "analogRead (LDR)" komutunu kullanarak değeri okuyoruz, ardından analog girişi "değer" adlı bir değişkene kaydediyoruz . Bazı matematiksel hesaplamalar yaparak PWM sinyalini oluşturuyoruz. Burada sadece analog değer 500'den küçükse PWM kullanarak ışık yoğunluğunu kontrol ediyoruz ve 500'den fazla ise ışıkları tamamen kapatıyoruz.
int değer = analogRead (LDR); Serial.println (değer); c1 = değer; c2 = 500-c1; // c2'yi 1000'den çıkarır ve sonucu c1'e kaydeder if (değer <500) { digitalWrite (pwmPin, HIGH); gecikme Mikrosaniye (c2); digitalWrite (pwmPin, DÜŞÜK); gecikme Mikrosaniye (c1); } if (değer> 500) { digitalWrite (2, LOW); } }
Arduino'daki PWM hakkında buradan daha fazla bilgi edinebilirsiniz.
Işık Yoğunluğunu Otomatik Olarak Nasıl Kontrol Eder:
Devre şemasına göre, LDR ve 100k direnç kullanarak bir voltaj bölücü devresi yaptık. Voltaj bölücü çıkışı, Arduino'nun analog pinine beslenir. Analog Pin voltajı algılar ve Arduino'ya bir miktar analog değer verir. Analog değer, LDR direncine göre değişir. Dolayısıyla, LDR'nin üzerinde karanlıksa, direnci artar ve dolayısıyla voltaj değeri (analog değer) düşer. Bu nedenle, analog değer PWM çıkışını veya görev döngüsünü değiştirir ve görev döngüsü ayrıca güç LED'inin ışığının yoğunluğuyla orantılıdır. Bu nedenle, LDR üzerindeki ışık, Güç LED'inin yoğunluğunu otomatik olarak kontrol edecektir. Aşağıda bunun nasıl çalışacağı akış diyagramıdır, yukarı yöndeki ok işareti "arttığını" ve aşağı yöndeki ok işareti "azaldığını" gösterir.
Işık yoğunluğu (LDR'de) ↓ - Direnç ↑ - Analog pindeki voltaj ↓ - Görev döngüsü (PWM) ↑ - Güç LED'inin Parlaklığı ↑
Dışarısı tamamen parlaksa (analog değer 500'den fazla arttığında) güç LED'i kapanır.
LDR kullanarak ışık yoğunluğunu otomatik olarak bu şekilde kontrol edebilirsiniz.
Daha fazla LDR ile ilgili devrelerimizi buradan kontrol edin.