INHOUDSOPGAWE:

Kalibrasie van LED -helderheid: 5 stappe
Kalibrasie van LED -helderheid: 5 stappe

Video: Kalibrasie van LED -helderheid: 5 stappe

Video: Kalibrasie van LED -helderheid: 5 stappe
Video: Алексей Воробьев - Я тебя люблю 2024, November
Anonim
Kalibreer LED -helderheid
Kalibreer LED -helderheid

Terwyl ek 'n sprokieslig maak, besef ek dat die PWM-waarde nie-lineêr in verhouding is tot die helderheid van die LED. Eenvoudig gesê, as die PWM -waarde dubbel is, is die helderheid nie dubbel nie; veral as PWM naby die maksimum is, is my verandering nie aan my oë herkenbaar nie. Ek het gedink dit moet 'n eenvoudige kalibrasieprobleem wees! en dit was hoe ek hierdie projek gemaak het! Die idee is om die helderheid van 'n LED met 'n toestel (luminiteitssensor of fotoresistor) te meet en 'n verband te vind tussen PWM -waarde en die helderheid. As ek later die helderheid op 50%stel, sal Arduino die ooreenstemmende PWM bereken en die LED dienooreenkomstig verdof.

Daarom het ek 'n ligsensor en 'n LED nodig om die helderheid te meet. Met 'n SD -kaart stoor ek die data vir 'n latere aanpassingsprosedure. Die aanpassing sal in Excel (of enige ander program) gedoen word. Die out put word gebruik in die Arduino -kode, en dit is dit! Dit moet een keer gedoen word. Dan kan u die kalibrasieparameter vir ewig gebruik!

Stap 1: Onderdele

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (Lichtsensor): Aliexpress 3 €

3- SD-kaartmodule: Aliexpress 1 €

4- LED

5- Weerstand 220 ohm

6- drade

totale koste: 8-10 €

Stap 2: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

SD -kaartmodule en stralingsensorsdrade moet nie verander word nie (die meeste daarvan). Led moet aan 'n PWM -pen gekoppel word.

Stap 3: Kodeer

Kode
Kode

Ek het drie kodes saamgevoeg:

SD -kaart: gebruikte voorbeeld> SD> ReadWrite in Arduino IDE

TSL 2561: gebruikte Adafruit TSL2561 biblioteekvoorbeeld (sensorapi); U sal dit in voorbeelde vind as u die biblioteek installeer (ek neem aan dat u weet hoe u 'n biblioteek in Arduino IDE moet installeer).

LED -vervaag: gebruikte voorbeelde> Analoog> vervaag

Die kode, na die inisialisering van die modules, sal die LED verdof en die helderheid lees en dit op 'n SD -kaart stoor. op hierdie manier sal ek 'n paar data versamel vir kalibrasie.

Ek het elke kode verander volgens my behoeftes. die finale kode aangeheg.

Die sein moet soos die aangehegte prentjie lyk. Ongelukkig het ek vergeet om 'n foto te neem, so ek plaas dit weer in Excel om jou te wys hoe dit moet wees.

NOTA: ek gebruik wemo mini D1 in plaas van Arduino. om een of ander rede wat ek nie weet nie, is die PWM tussen 0 en 1023. In Arduino behoort dit tussen 0-255 te wees. As u die kode vir arduino wil gebruik, moet u dit versorg (reël 90).

Stap 4: Pas en gebruik

Pas en gebruik
Pas en gebruik
Pas en gebruik
Pas en gebruik

Nadat ek data versamel het, het ek die lêer in Excel oopgemaak en die data uitgebeeld (kyk na die prentjie). die eerste kolom is PWM -waarde en die tweede een is lux (lesing van die sensor, die eenheid maak nie veel saak nie). Teken dus lux (y-as) versus PWM (x-as). Soos u kan sien, is die helderheid lineêr eweredig aan die PWM -waarde. Ek het 'n lyn daarby gepas.

Om 'n lyn te pas, volg as volg:

1- teken die data (invoeg> strooi plot) ek neem aan dat u weet hoe.

2- klik met die rechtermuisknop op die gegewe data

3- klik op die tendenslyn.

4- (in Excel 2013) aan die regterkant verskyn 'n paneel. Kies lineêr. Kies onderaan "vertoon vergelyking op grafiek".

Die lineêre verband verskil van my persepsie. Daarom dink ek dat daar 'n logaritmiese verband moet wees tussen my waarneming en die helderheid (dit is die eenvoudigste manier waarop ek gedink het!). So ek het die helling van die pas geneem. Die afsnit is nie belangrik nie, want dit hang af van die omliggende ligbesoedeling! in plaas daarvan het ek bygevoeg 1. Omdat Log10 (0) oneindig is. Ek het dus 'n afsnypunt nodig om die probleem op te los. In my geval lyk die vergelyking so:

y = Log10 (0,08 x +1), y is die helderheid en x is die PWM-waarde (0-1023)

Ek het die vergelyking tot die maksimum waarde genormaliseer. dan is die uitset altyd tussen 0-100. op hierdie manier kan ek arduino vra vir 'n sekere relatiewe helderheid, sonder om die maksimum absolute helderheid.

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

Omdat my inset die relatiewe helderheid in arduino is, moet ek die vergelyking vir x (PWM) herrangskik:

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

Deur hierdie vergelyking in die kode te gebruik, kan ons 'n lineêre helderheidsverandering kry. U vra arduino vir 'n helderheid (y) tussen 0-100, en arduino bereken die ooreenstemmende PWM-waarde. op hierdie manier, as u die helderheid verdubbel, is u persepsie ook dieselfde.

As u dit in u kode wil gebruik, is dit beter om hierdie reëls by te voeg:

helderheid = 50; // in persentasie

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

analogWrite (ledpin, PWM);

LET WEL: die normalisering word gedoen vir 'n maksimum PWM van 1023 (vir Wemos mini D1). Vir Arduino is PWM tussen 0-255. u moet dit dienooreenkomstig bereken.

NOTA2: Ek het 'n log-lineêre plot bygevoeg om aan te toon hoe ons persepsie en PWM-waarde verband hou. jy moet dit nie gebruik om te pas nie!

Stap 5: Gevolgtrekking

die kalibrasie werk goed vir my. As die PWM -waardes groot is, kan ek die verskil sien. Voorheen, as die groot waardes, kon ek nie die effek van verduistering sien nie. Die meeste veranderinge is basies in 'n klein reeks PWM aangebring. nou is dit gekalibreer!

elke LED, veral verskillende kleure, moet sy eie kalibrasieparameters hê. Ek het egter 'n blou LED gekalibreer en die parameter vir 'n wit LED gebruik, en die resultaat was aanvaarbaar. so miskien kan u my kalibrasie -parameter gebruik sonder om uself te pla !!

Aanbeveel: