"Buďte jasnou jiskrou, světla zhasnou, dokud nebude tma!" někdy zapomeneme vypnout světla a plýtvat elektřinou a určitě jste také viděli zapnuté pouliční osvětlení během dne. Na detektoru temnot jsme již postavili několik obvodů, kde se světla automaticky vypínají, pokud je venku jasné světlo, a zapínají se, pokud je venku tma. Tentokrát ale v tomto okruhu nejen zapínáme a vypínáme světla na základě světelných podmínek, ale také měníme intenzitu světla podle vnějších světelných podmínek. Zde jsme použili koncept LDR a PWM s Arduino pro automatické snížení nebo zvýšení jasu 1 wattové LED napájení.
V zásadě PWM označuje Pulse Width Modulation, výstupní signál přes PWM pin bude analogový signál a získává se jako digitální signál z Arduina. Využívá pracovní cyklus digitální vlny ke generování sekvenční analogové hodnoty pro signál. Tento signál se dále používá k řízení jasu LED napájení.
Potřebný materiál
- Arduino UNO
- LDR
- Rezistor (510, 100k ohm)
- Kondenzátor (0,1 uF)
- Tranzistor 2N2222
- 1 W LED napájení
- Připojovací vodiče
- Nepájivá deska
Kruhový diagram
Kód a vysvětlení
Celý kód Arduino pro automatický stmívač LED je uveden na konci.
V níže uvedeném kódu definujeme pin PWM a proměnné, které se mají v kódu použít.
int pwmPin = 2; // přiřadí pin 12 proměnné pwm int LDR = A0; // přiřadí analogový vstup A0 proměnné pot int int c1 = 0; // deklaruje proměnnou c1 int c2 = 0; // deklaruje proměnnou c2
Nyní ve smyčce nejprve čteme hodnotu pomocí příkazu „analogRead (LDR)“ a poté uložíme analogový vstup do proměnné s názvem „value“ . Matematickým výpočtem generujeme signál PWM. Zde kontrolujeme intenzitu světla pomocí PWM pouze v případě, že analogová hodnota je menší než 500, a pokud je více než 500, úplně vypneme světla.
int hodnota = analogRead (LDR); Serial.println (hodnota); c1 = hodnota; c2 = 500-cl; // odečte c2 od 1000 ans uloží výsledek do c1 if (hodnota <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } if (hodnota> 500) { digitalWrite (2, LOW); } }
Odtud se můžete dozvědět více o PWM v Arduinu.
Jak automaticky řídí intenzitu světla:
Podle schématu zapojení jsme vytvořili obvod děliče napětí pomocí LDR a 100k rezistoru. Výstup děliče napětí je napájen na analogový pin Arduina. Analogový Pin snímá napětí a dává určitou analogovou hodnotu Arduinu. Analogová hodnota se mění podle odporu LDR. Pokud je tedy tma nad LDR, zvyšuje se jeho odpor a tím klesá hodnota napětí (analogová hodnota). Proto analogová hodnota mění výstup PWM nebo pracovní cyklus a pracovní cyklus je dále úměrný intenzitě světla výkonové LED. Takže světlo nad LDR bude automaticky řídit intenzitu LED napájení. Níže je vývojový diagram toho, jak to bude fungovat, znaménko šipky vzhůru znamená „rostoucí“ a znaménko šipky dolů označuje „klesající“.
Intenzita světla (na LDR) ↓ - Odpor ↑ - Napětí na analogovém kolíku ↓ - Zátěžový cyklus (PWM) ↑ - Jas LED napájení ↑
Pokud je venku zcela jasný (když analogová hodnota stoupne o více než 500), kontrolka LED napájení zhasne.
Takto můžete pomocí LDR automaticky ovládat intenzitu světla.
Dále zde zkontrolujte všechny naše obvody související s LDR.