- Reikalinga medžiaga
- Grandinės schema
- Kodas ir paaiškinimas
- Kaip jis automatiškai valdo šviesos intensyvumą:
„Būk ryški kibirkštis, užsidegs, kol sutems!“ kartais mes pamirštame išjungti šviesą ir eikvoti elektrą, o jūs taip pat matėte dienos metu įjungtą gatvės šviesą. Tamsiame detektoriuje mes jau sukūrėme keletą grandinių, kuriose žibintai išsijungia automatiškai, jei lauke ryšku, ir įsijungia, jei lauke tamsu. Tačiau šį kartą šioje grandinėje mes ne tik įjungiame ir išjungiame žibintus pagal šviesos sąlygas, bet ir keičiame šviesos intensyvumą pagal lauko šviesos sąlygas. Čia mes naudojome „LDR“ ir „PWM“ koncepciją su „Arduino“, kad automatiškai sumažintume arba padidintume 1 vato galios šviesos diodo ryškumą.
Iš esmės PWM reiškia impulso pločio moduliaciją, išvesties signalas per PWM kaištį bus analoginis signalas ir gaunamas kaip skaitmeninis signalas iš „Arduino“. Jis naudoja skaitmeninės bangos veikimo ciklą, kad generuotų nuoseklią analoginę signalo vertę. Šis signalas toliau naudojamas valdyti šviesos diodo ryškumą.
Reikalinga medžiaga
- „Arduino UNO“
- LDR
- Rezistorius (510, 100k omai)
- Kondensatorius (0.1uF)
- Tranzistorius 2N2222
- 1 vatų galios šviesos diodas
- Jungiamieji laidai
- Bandomoji Lenta
Grandinės schema
Kodas ir paaiškinimas
Pilnas Arduino kodas Automatinis LED dimeris skiriamas pabaigoje.
Žemiau esančiame kode mes apibrėžiame PWM kaištį ir kintamuosius, kurie bus naudojami kode.
int pwmPin = 2; // priskiria 12 kaištį kintamajam pwm int LDR = A0; // priskiria analoginį įėjimą A0 kintamajam potui int c1 = 0; // deklaruoja kintamąjį c1 int c2 = 0; // deklaruoja kintamąjį c2
Dabar, cikle, pirmiausia nuskaitome vertę naudodami komandą „analogRead (LDR)“, tada įrašykite analoginę įvestį į kintamąjį, pavadintą „value“ . Atlikdami tam tikrą matematinį skaičiavimą, mes generuojame PWM signalą. Čia mes reguliuojame šviesos intensyvumą naudojant PWM tik tuo atveju, jei analoginė vertė yra mažesnė nei 500, o jei ji yra didesnė nei 500, mes visiškai išjungiame šviesą.
int reikšmė = analoginis skaitymas (LDR); Serial.println (vertė); c1 = vertė; c2 = 500-c1; // atima c2 iš 1000 ans išsaugo rezultatą c1, jei (reikšmė <500) { digitalWrite (pwmPin, HIGH); vėlavimasMikrosekundės (c2); „digitalWrite“ (pwmPin, LOW); vėlavimasMikrosekundės (c1); } if (vertė> 500) { digitalWrite (2, LOW); } }
Čia galite sužinoti daugiau apie PWM „Arduino“.
Kaip jis automatiškai valdo šviesos intensyvumą:
Pagal grandinės schemą mes sukūrėme įtampos skirstytuvo grandinę naudodami LDR ir 100k rezistorių. Įtampos daliklio išvestis tiekiama į analoginį „Arduino“ kaištį. Analoginis kaištis jaučia įtampą ir suteikia tam tikrą analoginę vertę „Arduino“. Analoginė vertė keičiasi atsižvelgiant į LDR atsparumą. Taigi, jei tamsu virš LDR, jo atsparumas padidėja, taigi įtampos vertė (analoginė vertė) mažėja. Taigi, analoginė vertė keičia PWM išėjimą arba darbo ciklą, o darbo ciklas yra dar proporcingas šviesos diodo šviesos intensyvumui. Taigi šviesa virš LDR automatiškai valdys „Power LED“ intensyvumą. Žemiau yra schema, kaip tai veiks, rodyklė aukštyn rodo „didėjantį“, o žemyn nukreipta rodyklė rodo „mažėja“.
Šviesos intensyvumas (esant LDR) ↓ - varža ↑ - įtampa ties analoginiu kaiščiu ↓ - veikimo ciklas (PWM) ↑ - maitinimo šviesos diodo ryškumas ↑
Jei jo šviesa lauke (kai analoginė vertė padidėja daugiau nei 500), maitinimo šviesos diodas išsijungia.
Taip galite automatiškai valdyti šviesos intensyvumą naudodami LDR.
Čia dar patikrinkite visas su LDR susijusias grandines.