INHOUDSOPGAWE:
- Stap 1: Basiese berekeninge | Lux tot EV
- Stap 2: Die waardes op die skerm voorstel | Adafruit GFX -biblioteek
- Stap 3: Lees en kompenseer die Lux -waardes | VEML7700
- Stap 4: Arduino / C-kode
- Stap 5: Saamvoeg
Video: DIY fotografiese ligmeter: 5 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Hierdie instruksies deel 'n paar idees oor die bou van 'n eenvoudige klein en goedkoop voorvalligmeter.
Aangesien Instructables my nie toelaat om my eie video's in te voeg nie, probeer hierdie skakel:
www.youtube.com/embed/avQD10fd52s
Die doel vir my was 'n ligmeter om my Bronica ETRSi mediumformaat filmkamera te vergesel.
Dinge wat ek wou hê dit moes bevat:
- enkele ASA (100) omdat ek amper net ASA 100 -film gebruik
- so klein as moontlik
- gee my slegs kombinasies wat my Bronica kan reproduseer, wat beteken f2.8-f22 en 1sek tot 1/500 sekonde
- geen nonsens nie, behalwe gewone tye en diafragma waardes
Dinge wat ek gebruik het:
- Adafruit (Vishay) VEML 7700 digitale Lux-meter (ongeveer 5 $)
- Adafruit Trinket M0 mikrobeheerder (ongeveer 9 $)
- 128 x 32 OLED -skerm (ongeveer 10 $)
- 'n drukknop om dit tydelik aan te skakel ('n paar sent)
- 'n klein stuk strookbord, want ek probeer om nie kabels te gebruik nie, maar u kan ook kabels gebruik
Stap 1: Basiese berekeninge | Lux tot EV
Die sensor wat ek gekoop het, gebruik twee funksies waarmee ek daaroor kan besluit:
- gee 16bit lux waardes af in plaas van 'dimensielose' ligwaardes
- voer die waardes uit via I2C
'N Fotografiese ligmeter gebruik blootstellingswaardes (EV), die sensor wat ek gekoop het, gebruik Lux -waardes, wat 'n heeltemal ander skaal is. Die eerste stap is dus om EV's van die Lux -waardes te kry, mits die sensor.
Kyk vinnig na Wikipedia, en u kan 'n formule vind vir die meting van voorvalle en omskakel EV in Lux:
E = 2,5 * 2^EV
waar E in Lux gemeet word.
Aangesien ons reeds die Lux-waarde van die sensor gekry het en die EV-waarde wil hê, moet ons die formule hervorm, wat ons tot die volgende kan bring:
EV = log2 (E/2.5)
Dit is dus die eerste berekening wat gedoen moet word om fotografiese waardes uit die ligmeter te haal.
In die aangehegte opzoektabel kan u alle waardes sien wat in hierdie ligmeter gebruik gaan word, tesame met die ooreenstemmende Lux- en EV -waardes.
Stap 2: Die waardes op die skerm voorstel | Adafruit GFX -biblioteek
Ek het eers die waardes in hele stappe probeer voorstel, want dit is waarvoor ek my Bronica kan stel, maar dit het my tot 'n probleem gelei:
Kom ons neem aan dat die Lux -sensor 'n waarde van presies 20480 lewer, wat beteken dat dit presies EV 13 is, sodat ek byvoorbeeld my kamera op f4 en 1/500 sekonde kan plaas, en dit sal goed wees om te gaan
Kom ons neem aan dat die Lux -sensor 20479 Lux, 1 Lux onder EV13 lewer, wat 'n EV -waarde van 12 lewer, maar dit is net 'n Lux weg van EV13
Dus stel ek my kamera op f2.8 en 1/500 sekonde, wat 1 stop te veel sou blootstel sonder dat ek eers weet hoe naby ek EV13 is.
Gevolgtrekking: ons benodig 'n soortgelyke weergawe van die waardes om ten minste te sien hoe naby of ver die meter van die volgende of vorige EV -stap is.
Nadat ek probeer het om die ingeboude letters en lettertipes van die GFX -biblioteek te gebruik, het ek besluit om twee pasgemaakte grafika te gebruik wat oor die OLED -skerm beweeg.
Een vir die diafragma waardes, een vir die tye.
Die GFX -biblioteek gebruik 8bit -waardes om grafika voor te stel, so ek het 'n xls -blad gemaak (sien prent hierbo).
- elke waarde het presies dieselfde hoeveelheid pixels per waarde
- tye en diafragma's het presies dieselfde hoeveelheid waardes per ry
- Ek het die nodige "B" bygevoeg aan die begin van elke greep en die "," aan die einde
- Ek het dit dan na 'n gewone teks uitgevoer en voila: ek het die derde grafika aangeheg
Tydwaardes begin by 1/8 van 'n sekonde en diafragma waardes begin met f2.8
Deur die opzoektabel van die vorige stap te gebruik, weet ons dat dit 160 Lux of EV6 verteenwoordig.
Die donkerste waardes is dan f22 en 1/500 sekonde
Weereens kan ons sien via die soektafel dat dit 655360 Lux of EV18 beteken
So ver so goed.
So op EV6 moet die diafragma -grafiek heel links wees, die tye heel regs, en omgekeerd op EV18
Stap 3: Lees en kompenseer die Lux -waardes | VEML7700
Terwyl ek deur die datablad van die Vishay VEML7700 Adafruit -gebruike vir hul bord blaai, het ek 'n nogal ontstellende kennisgewing gevind:
Die sensor werk slegs lineêr tussen 0 en 1000Lux (!)
sien die skermkiekie met die oranje (lineêre) lyn en die blou (werklike sensoruitset) lyn
Sonlig (EV15) is ongeveer 80.000 Lux, wat beteken dat sonder vergoeding van die nie-lineêre deel van die sensor dit heeltemal nutteloos sou wees as 'n ligmeter.
Vishay weet dit, en daarom het hulle hul kliënte 'n ander pdf gegee met die naam Die ontwerp van die VEML7700 in 'n toepassing.
In hierdie pdf kan u 'n formule vind om die nie-lineariteit van die sensors te vergoed:
LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX
Waar LUX_CORR die gekorrigeerde Lux-waarde is en LUX die waarde is wat die sensor uitvoer.
Dit is die veranderlikes wat ek gebruik het, die verskillende wat in hul blad gebruik is.
Wat my 'n bietjie pla, is dat Adafruit dit nie noem met 'n enkele woord op hul bladsy, hul dokumentasie, hul biblioteek of elders nie.
Dus het ek die eerste paar dae gewonder hoekom my ligmeter slegs 20000 Lux maksimum lewer, selfs in direkte sonlig.
As u na die grafiek met die rooi en blou lyn kyk, kan u sien hoekom: omdat dit nie hoër kan gaan sonder die vergoedingsformule nie.
Maar daar is nog 'n wenk wat weggesteek is in die dokumentasie van die sensor:
Hierdie vergoedingsformule werk slegs as u die sensor op 25ms stel en 'n winsverhouding van 1/8.
Dit is redelik maklik gedoen met die Adafruits -biblioteek deur die volgende by te voeg:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
in u leemte -opstelling ()
Dus, nadat u dit op 1/8 en 25 ms ingestel het en die kompensasieformule bygevoeg het, kan u tot 120000 lux meet, genoeg om sonlig by 80-100k Lux te bedek
Stap 4: Arduino / C-kode
Aangesien dit afhang van u gebruikte skerm en voorkeurbeheerder, sal ek nie te veel in detail ingaan nie, net 'n paar gedagtes en wenke om by te voeg, veral as u die Adafruit -biblioteke en die 128x32 px OLED gebruik:
in die nietige opstelling:
ek stel die VEML biblioteek-gedeelte op:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (waar);
in die leemte -lus:
voeg die vergoeding by:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
Gebruik hierdie reël om EV's van Lux te kry:
float EV = log2 ((LUX_CORR/2.5));
skuif die bitmaps
Om seker te maak dat die bitmaps slegs beweeg as die waardes tussen 160Lux en 655360Lux is, soos in 'n vorige stap uiteengesit, draai dit in 'n if -klousule soos volg:
as (LUX_CORR> 159 && LUX_CORR <655361)
Vervolgens moet ons die EV -waardes aan die koördinate toewys, aangesien die omvang van die EV's dubbelsyfers is en ons dit van 128px oor die hele skerm uit die skerm wil skuif, benodig ons groter waardes.
Aangesien ons reeds 'n vlotgetal gekry het, vermenigvuldig ons dit met 100 en gebruik die heelgetal om die koördinate in kaart te bring
int EV_DSPL = EV*100;
en:
TYD = kaart (EV_DSPL, 600, 1900, -260, 39); APERTURE = kaart (EV_DSPL, 600, 1900, 39, -260);
Soos u in my geval kan sien, is die minimum posisie van die bitmap -260px en die maksimum 39px
Wat ook hier gesien kan word, is dat ek die koördinate verander het sodat die twee bitmaps in die teenoorgestelde rigting beweeg
Vervolgens moet ons die bitmaps volgens die koördinate skuif deur:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
En dit is al wat gedoen moet word
As 'n bonus vertoon ek reguit EV- en Lux -waardes wanneer die sensor Waardes onder 160Lux uitsaai, net omdat ek dinge wou sien wanneer ek dit toets.
Stap 5: Saamvoeg
Aangesien beide die skerm en die sensor I2C gebruik om te kommunikeer, is die bou van die werklike hardeware so eenvoudig as wat dit moontlik kan wees.
Koppel net die data-, klokgrond- en 3V -lyne met die Arduino, en u is gereed.
Ek het 'n grafika bygevoeg hoe ek dit met 'n strookbord gedoen het, maar soos vroeër gesê, kan u kabels gebruik of selfs 'n vleuel daarvoor bou, dit hang alles af van watter beheerder en skerm u gebruik.
Op my grafiek is die wit kolletjies veronderstel om aan die skerm en sensor gekoppel te word, en die geel kolletjies word verbind met die Trinket.
Die enigste uitsondering sou die data-pen van die I2C-lyn wees wat met die skerm verbind word, die pen kan ook met die Trinkets-datapenn verbind word.
Ek het gekies om nie 'n aan/uit -skakelaar te gebruik nie, maar eerder 'n drukknop en twee 3V knoppieselle om dit tydelik aan te skakel solank ek op die knoppie druk. Dit word binne 1/10 sekonde aangeskakel, sodat ek vinnig genoeg is om 'n knoppie te spaar en dit kleiner te maak.
Aanbeveel:
Nuwe mikro ligmeter vir ou Voigtländer (vito Clr) kamera: 5 stappe
Nuwe mikro -ligmeter vir ou Voigtländer (vito Clr) -kamera: vir almal wat entoesiasties is oor ou analoog kameras met ingeboude ligmeter, kan daar een probleem voorkom. Aangesien die meeste van hierdie kameras in die 70's/80's gebou is, is die gebruikte fotosensors regtig oud en kan dit op die regte manier stop. In hierdie
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Bolt - DIY draadlose laai nagklok (6 stappe): 6 stappe (met foto's)
Bolt - DIY draadlose laai nagklok (6 stappe): Induktiewe laai (ook bekend as draadlose laai of koordlose laai) is 'n tipe draadlose kragoordrag. Dit gebruik elektromagnetiese induksie om elektriese toestelle aan draagbare toestelle te verskaf. Die mees algemene toepassing is die draadlose Qi -laai
Bou 'n Mini DIY hidroponiese stelsels en 'n DIY hidroponiese kruietuin met WiFi -waarskuwings: 18 stappe
Bou 'n mini -selfdoen -hidroponiese stelsels en selfdoen -hidroponiese kruietuin met WiFi -waarskuwings: in hierdie tutoriaal sal ons u wys hoe u 'n #DIY #hidroponiese stelsel kan bou. Hierdie selfdoen -hidroponiese stelsel laat water op 'n pasgemaakte hidroponiese watersiklus, met 2 minute aan en 4 minute af. Dit sal ook die watervlak van die reservoir monitor. Hierdie stelsel
Arduino DIY -ligmeter met BH1750 -sensor: 6 stappe (met foto's)
Arduino DIY ligmeter met BH1750 sensor: In hierdie instruksies gaan ek jou wys hoe om 'n ligmeter te bou met 'n groot Nokia 5110 LCD -skerm met behulp van Arduino. Die bou van 'n ligmeter is 'n wonderlike leerervaring. As u klaar is met die bou van hierdie projek, sal u beter verstaan