Indholdsfortegnelse:

Kalibrering af LED -lysstyrke: 5 trin
Kalibrering af LED -lysstyrke: 5 trin

Video: Kalibrering af LED -lysstyrke: 5 trin

Video: Kalibrering af LED -lysstyrke: 5 trin
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, November
Anonim
Kalibrering af LED -lysstyrke
Kalibrering af LED -lysstyrke

Mens jeg lavede et eventyrlys, indså jeg, at PWM-værdien er ikke-lineært proportional med lysstyrken på LED'en. Kort sagt, hvis PWM -værdien er dobbelt, er lysstyrken ikke dobbelt; især når PWM er tæt på maksimum, genkendes enhver ændring ikke af mine øjne. Jeg tænkte, at det skulle være et simpelt kalibreringsproblem! og det var sådan jeg lavede dette projekt! Ideen er at måle lysstyrken på en LED med en eller anden enhed (lysstyrkesensor eller fotoresistor) og finde en sammenhæng mellem PWM -værdi og lysstyrken. Så senere Hvis jeg indstiller lysstyrken til 50%, vil Arduino beregne den tilsvarende PWM og dæmpe LED'en i overensstemmelse hermed.

Derfor har jeg brug for en lysstyrkesensor og en LED for at måle lysstyrken. Ved hjælp af et SD -kort gemmer jeg dataene til senere tilpasningsprocedure. Tilpasningen foretages i Excel (eller ethvert andet program). Out -put’en vil blive brugt i Arduino -kode, og det er det! Det skal gøres en gang. Derefter kan du bruge kalibreringsparameteren for altid!

Trin 1: Dele

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (Luminosity sensor): Aliexpress 3 €

3- SD-kortmodul: Aliexpress 1 €

4- LED

5- Modstand 220 ohm

6- ledninger

samlede omkostninger: 8-10 €

Trin 2: Ledningsføring

Ledninger
Ledninger
Ledninger
Ledninger
Ledninger
Ledninger

SD -kortmodul og lysstyrkesensortråde bør ikke ændres (de fleste af dem). LED skal tilsluttes en PWM -pin.

Trin 3: Kode

Kode
Kode

Jeg kombinerede tre koder:

SD -kort: brugt eksempel> SD> ReadWrite i Arduino IDE

TSL 2561: brugt Adafruit TSL2561 bibliotekseksempel (sensorapi); du finder det i eksempler, hvis du installerer biblioteket (jeg går ud fra, at du ved, hvordan du installerer et bibliotek i Arduino IDE).

LED fading: brugte eksempler> Analog> fading

Koden vil efter initialisering af modulerne dæmpe lysdioden og læse lysstyrken og gemme den på SD -kort. på denne måde vil jeg indsamle nogle data til kalibrering.

Jeg ændrede hver af koder i henhold til mine behov. den endelige kode vedhæftet.

Signalet skal ligne det vedhæftede billede. Desværre glemte jeg at tage et foto, så jeg genplacerede det i excel for at vise dig, hvordan det skulle være.

BEMÆRK: Jeg bruger wemo mini D1 i stedet for Arduino. af en eller anden grund, som jeg ikke ved, er PWM mellem 0 og 1023. I Arduino burde det være mellem 0-255. Hvis du vil bruge koden til arduino, skal du passe på den (linje 90).

Trin 4: Montering og brug

Montering og brug
Montering og brug
Montering og brug
Montering og brug

efter indsamling af data åbnede jeg filen i excel og plot dataene (se billedet). den første kolonne er PWM -værdi, og den anden er lux (aflæsning af sensoren, enheden betyder ikke meget). Plot derfor lux (y-akse) kontra PWM (x-akse). Som du kan se er lysstyrken lineært proportional med PWM -værdien. Jeg satte en streg på den.

Følg som følger for at passe til en linje:

1- plot dataene (indsæt> spred plot) jeg antager, at du ved hvordan.

2- højreklik på de plottede data

3- klik på trendlinjen.

4- (i excel 2013) på højre side dukker et panel op. Vælg lineær. I bunden vælges "vis ligning på diagram".

Den lineære relation er forskellig fra min opfattelse. Derfor synes jeg, at der burde være en logaritmisk relation mellem min opfattelse og lysstyrken (det er den enkleste måde, jeg tænkte på!). Så jeg tog skråningen af pasformen. Aflytningen er ikke vigtig, fordi den afhænger af den omgivende lysforurening! i stedet tilføjede jeg 1. Fordi Log10 (0) er uendelig. Så jeg har brug for en aflytning for at løse problemet. I mit tilfælde ser ligningen sådan ud:

y = Log10 (0,08 x +1), y er lysstyrken og x er PWM-værdien (0-1023)

Jeg normaliserede ligningen til den maksimale værdi. derefter er output-ringetiden altid mellem 0-100. på denne måde kan jeg bede arduino om en vis relativ lysstyrke uden at angive den maksimale absolutte lysstyrke.

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

Fordi min input er den relative lysstyrke i arduino, skal jeg omarrangere ligningen for x (PWM):

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

ved hjælp af denne ligning i koden er vi i stand til at få en lineær lysstyrkeændring. Så du beder arduino om en lysstyrke (y) mellem 0-100, og arduino beregner den tilsvarende PWM-værdi. på denne måde, hvis det dobbelte af lysstyrken, er din opfattelse også den samme.

hvis du vil bruge den i din kode, er det bedre at tilføje disse linjer:

lysstyrke = 50; // i procent

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

analogWrite (ledpin, PWM);

BEMÆRK: normaliseringen udføres for en maksimal PWM på 1023 (for Wemos mini D1). For Arduino er PWM mellem 0-255. du skal beregne det i overensstemmelse hermed.

NOTE2: Jeg tilføjede et log-lineært plot for at vise, hvordan vores opfattelse og PWM-værdi er relateret. du bør ikke bruge den til montering!

Trin 5: Konklusion

kalibreringen fungerer fint for mig. Når PWM -værdierne er store, kan jeg se forskellen. Før som de store værdier kunne jeg ikke se effekten af dæmpning. Grundlæggende blev de fleste ændringer foretaget i et lille udvalg af PWM. nu er den kalibreret!

hver LED, specielt forskellige farver, skal have sine egne kalibreringsparametre. Jeg kalibrerede imidlertid en blå LED og brugte parameteren til en hvid LED, og resultatet var acceptabelt. så måske kan du bruge min kalibreringsparameter uden at genere dig selv !!

Anbefalede: