Kazalo:

Kalibriranje svetlosti LED: 5 korakov
Kalibriranje svetlosti LED: 5 korakov

Video: Kalibriranje svetlosti LED: 5 korakov

Video: Kalibriranje svetlosti LED: 5 korakov
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, November
Anonim
Umerjanje svetlosti LED
Umerjanje svetlosti LED

Medtem ko sem delal pravljično luč, sem spoznal, da je vrednost PWM nelinearno sorazmerna s svetlostjo LED. Preprosto povedano, če je vrednost PWM dvojna, svetlost ni dvojna; še posebej, ko je PWM blizu maksimuma, kakršne koli spremembe ne prepoznajo moje oči. Mislil sem, da bi moralo biti to preprosto vprašanje umerjanja! in tako sem naredil ta projekt! Ideja je izmeriti svetlost LED z neko napravo (senzor svetilnosti ali fotorezistor) in najti korelacijo med vrednostjo PWM in svetlostjo. Če pozneje nastavim svetlost na 50%, bo Arduino izračunal ustrezno PWM in ustrezno zatemnil LED.

Zato za merjenje svetlosti potrebujem senzor svetilnosti in LED. S kartico SD bom podatke shranil za kasnejši postopek namestitve. Namestitev bo izvedena v Excelu (ali katerem koli drugem programu). Izhod bo uporabljen v kodi Arduino, in to je to! To je treba narediti enkrat. Potem lahko za vedno uporabite kalibracijski parameter!

1. korak: Deli

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (Senzor svetilnosti): Aliexpress 3 €

3- Modul kartice SD: Aliexpress 1 €

4- LED

5- Upor 220 ohm

6- žice

skupni stroški: 8 -10 €

2. korak: Ožičenje

Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje
Ožičenje

Modula kartice SD in žic senzorja svetilnosti ne smete spreminjati (večina). Led mora biti priključen na pin PWM.

3. korak: Koda

Koda
Koda

Združil sem tri kode:

Kartica SD: uporabljeni primer> SD> ReadWrite v Arduino IDE

TSL 2561: uporabljen primer knjižnice Adafruit TSL2561 (sensorapi); našli ga boste v primerih, če namestite knjižnico (predvidevam, da veste, kako namestiti knjižnico v Arduino IDE).

Bledenje LED: uporabljeni primeri> Analogni> bledenje

Koda bo po inicializaciji modulov zatemnila LED in prebrala svetlost ter jo shranila na kartico SD. na ta način bom zbral nekaj podatkov za umerjanje.

Vsako kodo sem spremenil glede na svoje potrebe. priložena končna koda.

Signal mora izgledati kot priložena slika. Na žalost sem pozabil posneti fotografijo, zato sem jo ponovno postavil v excelu, da bi vam pokazal, kako bi moralo biti.

OPOMBA: Namesto Arduina uporabljam wemo mini D1. iz neznanega razloga, ki ga ne poznam, je PWM med 0 in 1023. V Arduinu bi moralo biti med 0-255. Če želite uporabiti kodo za arduino, morate zanjo poskrbeti (vrstica 90).

4. korak: Namestitev in uporaba

Namestitev in uporaba
Namestitev in uporaba
Namestitev in uporaba
Namestitev in uporaba

po zbiranju podatkov sem odprl datoteko v excelu in narisal podatke (poglejte sliko). prvi stolpec je vrednost PWM, drugi pa lux (odčitek senzorja, enota ni pomembna). Zato narišite luks (os y) proti PWM (os x). Kot lahko vidite, je svetlost linearno sorazmerna z vrednostjo PWM. Nanj sem prilegal črto.

Če želite ustrezati vrstici, sledite naslednjemu:

1- narišite podatke (vstavite> razpršeno ploskev) predvidevam, da veste kako.

2- Z desno miškino tipko kliknite narisane podatke

3- kliknite na črto trenda.

4- (v Excelu 2013) na desni strani se prikaže plošča. Izberite linearno. Na dnu izberite "prikaz enačbe na grafikonu".

Linearni odnos je drugačen od mojega dojemanja. Zato menim, da mora biti logaritemsko razmerje med mojo percepcijo in svetlostjo (to je najenostavnejši način, ki mi je prišel na misel!). Zato sem vzel strmina prileganja. Prestrezanje ni pomembno, ker je odvisno od svetlobnega onesnaženja v okolici! namesto tega sem dodal 1. Ker je Log10 (0) neskončen. Zato za rešitev problema potrebujem prestrezanje. V mojem primeru je enačba videti tako:

y = Log10 (0,08 x +1), y je svetlost in x vrednost PWM (0-1023)

Enačbo sem normaliziral na največjo vrednost. potem je zvonjenje vedno med 0-100. na ta način lahko od arduina zahtevam določeno relativno svetlost, ne da bi to zadevalo največjo absolutno svetlost.

y = Log10 (0,08 x +1)*100/1,914

Ker je v arduinu moj vnos relativna svetlost, moram ponovno urediti enačbo za x (PWM):

x = (10^(y*1.914 / 100) - 1) / 0,08

z uporabo te enačbe v kodi lahko dobimo linearno spremembo svetlosti. Zato od arduina zahtevate svetlost (y) med 0-100 in arduino izračuna ustrezno vrednost PWM. na ta način, če je svetlost dvojna, je tudi vaša percepcija enaka.

če ga želite uporabiti v kodi, raje dodajte te vrstice:

svetlost = 50; // v odstotkih

PWM = pow (10, svetlost*1.914/100) -1) /0.0793;

analogWrite (ledpin, PWM);

OPOMBA: normalizacija se izvede za največjo PWM 1023 (za Wemos mini D1). Za Arduino je PWM med 0-255. ga morate ustrezno izračunati.

OPOMBA 2: Dodal sem log-linearni grafikon, ki je pokazal, kako sta naše dojemanje in vrednost PWM povezana. ne smete ga uporabljati za namestitev!

5. korak: Zaključek

kalibracija mi dobro deluje. Ko so vrednosti PWM velike, vidim razliko. Prej kot velikih vrednosti nisem mogel videti učinka zatemnitve. V bistvu je bila večina sprememb izvedena v majhnem obsegu PWM. zdaj je kalibrirano!

vsaka LED, posebej različnih barv, mora imeti lastne kalibracijske parametre. Vendar sem umeril modro LED in uporabil parameter za belo LED, rezultat pa je bil sprejemljiv. tako da morda lahko uporabite moj kalibracijski parameter, ne da bi se pri tem motili !!

Priporočena: