Cuprins:

Calibrarea luminozității LED: 5 pași
Calibrarea luminozității LED: 5 pași

Video: Calibrarea luminozității LED: 5 pași

Video: Calibrarea luminozității LED: 5 pași
Video: CUM SA-TI REGLEZI CORECT FARURILE | Tutoriale Ep.10 2024, Noiembrie
Anonim
Calibrarea luminozității LED-urilor
Calibrarea luminozității LED-urilor

În timp ce făceam o lumină de zână, mi-am dat seama că valoarea PWM este non-liniar proporțională cu luminozitatea LED-ului. Pur și simplu vorbind, dacă valoarea PWM este dublă, luminozitatea nu este dublă; mai ales când PWM este aproape de maxim, orice schimbare nu este recunoscută de ochii mei. Am crezut că ar trebui să fie o simplă problemă de calibrare! și așa am făcut acest proiect! Ideea este de a măsura luminozitatea unui LED cu un dispozitiv (senzor de luminozitate sau fotorezistor) și de a găsi o corelație între valoarea PWM și luminozitatea. Apoi, mai târziu, dacă setez luminozitatea la 50%, Arduino va calcula PWM corespunzător și va reduce LED-ul în consecință.

Prin urmare, am nevoie de un senzor de luminozitate și un LED pentru a măsura luminozitatea. Folosind un card SD, voi salva datele pentru procedura de montare ulterioară. Montarea se va face în Excel (sau în orice alt program). Out out-ul va fi folosit în codul Arduino și atât! Ar trebui făcut o dată. Apoi, puteți utiliza parametrul de calibrare pentru totdeauna!

Pasul 1: Piese

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (senzor de luminozitate): Aliexpress 3 €

3- Modul card SD: Aliexpress 1 €

4- LED

5- Rezistor 220 ohm

6- fire

cost total: 8-10 €

Pasul 2: Cablare

Cablare
Cablare
Cablare
Cablare
Cablare
Cablare

Modulul cardului SD și firele senzorului de luminozitate nu trebuie schimbate (majoritatea). Ledul ar trebui să fie conectat la un pin PWM.

Pasul 3: Cod

Cod
Cod

Am combinat trei coduri:

Card SD: exemplu folosit> SD> ReadWrite în Arduino IDE

TSL 2561: exemplu de bibliotecă Adafruit TSL2561 folosit (sensorapi); îl veți găsi în exemple, dacă instalați biblioteca (presupun că știți cum să instalați o bibliotecă în Arduino IDE).

Fading LED: exemple folosite> Analog> fading

Codul, după inițializarea modulelor, va estompa ledul și va citi luminozitatea și îl va salva în cardul SD. în acest fel voi colecta câteva date pentru calibrare.

Am schimbat fiecare cod în funcție de nevoile mele. atașat codul final.

Semnalul ar trebui să arate ca imaginea atașată. Din păcate, am uitat să fac o fotografie, așa că am replotat-o în Excel pentru a vă arăta cum ar trebui să fie.

NOTĂ: Folosesc wemo mini D1 în locul Arduino. din anumite motive pe care nu le știu, PWM este între 0 și 1023. În Arduino ar trebui să fie între 0-255. Dacă doriți să utilizați codul pentru arduino, ar trebui să aveți grijă de el (linia 90).

Pasul 4: Montarea și utilizarea

Montarea și utilizarea
Montarea și utilizarea
Montarea și utilizarea
Montarea și utilizarea

după colectarea datelor, am deschis fișierul în excel și am trasat datele (uitați-vă la imagine). prima coloană este valoarea PWM și a doua este lux (citirea senzorului, unitatea nu contează prea mult). Prin urmare, trasați lux (axa y) vs. PWM (axa x). După cum puteți vedea, luminozitatea este liniar proporțională cu valoarea PWM. I-am montat o linie.

Pentru a se potrivi unei linii, urmați următoarele:

1- trasează datele (insert> scatter plot) presupun că știi cum.

2- faceți clic dreapta pe datele trasate

3- faceți clic pe linia de trend.

4- (în Excel 2013) în partea dreaptă apare un panou. Alegeți liniar. În partea de jos alegeți „afișați ecuația pe diagramă”.

Relația liniară este diferită de percepția mea. Prin urmare, cred că ar trebui să existe o relație logaritmică între percepția mea și luminozitate (acesta este cel mai simplu mod care mi-a venit în minte!). Așa că am luat panta potrivirii. Interceptarea nu este importantă, deoarece depinde de poluarea luminoasă din jur! în schimb, am adăugat 1. Deoarece Log10 (0) este infinit. Așa că am nevoie de o interceptare pentru a rezolva problema. În cazul meu, ecuația arată astfel:

y = Log10 (0,08 x +1), y este luminozitatea și x este valoarea PWM (0-1023)

Am normalizat ecuația la valoarea maximă. atunci sunetul de ieșire este întotdeauna între 0-100. astfel pot cere arduino o anumită luminozitate relativă, fără a privi luminozitatea absolută maximă.

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

Deoarece în arduino intrarea mea este luminozitatea relativă, trebuie să reorganizez ecuația pentru x (PWM):

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

folosind această ecuație în cod, putem obține o schimbare liniară a luminozității. Deci, solicitați arduino o luminozitate (y) între 0-100, iar arduino calculează valoarea PWM corespunzătoare. în acest fel, dacă dublă luminozitatea, percepția dvs. este, de asemenea, aceeași.

dacă doriți să-l utilizați în codul dvs., mai bine adăugați următoarele linii:

luminozitate = 50; // în procente

PWM = pow (10, luminozitate * 1,914 / 100) -1) / 0,0793;

analogWrite (ledpin, PWM);

NOTĂ: normalizarea se face pentru un PWM maxim de 1023 (pentru Wemos mini D1). Pentru Arduino PWM este între 0-255. trebuie să-l calculați în consecință.

NOTA2: Am adăugat un grafic liniar-log pentru a arăta relația dintre percepția noastră și valoarea PWM. nu ar trebui să-l utilizați pentru montare!

Pasul 5: Concluzie

calibrarea funcționează bine pentru mine. Când valorile PWM sunt mari, văd diferența. Înainte, ca valori mari, nu puteam vedea efectul de estompare. Practic majoritatea schimbărilor au fost făcute într-o gamă mică de PWM. acum este calibrat!

fiecare LED, cu culori deosebit de diferite, ar trebui să aibă parametrii de calibrare proprii. Cu toate acestea, am calibrat un LED albastru și am folosit parametrul pentru un LED alb, iar rezultatul a fost acceptabil. deci poate puteți folosi parametrul meu de calibrare fără să vă deranjați !!

Recomandat: