Sadržaj:

Kalibracija LED svjetline: 5 koraka
Kalibracija LED svjetline: 5 koraka

Video: Kalibracija LED svjetline: 5 koraka

Video: Kalibracija LED svjetline: 5 koraka
Video: ESP32 Tutorial 5 - LED Fade, control brightness of an LED -ESP32 IoT Learnig kit 2024, Novembar
Anonim
Kalibriranje svjetline LED diode
Kalibriranje svjetline LED diode

Dok sam pravio vilinsko svjetlo, shvatio sam da je vrijednost PWM-a nelinearno proporcionalna svjetlini LED-a. Jednostavno rečeno, ako je vrijednost PWM -a dvostruka, svjetlina nije dvostruka; pogotovo kada je PWM blizu maksimuma, bilo koja promjena nije prepoznatljiva po mojim očima. Mislio sam da bi to trebao biti jednostavan problem kalibracije! i tako sam napravio ovaj projekat! Ideja je izmjeriti svjetlinu LED diode nekim uređajem (senzor svjetline ili fotootpornik) i pronaći korelaciju između vrijednosti PWM -a i svjetline. Zatim kasnije, ako postavim svjetlinu na 50%, Arduino će izračunati odgovarajući PWM i prema tome prigušiti LED diodu.

Stoga su mi potrebni senzor za svjetlinu i LED za mjerenje svjetline. Pomoću SD kartice spremit ću podatke za kasniju proceduru ugradnje. Podešavanje će se izvršiti u Excelu (ili bilo kojem drugom programu). Out out će se koristiti u Arduino kodu, i to je to! To treba učiniti jednom. Tada možete zauvijek koristiti kalibracijski parametar!

Korak 1: Dijelovi

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (osjetnik svjetline): Aliexpress 3 €

3- Modul SD kartice: Aliexpress 1 €

4- LED

5- Otpornik 220 ohma

6- žice

ukupni trošak: 8 -10 €

Korak 2: Ožičenje

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

Modul SD kartice i žice senzora svjetline ne treba mijenjati (većina njih). Led treba spojiti na PWM pin.

Korak 3: Kodirajte

Kod
Kod

Kombinovao sam tri koda:

SD kartica: korišteni primjer> SD> ReadWrite u Arduino IDE -u

TSL 2561: korišteno Adafruit TSL2561 primjer biblioteke (sensorapi); naći ćete ga u primjerima, ako instalirate biblioteku (pretpostavljam da znate kako instalirati biblioteku u Arduino IDE).

LED blijeđenje: korišteni primjeri> Analogni> blijeđenje

Kod će, nakon inicijalizacije modula, zatamniti LED diodu i pročitati svjetlinu te je spremiti na SD karticu. na ovaj način ću prikupiti neke podatke za kalibraciju.

Svaki kôd sam promijenio prema svojim potrebama. konačni kod u prilogu.

Signal bi trebao izgledati kao priložena slika. Nažalost, zaboravio sam snimiti fotografiju pa sam je ponovo postavio u excelu kako bih vam pokazao kako bi to trebalo biti.

NAPOMENA: Koristim wemo mini D1 umjesto Arduina. iz nekog razloga koji ne znam, PWM je između 0 i 1023. U Arduinu bi trebalo biti između 0-255. Ako želite koristiti kôd za arduino, trebali biste se pobrinuti za to (redak 90).

Korak 4: Ugradnja i upotreba

Uklapanje i upotreba
Uklapanje i upotreba
Uklapanje i upotreba
Uklapanje i upotreba

nakon prikupljanja podataka otvorio sam datoteku u excelu i iscrtao podatke (pogledajte sliku). prva kolona je PWM vrednost, a druga luks (očitavanje senzora, jedinica nije važna). Stoga, lux luks (y-os) u odnosu na PWM (x-os). Kao što vidite, svjetlina je linearno proporcionalna vrijednosti PWM -a. Postavio sam mu liniju.

Da biste uklopili liniju, slijedite ove upute:

1- iscrtajte podatke (umetnite> raspršivanje) pretpostavljam da znate kako.

2- desnim klikom na iscrtane podatke

3- kliknite na liniju trenda.

4- (u excelu 2013) na desnoj strani pojavljuje se panel. Odaberite linearno. Pri dnu odaberite "prikaz jednadžbe na grafikonu".

Linearni odnos je drugačiji od moje percepcije. Stoga mislim da bi trebao postojati logaritamski odnos između moje percepcije i svjetline (ovo je najjednostavniji način koji mi je pao na pamet!). Pa sam uzeo nagib uklapanja. Presretanje nije važno, jer ovisi o okolnom svjetlosnom zagađenju! umjesto toga, dodao sam 1. Budući da je Log10 (0) beskonačan. Zato mi je potrebno presretanje za rješavanje problema. U mom slučaju jednačina izgleda ovako:

y = Log10 (0,08 x +1), y je svjetlina, a x vrijednost PWM-a (0-1023)

Normalizirao sam jednadžbu na maksimalnu vrijednost. tada je izlaz zvonio uvijek između 0-100. na ovaj način mogu od arduina zatražiti određenu relativnu svjetlinu, bez obzira na maksimalnu apsolutnu svjetlinu.

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

Budući da u arduinu moj unos predstavlja relativnu svjetlinu, moram preurediti jednadžbu za x (PWM):

x = (10^(y*1.914 / 100) - 1) / 0.08

koristeći ovu jednadžbu u kodu možemo dobiti linearnu promjenu svjetline. Zato tražite od arduina svjetlinu (y) između 0-100, a arduino izračunava odgovarajuću vrijednost PWM-a. na ovaj način, ako udvostručite svjetlinu, vaša percepcija je također ista.

ako ga želite koristiti u svom kodu, bolje dodajte ove redove:

svjetlina = 50; // u postocima

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

analogWrite (ledpin, PWM);

NAPOMENA: normalizacija se vrši za maksimalni PWM od 1023 (za Wemos mini D1). Za Arduino PWM je između 0-255. morate to izračunati u skladu s tim.

NAPOMENA 2: Dodao sam log-linearni dijagram kako bih pokazao kako su naša percepcija i vrijednost PWM-a povezane. ne biste ga trebali koristiti za ugradnju!

Korak 5: Zaključak

kalibracija mi dobro radi. Kad su vrijednosti PWM -a velike, mogu vidjeti razliku. Prije kao velike vrijednosti nisam mogao vidjeti učinak zatamnjenja. U osnovi je većina promjena izvršena u malom rasponu PWM -a. sada je kalibrirano!

svaka LED dioda, posebno različitih boja, mora imati vlastite kalibracijske parametre. Međutim, kalibrirao sam plavu LED i upotrijebio parametar za bijelu LED i rezultat je bio prihvatljiv. pa možda možete koristiti moj kalibracijski parametar bez da se gnjavite !!

Preporučuje se: