- Legyen ragyogó szikra, világítson sötétedésig! néha elfelejtjük lekapcsolni a villanyt és pazarolni az áramot, és biztosan látta a nap folyamán bekapcsolt utcai lámpát is. Már néhány áramkört építettünk a sötét detektoron, ahol a fények automatikusan kikapcsolnak, ha kint világos, és bekapcsol, ha kint sötét van. De ezúttal ebben az áramkörben nemcsak a fényviszonyok alapján kapcsoljuk be és ki a fényeket, hanem a külső fényviszonyoknak megfelelően változtatjuk a fény intenzitását is. Itt az LDR és a PWM koncepciót használtuk az Arduinóval az 1 wattos Power LED fényerejének automatikus csökkentésére vagy növelésére.
Alapvetően a PWM az impulzusszélesség modulációra utal, a PWM csapon keresztüli kimeneti jel analóg jel lesz, és digitális jelként lesz megszerezve az Arduino-tól. A digitális hullám munkaciklusát használja a szekvencia analóg értékének előállításához. Ezt a jelet tovább használják a Power LED fényerejének szabályozására.
Anyag szükséges
- Arduino UNO
- LDR
- Ellenállás (510, 100 k ohm)
- Kondenzátor (0,1 uF)
- 2N2222 tranzisztor
- 1 wattos teljesítmény LED
- Csatlakozó vezetékek
- Kenyérlemez
Kördiagramm
Kód és magyarázat
Az Automatikus LED-es dimmer teljes Arduino kódja a végén található.
Az alábbi kódban meghatározzuk a PWM PIN-kódot és a kódban használandó változókat.
int pwmPin = 2; // hozzárendeli a 12. csapot a pwm int változóhoz. LDR = A0; // hozzárendeli az A0 analóg bemenetet a változó pothoz int c1 = 0; // deklarálja a c1 változót int c2 = 0; // deklarálja a c2 változót
Most a ciklusban először az értéket olvassuk el az „analogRead (LDR)” paranccsal, majd az analóg bemenetet elmentjük az „érték” nevű változóba. Néhány matematikai számítással előállítjuk a PWM jelet. Itt csak akkor szabályozzuk a fény intenzitását a PWM segítségével, ha az analóg érték kisebb, mint 500, és ha több, mint 500, akkor teljesen lekapcsoljuk a lámpákat.
int érték = analóg olvasás (LDR); Soros.println (érték); c1 = érték; c2 = 500-c1; // kivonja a c2-t 1000 ans-ból, az eredményt a c1-be menti, ha (érték <500) { digitalWrite (pwmPin, HIGH); késleltetés mikroszekundum (c2); digitalWrite (pwmPin, LOW); késleltetés mikroszekundum (c1); } if (érték> 500) { digitalWrite (2, LOW); } }
Itt többet tudhat meg az Arduino-ban található PWM-ről.
Hogyan szabályozza automatikusan a fényintenzitást:
A kapcsolási rajz szerint feszültségosztó áramkört készítettünk LDR és 100k ellenállás felhasználásával. A feszültségosztó kimenetét az Arduino analóg tűjére táplálják. Az analóg csap érzékeli a feszültséget, és valamilyen analóg értéket ad az Arduino-nak. Az analóg érték az LDR ellenállása szerint változik. Tehát, ha az LDR felett sötét van, az ellenállása megnő, és ezért csökken a feszültség értéke (analóg érték). Ennélfogva az analóg érték megváltoztatja a PWM kimenetet vagy az üzemi ciklust, és az üzemi ciklus tovább arányos a teljesítmény LED fényének intenzitásával. Tehát az LDR feletti fény automatikusan szabályozza a Power LED fényerejét. Az alábbiakban bemutatjuk a folyamatábrát, hogy ez hogyan fog működni, a felfelé mutató nyíl jel "növekvő", a lefelé mutató nyíl pedig "csökkenő".
A fény intenzitása (LDR esetén) ↓ - Ellenállás ↑ - Feszültség az analóg csapon ↓ - Üzemeltetési ciklus (PWM) ↑ - A tápfeszültség LED fényereje ↑
Ha kívülről teljesen világos (ha az analóg érték 500-nál nagyobb mértékben növekszik), akkor a tápellátás LED kialszik.
Így szabályozhatja automatikusan a fény intenzitását az LDR segítségével.
Itt ellenőrizheti az összes LDR-rel kapcsolatos áramkörünket.