Taula de continguts:

Calibració de la brillantor del LED: 5 passos
Calibració de la brillantor del LED: 5 passos

Vídeo: Calibració de la brillantor del LED: 5 passos

Vídeo: Calibració de la brillantor del LED: 5 passos
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, De novembre
Anonim
Calibració de la brillantor del LED
Calibració de la brillantor del LED

Mentre feia una llum de fada, em vaig adonar que el valor PWM no era linealment proporcional a la brillantor del LED. Simplement, si el valor PWM és doble, la brillantor no és doble; especialment quan PWM és al màxim, qualsevol canvi no és reconeixible pels meus ulls. Vaig pensar que hauria de ser un simple problema de calibratge. i va ser com vaig fer aquest projecte! La idea és mesurar la brillantor d’un LED amb algun dispositiu (sensor de lluminositat o fotoresistor) i trobar una correlació entre el valor PWM i la brillantor. Després, si estableixo la brillantor al 50%, Arduino calcularà el PWM corresponent i atenuarà el LED en conseqüència.

Per tant, necessito un sensor de lluminositat i un LED per mesurar la brillantor. Amb una targeta SD, desaré les dades per al procediment d’ajust posterior. L'ajust es farà a Excel (o qualsevol altre programa). La sortida es farà servir al codi Arduino, i ja està! S’ha de fer una vegada. Aleshores podeu utilitzar el paràmetre de calibratge per sempre.

Pas 1: parts

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (sensor de lluminositat): Aliexpress 3 €

3- Mòdul de targeta SD: Aliexpress 1 €

4- LED

5- Resistència de 220 ohm

6- cables

cost total: 8-10 €

Pas 2: cablejat

Cablejat
Cablejat
Cablejat
Cablejat
Cablejat
Cablejat

Els cables del mòdul de la targeta SD i del sensor de lluminositat no s’han de canviar (la majoria). El LED s’ha de connectar a un pin PWM.

Pas 3: Codi

Codi
Codi

He combinat tres codis:

Targeta SD: exemple utilitzat> SD> ReadWrite a Arduino IDE

TSL 2561: exemple d'Adafruit TSL2561 utilitzat (sensorapi); el trobareu en exemples, si instal·leu la biblioteca (suposo que sabeu com instal·lar una biblioteca a Arduino IDE).

Fading LED: exemples usats> Analog> fading

El codi, després d’inicialitzar els mòduls, atenuarà el led i llegirà la brillantor i el guardarà a la targeta SD. d’aquesta manera recopilaré algunes dades per calibrar-les.

He canviat cadascun dels codis segons les meves necessitats. adjunt el codi final.

El senyal hauria de semblar a la imatge adjunta. Malauradament, m’he oblidat de fer una foto, així que la replantejo a Excel per mostrar-vos com ha de ser.

NOTA: Estic fent servir wemo mini D1 en lloc d'Arduino. per alguna raó que desconec, el PWM està entre 0 i 1023. A Arduino hauria d’estar entre 0-255. Si voleu utilitzar el codi per a arduino, n’heu de tenir cura (línia 90).

Pas 4: ajust i ús

Ajust i ús
Ajust i ús
Ajust i ús
Ajust i ús

després de recollir dades, vaig obrir el fitxer en excel i vaig dibuixar les dades (mireu la imatge). la primera columna és el valor PWM i la segona és lux (la lectura del sensor, la unitat no importa molt). Per tant, traça lux (eix y) contra PWM (eix x). Com podeu veure, la brillantor és linealment proporcional al valor PWM. Hi vaig instal·lar una línia.

Per ajustar una línia, seguiu el següent:

1- traça les dades (insereix> dispersa gràfic) suposo que saps com fer-ho.

2- Feu clic amb el botó dret sobre les dades representades

3- feu clic a la línia de tendència.

4- (a Excel 2013) a la part dreta apareix un tauler. Tria lineal. A la part inferior, trieu "Mostra l'equació al gràfic".

La relació lineal és diferent de la meva percepció. Per tant, crec que hi hauria d’haver una relació logarítmica entre la meva percepció i la brillantor (aquesta és la manera més senzilla que em va venir al cap!). Així que vaig agafar el pendent de l’ajust. La intercepció no és important, perquè depèn de la contaminació lumínica que l’envolta. en canvi, he afegit 1. Com que Log10 (0) és infinit. Per tant, necessito una intercepció per resoldre el problema. En el meu cas, l'equació té aquest aspecte:

y = Log10 (0,08 x +1), y és la brillantor i x és el valor PWM (0-1023)

Vaig normalitzar l’equació fins al valor màxim. aleshores el so de sortida sempre està entre 0-100. d'aquesta manera, puc demanar a Arduino una certa brillantor relativa, sense importar la brillantor absoluta màxima.

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

Com que a l’arduino la meva entrada és la brillantor relativa, he de tornar a organitzar l’equació per a x (PWM):

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

utilitzant aquesta equació al codi, podem obtenir un canvi de brillantor lineal. Per tant, demaneu a arduino una brillantor (y) entre 0 i 100, i arduino calcula el valor PWM corresponent. d’aquesta manera, si es dobla la brillantor, la seva percepció també és la mateixa.

si voleu utilitzar-lo al vostre codi és millor afegir aquestes línies:

lluentor = 50; // en percentatge

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

analogWrite (ledpin, PWM);

NOTA: la normalització es fa per a un PWM màxim de 1023 (per a Wemos mini D1). Per a Arduino PWM està entre 0-255. cal calcular-lo en conseqüència.

NOTA2: He afegit un diagrama lineal de registre per mostrar com estan relacionades la nostra percepció i el valor PWM. no l'haureu d'utilitzar per ajustar-lo.

Pas 5: Conclusió

el calibratge funciona bé per a mi. Quan els valors PWM són grans, puc veure la diferència. Abans, com els grans valors, no podia veure l’efecte de l’enfosquiment. Bàsicament, la majoria dels canvis es van fer en una petita gamma de PWM. ara està calibrat!

cada LED, especialment de colors diferents, hauria de tenir els seus propis paràmetres de calibratge. No obstant això, he calibrat un LED blau i he utilitzat el paràmetre per a un LED blanc i el resultat ha estat acceptable. així que potser podeu utilitzar el meu paràmetre de calibratge sense molestar-vos!

Recomanat: