- Nødvendigt materiale
- Kredsløbsdiagram
- Kode og forklaring
- Hvordan det automatisk styrer lysintensiteten:
"Vær en lys gnist, lyser, indtil det er mørkt!" nogle gange glemmer vi at slukke for lyset og spilde strøm, og du skal også have set gadelys tændt om dagen. Vi har allerede bygget få kredsløb på Dark detector, hvor lys slukker automatisk, hvis det er lyst udenfor og tænder, hvis det er mørkt udenfor. Men denne gang tænder og slukker vi ikke kun lys i dette kredsløb baseret på lysforhold, men varierer også lysintensiteten i henhold til lysforholdene udefra. Her har vi brugt LDR- og PWM-koncept med Arduino til automatisk at mindske eller øge lysstyrken på 1 watt Power LED.
Dybest set henviser PWM til pulsbreddemodulation, udgangssignalet via en PWM-pin vil være et analogt signal og erhvervet som et digitalt signal fra Arduino. Det bruger den digitale bølges arbejdscyklus til at generere den sekventielle analoge værdi for signalet. Og signalet bruges yderligere til at kontrollere lysstyrken på strøm-LED'en.
Nødvendigt materiale
- Arduino UNO
- LDR
- Modstand (510, 100k ohm)
- Kondensator (0,1 uF)
- Transistor 2N2222
- 1 watt strøm-LED
- Tilslutning af ledninger
- Brødbræt
Kredsløbsdiagram
Kode og forklaring
Den komplette Arduino-kode til automatisk LED-dæmper gives i slutningen.
I nedenstående kode definerer vi PWM-stiften og de variabler, der skal bruges i koden.
int pwmPin = 2; // tildeler pin 12 til variabel pwm int LDR = A0; // tildeler analog input A0 til variabel pot int c1 = 0; // erklærer variabel c1 int c2 = 0; // erklærer variabel c2
Nu i sløjfen læser vi først værdien ved hjælp af kommandoen “analogRead (LDR)” og gemmer derefter den analoge indgang i en variabel med navnet “værdi” . Ved at lave en matematisk beregning genererer vi PWM-signalet. Her styrer vi kun lysintensiteten ved hjælp af PWM, hvis den analoge værdi er mindre end 500, og hvis den er mere end 500, slukker vi lysene helt.
int-værdi = analogRead (LDR); Serial.println (værdi); c1 = værdi; c2 = 500-c1; // subtraherer c2 fra 1000 ans gemmer resultatet i c1 hvis (værdi <500) { digitalWrite (pwmPin, HIGH); forsinkelseMikrosekunder (c2); digitalWrite (pwmPin, LOW); forsinkelse Mikrosekunder (c1); } hvis (værdi> 500) { digitalWrite (2, LAV); } }
Du kan lære mere om PWM i Arduino herfra.
Hvordan det automatisk styrer lysintensiteten:
I henhold til kredsløbsdiagrammet har vi lavet et spændingsdelerkredsløb ved hjælp af LDR og 100k modstand. Spændingsdelerudgangen føres til den analoge pin på Arduino. Den analoge Pin registrerer spændingen og giver Arduino en vis analog værdi. Den analoge værdi ændres i henhold til modstanden til LDR. Så hvis det er mørkt over LDR, bliver dets modstand øget, og derfor falder spændingsværdien (analog værdi). Derfor varierer den analoge værdi PWM-output eller driftscyklus, og driftscyklus er yderligere proportional med lysintensiteten af strøm-LED. Så lyset over LDR styrer automatisk intensiteten af Power LED. Nedenfor er rutediagrammet, hvordan dette vil fungere, det opadgående piltegn indikerer "stigende" og pil ned-tegnet angiver "faldende".
Lysintensitet (på LDR) ↓ - Modstand ↑ - Spænding ved analog stift ↓ - Driftscyklus (PWM) ↑ - Lysstyrke på strøm-LED ↑
Hvis det er fuldt lys udenfor (når den analoge værdi stiger mere end 500), slukkes strøm-LED'en.
Sådan kan du automatisk styre lysintensiteten ved hjælp af LDR.
Se yderligere vores LDR-relaterede kredsløb her.