"Buďte jasnou iskrou, svetlá zhasnú, až kým nebude tma!" niekedy zabúdame zhasnúť svetlá a strácať elektrinu a určite ste už videli, že sa denné svietilo aj pouličné svetlo. Na detektore tmy sme už postavili niekoľko obvodov, kde sa svetlá automaticky vypínajú, ak je vonku svetlé svetlo, a zapínajú sa, ak je vonku tmavá. Ale tentokrát v tomto okruhu nielen zapíname a vypíname svetlá na základe svetelných podmienok, ale tiež meníme intenzitu svetla podľa vonkajších svetelných podmienok. Tu sme použili koncept LDR a PWM s Arduinom na automatické znižovanie alebo zvyšovanie jasu 1 wattovej LED napájania.
V zásade sa PWM vzťahuje na moduláciu šírky impulzu, výstupný signál cez pin PWM bude analógový signál a bude získaný ako digitálny signál z Arduina. Využíva pracovný cyklus digitálnej vlny na generovanie sekvenčnej analógovej hodnoty pre signál. Tento signál sa ďalej používa na riadenie jasu LED napájania.
Potrebný materiál
- Arduino UNO
- LDR
- Rezistor (510, 100k ohm)
- Kondenzátor (0,1 uF)
- Tranzistor 2N2222
- 1 W LED napájania
- Pripojovacie vodiče
- Nepál
Schéma zapojenia
Kód a vysvetlenie
Kompletný Arduino kód pre automatický stmievač LED je uvedený na konci.
V nasledujúcom kóde definujeme pin PWM a premenné, ktoré sa majú v kóde použiť.
int pwmPin = 2; // priradí pin 12 premennej pwm int LDR = A0; // priraďuje analógový vstup A0 k premennej banke int c1 = 0; // deklaruje premennú c1 int c2 = 0; // deklaruje premennú c2
Teraz v slučke najskôr načítame hodnotu pomocou príkazu „analogRead (LDR)“ a potom analógový vstup uložíme do premennej s názvom „value“ . Matematickým výpočtom generujeme signál PWM. Tu riadime intenzitu svetla pomocou PWM, iba ak je analógová hodnota menšia ako 500, a ak je viac ako 500, svetlá úplne vypneme.
int hodnota = analogRead (LDR); Serial.println (hodnota); c1 = hodnota; c2 = 500-cl; // odčíta c2 od 1 000 ans uloží výsledok do c1 if (hodnota <500) { digitalWrite (pwmPin, HIGH); delayMicroseconds (c2); digitalWrite (pwmPin, LOW); delayMicroseconds (c1); } if (hodnota> 500) { digitalWrite (2, LOW); } }
Viac informácií o PWM v Arduine sa dozviete tu.
Ako automaticky riadi intenzitu svetla:
Podľa schémy zapojenia sme vytvorili obvod rozdeľovača napätia pomocou LDR a 100k rezistora. Výstup rozdeľovača napätia sa napája na analógový pin Arduina. Analógový Pin sníma napätie a dáva určitú analógovú hodnotu Arduinu. Analógová hodnota sa mení podľa odporu LDR. Pokiaľ je teda tma nad LDR, zvyšuje sa jeho odpor a tým klesá hodnota napätia (analógová hodnota). Preto analógová hodnota mení výstup PWM alebo pracovný cyklus a pracovný cyklus je ďalej úmerný intenzite svetla výkonovej LED. Takže svetlo nad LDR bude automaticky riadiť intenzitu LED napájania. Nižšie je vývojový diagram toho, ako to bude fungovať, značka šípky hore znamená „zväčšuje sa“ a značka šípky dole označuje „klesá“.
Intenzita svetla (na LDR) ↓ - Odpor ↑ - Napätie na analógovom kolíku ↓ - Zaťažiteľnosť (PWM) ↑ - Jas LED napájania ↑
Ak je jeho exteriér plný (keď je analógová hodnota vyššia ako 500), kontrolka napájania zhasne.
Takto môžete pomocou LDR automaticky ovládať intenzitu svetla.
Ďalej tu skontrolujte všetky naše obvody súvisiace s LDR.