Kazalo:
- 1. korak: osnovni izračuni | Lux do EV
- 2. korak: Predstavljanje vrednosti na zaslonu | Knjižnica Adafruit GFX
- 3. korak: branje in kompenzacija vrednosti Lux | VEML7700
- 4. korak: Arduino / C-koda
- 5. korak: Sestavite skupaj
Video: Fotografski svetlobni meter DIY: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Ta Instructable deli nekaj idej o izdelavi preprostega majhnega in poceni merilnika svetlobe.
Ker mi Instructables ne dovoljuje vstavljanja lastnih videoposnetkov, poskusite s to povezavo:
www.youtube.com/embed/avQD10fd52s
Zame je bil cilj merilnik svetlobe, ki je spremljal mojo filmsko kamero Bronica ETRSi srednjega formata.
Stvari, ki sem jih želel predstaviti:
- enojni ASA (100), ker skoraj uporabljam samo film ASA 100
- čim manjši
- daj mi samo kombinacije, ki jih lahko reproducira moja Bronica, kar pomeni f2.8-f22 in 1sec do 1/500th sec
- brez neumnosti, razen navadnih časov in vrednosti zaslonke
Stvari, ki sem jih uporabil:
- Adafruit (Vishay) digitalni Lux-meter VEML 7700 (približno 5 USD)
- Mikro krmilnik Adafruit Trinket M0 (okoli 9 USD)
- 128 x 32 OLED zaslon (približno 10 USD)
- gumb za začasno vklop (nekaj centov)
- majhen kos traku, ker ne uporabljam kablov, vsekakor pa lahko uporabite tudi kable
1. korak: osnovni izračuni | Lux do EV
Senzor, ki sem ga kupil, uporablja dve funkciji, na podlagi katerih se lahko odločim zanj:
- oddaja 16-bitne luksne vrednosti namesto svetlobnih vrednosti "brez dimenzij"
- oddaja vrednosti prek I2C
Fotografski merilnik svetlobe uporablja vrednosti osvetlitve (EV), senzor, ki sem ga kupil, uporablja vrednosti Lux, kar je popolnoma drugačna lestvica. Prvi korak je torej pridobiti EV iz vrednosti Lux, ki jih je dal senzor.
Na kratko o wikipediji in najdete formulo za merjenje incidentov in pretvorite EV v Lux:
E = 2,5 * 2^EV
kjer se E meri v Luxih.
Ker smo od senzorja že dobili vrednost Lux in želimo vrednost EV, moramo ponovno oblikovati formulo, ki nas pripelje do:
EV = log2 (E/2,5)
To je torej prvi izračun, ki ga je treba narediti, da dobimo fotografske vrednosti iz merilnika svetlobe.
V priloženi iskalni tabeli si lahko ogledate vse vrednosti, ki bodo uporabljene v tem merilniku svetlobe, skupaj z ustreznimi vrednostmi Lux in EV.
2. korak: Predstavljanje vrednosti na zaslonu | Knjižnica Adafruit GFX
Vrednosti sem najprej poskušal predstaviti v celih korakih, ker na to lahko nastavim svojo Bronico, vendar me je to pripeljalo do težave:
Predpostavimo, da ima senzor Lux vrednost natančno 20480, kar bi pomenilo natančno EV 13, zato bi lahko na primer nastavil fotoaparat na f4 in 1/500 sekunde in bi bilo dobro, da gremo
Nato predpostavimo, da bo senzor Lux oddajal 20479 Lux, 1 Lux pod EV13, kar bi dalo vrednost EV 12, vendar je le Lux oddaljeno od EV13
Tako bi fotoaparat nastavil na f2.8 in 1/500 -to sekundo, kar bi preeksponiralo 1 stop, ne da bi sploh vedel, kako blizu sem EV13.
Zaključek: potrebujemo nekakšen analogni prikaz vrednosti, da bi vsaj videli, kako blizu ali daleč je merilnik od naslednjega ali prejšnjega koraka EV.
Ko sem poskušal uporabiti vgrajene črke in pisavo knjižnice GFX, sem se odločil za uporabo dveh grafik po meri, ki se bodo premikale po zaslonu OLED.
Ena za vrednosti zaslonke, ena za čas.
Knjižnica GFX uporablja 8 -bitne vrednosti za predstavitev grafike, zato sem naredil list xls (glej sliko zgoraj).
- vsaka vrednost ima enako vrednost slikovnih pik na vrednost
- časi in odprtine imajo popolnoma enako vrednost na vrstico
- Na začetku vsakega bajta sem dodal "B" in na koncu ","
- Nato sem ga izvozila v navadno besedilo in voila: priložila sem tretjo grafiko
Vrednosti časa se začnejo za 1/8 sekunde in vrednosti zaslonke se začnejo pri f2,8
Z iskalno tabelo v prejšnjem koraku vemo, da predstavlja 160 Lux ali EV6.
Najtemnejše vrednosti bi bile potem f22 in 1/500 -a sekunde
Tudi po iskalni tabeli lahko vidimo, da to pomeni 655360 Lux ali EV18
Zaenkrat dobro.
Tako mora biti na EV6 grafika zaslonke skrajno levo, časi skrajno desno in obratno na EV18
3. korak: branje in kompenzacija vrednosti Lux | VEML7700
Med listanjem po podatkovnem listu Vishay VEML7700 Adafruit, ki ga uporablja za svojo ploščo, sem našel precej moteče obvestilo:
Senzor deluje le linearno med 0 in 1000Lux (!)
oglejte si posnetek zaslona z oranžno (linearno) črto in modro (dejanski izhod senzorja)
Sončna svetloba (EV15) znaša okoli 80.000 Lux, kar pomeni, da bi bil brez kompenzacije nelinearnega dela senzorja popolnoma neuporaben kot merilnik svetlobe.
Vishay to ve, zato so svojim strankam priskrbeli še en pdf, imenovan Oblikovanje VEML7700 v aplikacijo.
V tem pdf-ju najdete formulo za kompenzacijo nelinearnosti senzorjev:
LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX
Kjer je LUX_CORR popravljena vrednost Lux in LUX vrednost, ki jo senzor odda.
To so spremenljivke, ki sem jih uporabil, različne so bile uporabljene na njihovem listu.
Malo me moti, da Adafruit tega ne omenja z eno samo besedo na svoji strani, v dokumentaciji, knjižnici ali kje drugje.
Zato sem se prvih nekaj dni spraševal, zakaj svetlobni meter oddaja največ 20000 Lux tudi pri neposredni sončni svetlobi.
Če pogledate graf z rdečo in modro črto, lahko vidite zakaj: ker brez kompenzacijske formule ne more iti višje.
Toda v dokumentaciji senzorja je skrit še en namig:
Ta izravnalna formula deluje le, če senzor nastavite na 25 ms in razmerje ojačanja 1/8.
S knjižnico Adafruits je to precej enostavno, tako da dodate:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
v nastavitvi void ()
Po nastavitvi na 1/8 in 25ms in dodajanju izravnalne formule lahko izmerite do 120000 luksov, kar je dovolj za pokrivanje sončne svetlobe pri 80-100k Lux
4. korak: Arduino / C-koda
Ker je odvisno od vašega uporabljenega zaslona in želenega krmilnika, se ne bom preveč spuščal v podrobnosti, dodajam le nekaj misli in namigov, zlasti pri uporabi knjižnic Adafruit in OLED velikosti 128x32 px:
v nastavitvi void:
nastavil sem del knjižnice VEML na:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (true);
v zanki praznine:
obvezno dodajte odškodnino:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
Če želite dobiti električna vozila iz Luxa, uporabite to vrstico:
plavajoči EV = log2 ((LUX_CORR/2,5));
premikanje bitnih slik
da se prepričate, da se bitne slike premikajo le, če so vrednosti med 160Lux in 655360Lux, kot je navedeno v prejšnjem koraku, ga zavijte v stavek if, kot je ta:
če (LUX_CORR> 159 && LUX_CORR <655361)
Nato moramo preslikati vrednosti EV v koordinate, saj je obseg EV dvomestne številke in jih želimo premakniti z zaslona nad 128 slikovnih pik po celotnem zaslonu, potrebujemo večje vrednosti.
Ker smo že dobili plavajoče število, ga samo pomnožimo s 100 in uporabimo to celo število za preslikavo koordinat
int EV_DSPL = EV*100;
in:
TIME = zemljevid (EV_DSPL, 600, 1900, -260, 39); APERTURE = zemljevid (EV_DSPL, 600, 1900, 39, -260);
Kot lahko vidite v mojem primeru bi bil najmanjši položaj bitne slike -260px, največji pa 39px
Tukaj je mogoče videti tudi to, da sem spremenil koordinate, tako da se dve bitni sliki premikata v nasprotni smeri
Nato moramo bitne slike premakniti glede na koordinate tako:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
In to je vse, kar je treba narediti
Kot bonus prikazujem naravne vrednosti EV in Lux, ko senzor odda vrednosti pod 160Lux, samo zato, ker sem želel videti stvari pri testiranju.
5. korak: Sestavite skupaj
Ker zaslon in senzor za komunikacijo uporabljata I2C, je izdelava dejanske strojne opreme čim bolj preprosta.
Samo povežite podatke, ozemljitveno uro in 3V linije z Arduinom in pripravljeni ste.
Dodal sem grafiko, kako sem to naredil s trakom, vendar, kot je bilo že rečeno, lahko uporabite kable ali celo zgradite krilo, vse je odvisno od tega, kateri krmilnik in zaslon uporabljate.
Na moji sliki naj bi bile bele pike povezane z zaslonom in senzorjem, rumene pa z Trinket.
Edina izjema bi bil podatkovni zatič linije I2C, ki se poveže z zaslonom, ta pin pa se poveže tudi s podatkovnim zatičem Trinkets.
Odločil sem se, da ne bom uporabljal stikala za vklop/izklop, ampak namesto tega uporabim gumb in dve 3V gumbni celici, da ga začasno vklopim, dokler pritisnem gumb. Vklopi se v manj kot 1/10 sekunde, tako da je dovolj hitro, da si privoščim gumb in ga zmanjšam.
Priporočena:
Svetlobni termometer - vitaminizirana vrtna svetloba (eNANO De Jardin): 6 korakov
Svetlobni termometer - vitaminizirana vrtna luč (eNANO De Jardin): Vitamizirana vrtna svetilka z arduino NANO in temperaturnim senzorjem BMP180. Naša skromna vrtna luč bo imela skrivno moč: z barvno oznako bo lahko označila zunanjo temperaturo Utripa. Njegovo delovanje je naslednje:
ESP8266 - HomeKit NeoPixel svetlobni trak: 6 korakov
ESP8266 - HomeKit NeoPixel Light Strip: Tako sem navdušen nad tem kompletom za razvoj programske opreme, da bom napisal nekaj blogov o tej genialni programski opremi. V vsakem spletnem dnevniku bom obravnaval drugo dodatno opremo, ki jo lahko dodate v svoj HomeKit brez potrebe po mostu. Čas je, da naredite dom
DropArt - Precizni fotografski trkalnik z dvema kapljama: 11 korakov (s slikami)
DropArt - Precizni fotografski trkalnik z dvema kapljicama: Pozdravljeni vsi, v tem navodilu predstavljam svoj dizajn računalniško vodenega trkalnika z dvema kapljicama tekočine. Preden začnemo s podrobnostmi oblikovanja, se mi zdi smiselno natančno razložiti, kaj je namen oblikovanja. Zabava, zanimanje
Fotografski trik "Čarobni" zajec v klobuku: 7 korakov (s slikami)
Foto trik "Čarobni" zajec v klobuku: Tukaj je " čarovnija " trik. Zajec iz ledu sedi na čarovniškem klobuku. Ledeni zajec se topi in je za vedno odšel … ali pač je. Ker se v čarovnikovem klobuku odkrije, da je fotografija zajca, kot da ima
DIY-Recikliranje talnega ventilatorja v fotografski modifikator svetlobe/svetilka vse v enem: 11 korakov
DIY-Recikliranje talnega ventilatorja v fotografsko modifikacijsko svetilko/svetilko vse v enem: Tako sem pred kratkim pomladno čistil in naletel na talni ventilator, v katerem je bil motor izgorel. Potreboval sem namizno svetilko. Z 2+2 sva malo razmišljala in prišla na idejo, da ventilator spremenim v 20 -palčni široki svetlobni modifikator. Preberite na s