"Var en ljus gnista, tänds tills det är mörkt!" ibland glömmer vi att stänga av lamporna och slösa bort el och du måste också ha sett gatubelysningen tändas på dagen. Vi har redan byggt några kretsar på Dark detector där lamporna släcks automatiskt om det är starkt ute och tänds om det är mörkt ute. Men den här gången slår vi inte bara på och stänger av lampor i den här kretsen baserat på ljusförhållanden utan vi varierar också ljusintensiteten beroende på ljusförhållandena utifrån. Här har vi använt LDR- och PWM-koncept med Arduino för att automatiskt minska eller öka ljusstyrkan på 1 watts Power LED.
I grund och botten hänvisar PWM till pulsbreddsmodulering, utsignalen via en PWM-stift kommer att vara en analog signal och förvärvas som en digital signal från Arduino. Den använder den digitala vågens arbetscykel för att generera det sekventiella analoga värdet för signalen. Och den signalen används vidare för att styra ljusstyrkan på Power LED.
Material krävs
- Arduino UNO
- LDR
- Motstånd (510, 100k ohm)
- Kondensator (0,1 uF)
- Transistor 2N2222
- 1 watt Power LED
- Anslutande ledningar
- Bakbord
Kretsschema
Kod och förklaring
Den kompletta Arduino-koden för automatisk LED-dimmer ges i slutet.
I koden nedan definierar vi PWM-stiftet och de variabler som ska användas i koden.
int pwmPin = 2; // tilldelar stift 12 till variabel pwm int LDR = A0; // tilldelar analog ingång A0 till variabel pot int c1 = 0; // förklarar variabel c1 int c2 = 0; // förklarar variabel c2
Nu, i slingan, läser vi först värdet med kommandot "analogRead (LDR)" och sparar sedan den analoga ingången i en variabel som heter "värde" . Genom att göra en matematisk beräkning genererar vi PWM-signalen. Här styr vi ljusintensiteten med PWM endast om det analoga värdet är mindre än 500, och om det är mer än 500 stänger vi helt av lamporna.
int värde = analogRead (LDR); Serial.println (värde); c1 = värde; c2 = 500-c1; // subtraherar c2 från 1000 ans sparar resultatet i c1 om (värde <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } om (värde> 500) { digitalWrite (2, LOW); } }
Du kan lära dig mer om PWM i Arduino härifrån.
Hur det automatiskt styr ljusintensiteten:
Enligt kretsschemat har vi gjort en spänningsdelarkrets med hjälp av LDR- och 100k-motstånd. Spänningsdelarens utgång matas till Arduinos analoga stift. Den analoga stiftet känner av spänningen och ger något analogt värde till Arduino. Det analoga värdet ändras beroende på motståndet hos LDR. Så, om det är mörkt över LDR, blir dess motstånd ökat och därmed minskar spänningsvärdet (analogt värde). Följaktligen varierar det analoga värdet PWM-utgången eller arbetscykeln, och arbetscykeln är ytterligare proportionell mot ljusintensiteten hos effekt-LED. Så ljuset över LDR styr automatiskt intensiteten på Power LED. Nedan följer flödesdiagrammet hur detta kommer att fungera, uppåtpilstecken indikerar "ökande" och nedåtpilstecken indikerar "minskar".
Ljusintensitet (på LDR) ↓ - Motstånd ↑ - Spänning vid analog stift ↓ - Driftscykel (PWM) ↑ - Ljusstyrka för lysdiod ↑
Om det är fullt ljus ute (när det analoga värdet ökar mer än 500) slocknar strömlampan.
Så här kan du automatiskt styra ljusintensiteten med LDR.
Läs vidare alla våra LDR-relaterade kretsar här.