Sadržaj:
- Korak 1: Osnovni izračuni | Lux do EV
- Korak 2: Prikaz vrijednosti na zaslonu | Knjižnica Adafruit GFX
- Korak 3: Očitavanje i kompenzacija vrijednosti Lux | VEML7700
- Korak 4: Arduino / C-kod
- Korak 5: Sastavite to zajedno
Video: Fotografski svjetlomjer DIY: 5 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Ovaj Instructable dijeli neke ideje o izgradnji jednostavnog malog i jeftinog svjetlomjera.
Kako mi Instructables ne dopuštaju da umetnem vlastite videozapise, isprobajte ovu vezu:
www.youtube.com/embed/avQD10fd52s
Cilj mi je bio mjerač svjetla koji bi pratio moju kameru Bronica ETRSi za film.
Stvari koje sam htio da prikaže:
- single ASA (100) jer skoro koristim samo ASA 100 film
- što je moguće manji
- daj mi samo kombinacije koje moja Bronica može reproducirati, što znači f2.8-f22 i 1sec do 1/500. sec
- nema besmislenih značajki, osim običnog vremena i vrijednosti otvora blende
Stvari koje sam koristio:
- Adafruit (Vishay) VEML 7700 digitalni Lux-metar (oko 5 USD)
- Mikro kontroler Adafruit Trinket M0 (oko 9 USD)
- 128x32 OLED zaslon (oko 10 USD)
- gumb za privremeno uključivanje (nekoliko centi)
- maleni komad strip-ploče, jer pokušavam ne koristiti kabele, ali svakako možete koristiti i kabele
Korak 1: Osnovni izračuni | Lux do EV
Senzor koji sam kupio koristi dvije značajke koje mi omogućuju da odlučim o njemu:
- emitira 16-bitne luks vrijednosti umjesto svjetlosnih vrijednosti "bez dimenzija"
- emitira vrijednosti putem I2C
Fotografski mjerač svjetla koristi vrijednosti ekspozicije (EV), a senzor koji sam kupio koristi vrijednosti Lux, što je potpuno druga skala. Dakle, prvi korak je dobiti EV iz vrijednosti Lux pod uvjetom da senzor.
Brzi pogled na wikipedia i možete pronaći formulu za mjerenje incidenata i pretvoriti EV u Lux:
E = 2,5 * 2^EV
gdje se E mjeri u Luksima.
Kako smo već dobili vrijednost Lux od senzora i želimo vrijednost EV, moramo ponovno oblikovati formulu koja nas dovodi do:
EV = log2 (E/2,5)
Dakle, to je prvi izračun koji se mora napraviti kako bi se fotografske vrijednosti izvukle iz svjetlomjera.
U priloženoj tablici za pretraživanje možete vidjeti sve vrijednosti koje će se koristiti u ovom svjetlomjeru, zajedno s vrijednostima Lux i EV.
Korak 2: Prikaz vrijednosti na zaslonu | Knjižnica Adafruit GFX
Prvo sam pokušao prikazati vrijednosti u cijelim koracima, jer na to mogu postaviti svoju Bronicu, ali to me dovelo do problema:
Pretpostavimo da Lux senzor daje vrijednost točno 20480, što bi značilo da je točno EV 13 pa bih mogao, na primjer, postaviti kameru na f4 i 1/500 dio sekunde i bilo bi dobro krenuti
Zatim, pretpostavimo da bi Lux senzor izlazio 20479 Lux, 1 Lux ispod EV13, što bi dalo vrijednost EV od 12, ali je samo Lux udaljeno od EV13
Pa bih kameru postavio na f2.8 i 1/500 dio sekunde što bi preeksponiralo 1 korak, a da nisam ni znao koliko sam blizu EV13.
Zaključak: potrebna nam je neka vrsta analognog prikaza vrijednosti kako bismo barem vidjeli koliko je mjerač blizu ili udaljen od sljedećeg ili prethodnog koraka EV.
Nakon što sam pokušao koristiti ugrađena slova i font GFX knjižnice, odlučio sam koristiti dvije prilagođene grafike koje će se kretati po OLED zaslonu.
Jedan za vrijednosti otvora blende, jedan za vremena.
Knjižnica GFX koristi 8 -bitne vrijednosti za predstavljanje grafike, pa sam napravio xls list (vidi gornju sliku).
- svaka vrijednost ima potpuno isti broj piksela po vrijednosti
- vremena i otvori imaju potpuno istu vrijednost po retku
- Dodao sam potrebno "B" na početku svakog bajta i "," na kraju
- Zatim sam ga izvezao u običan tekst i voila: u prilogu sam dobio treću grafiku
Vrijednosti vremena počinju za 1/8 sekunde, a vrijednosti otvora blende počinju za f2,8
Koristeći tablicu pretraživanja u prethodnom koraku znamo da predstavlja 160 Lux ili EV6.
Najtamnije vrijednosti tada bi bile f22 i 1/500 dio sekunde
Ponovno putem tablice za pretraživanje možemo vidjeti da to znači 655360 Lux ili EV18
Zasada je dobro.
Dakle, na EV6 grafika otvora blende mora biti krajnje lijevo, vremena krajnje desno i obrnuto na EV18
Korak 3: Očitavanje i kompenzacija vrijednosti Lux | VEML7700
Prelistavajući tehnički list Vishay VEML7700 Adafruit koji koristi za svoju ploču, našao sam prilično uznemirujuću obavijest:
Senzor radi samo linearno između 0 i 1000Lux (!)
pogledajte snimak zaslona s narančastom (linearnom) linijom i plavom (stvarni izlaz senzora) linijom
Sunčeva svjetlost (EV15) iznosi oko 80.000 luksa, što znači da bi bez kompenzacije nelinearnog dijela senzora bilo potpuno beskorisno kao mjerač svjetla.
Vishay to zna, pa su svojim klijentima dali još jedan pdf pod nazivom Dizajniranje VEML7700 u aplikaciju.
U ovom pdf-u možete pronaći formulu za kompenzaciju nelinearnosti senzora:
LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX
Gdje je LUX_CORR ispravljena vrijednost Lux i LUX vrijednost koju senzor daje.
To su varijable koje sam koristio, različite su se koristile u njihovom listu.
Ono što me pomalo muči je to što Adafruit to ne spominje niti jednom riječju na svojoj stranici, svojoj dokumentaciji, svojoj biblioteci ili drugdje.
Tako sam se prvih nekoliko dana pitao zašto moj svjetlomjer daje maksimalno 20000 Lux čak i na izravnoj sunčevoj svjetlosti.
Ako pogledate grafikon s crvenom i plavom linijom, možete vidjeti zašto: jer ne može ići gore bez formule kompenzacije.
No, u dokumentaciji senzora skriven je još jedan savjet:
Ova formula kompenzacije funkcionira samo ako postavite senzor na 25 ms i omjer pojačanja 1/8.
To se prilično lako postiže pomoću biblioteke Adafruits dodavanjem:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
u postavkama void ()
Dakle, nakon što ga postavite na 1/8 i 25 ms i dodate kompenzacijsku formulu, možete izmjeriti do 120000 luksa, dovoljno da pokrije sunčevu svjetlost pri 80-100 000 luksa
Korak 4: Arduino / C-kod
Budući da ovisi o vašem zaslonu koji koristite i željenom kontroleru, neću previše ulaziti u detalje, samo nekoliko misli i savjeta za dodati, posebno kada koristite biblioteke Adafruit i OLED 128x32 px:
u postavci void:
postavio sam VEML library-part na:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (true);
u petlji void:
svakako dodajte nadoknadu:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
za dobivanje EV -ova od Lux -a koristite ovu liniju:
plutajući EV = log2 ((LUX_CORR/2,5));
pomicanje bitmapa
kako biste bili sigurni da se bitmape pomiču samo kada su vrijednosti između 160Lux i 655360Lux kako je navedeno u prethodnom koraku, zamotajte je u klauzulu if ovako:
ako (LUX_CORR> 159 && LUX_CORR <655361)
Zatim moramo preslikati vrijednosti EV u koordinate, budući da je raspon EV dvoznamenkast i želimo ih premjestiti s zaslona preko 128 piksela po cijelom zaslonu, trebaju nam veće vrijednosti.
Kako smo već dobili float broj, samo ga pomnožimo sa 100 i koristimo taj cijeli broj za preslikavanje koordinata
int EV_DSPL = EV*100;
i:
TIME = karta (EV_DSPL, 600, 1900, -260, 39); APERTURE = mapa (EV_DSPL, 600, 1900, 39, -260);
Kao što vidite u mom slučaju minimalna pozicija bitmape bila bi -260px, a maksimalna 39px
Ono što se također može vidjeti ovdje je da sam promijenio koordinate tako da se dvije bitmape kreću u suprotnom smjeru
Zatim moramo pomaknuti bitmape prema koordinatama na sljedeći način:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
I to je sve što treba učiniti
Kao bonus, prikazujem izravne vrijednosti EV i Lux kada senzor daje vrijednosti ispod 160Lux, samo zato što sam htio vidjeti stvari prilikom testiranja.
Korak 5: Sastavite to zajedno
Kako zaslon, tako i senzor koriste I2C za komunikaciju, izgradnja stvarnog hardvera je što je moguće jednostavnija.
Samo povežite podatkovne, uzemljene i 3 V vodove s Arduinom i spremni ste za rad.
Dodao sam grafiku kako sam to učinio s stripboardom, ali kao što je ranije rečeno možete koristiti kabele ili čak izgraditi krilo za to, sve ovisi koji kontroler i zaslon koristite.
Na mojoj slici, bijele točkice bi trebale biti spojene na zaslon i senzor, a žute točkice na Trinket.
Jedino izuzetak bio bi podatkovni pin I2C linije koji se povezuje s zaslonom, a taj pin također se povezuje s podatkovnim pinom Trinkets.
Odlučio sam ne koristiti prekidač za uključivanje/isključivanje, već umjesto toga pomoću gumba i dvije ćelije s 3 V gumba privremeno ga uključiti sve dok pritisnem gumb. Uključuje se za manje od 1/10 sekunde, tako da je dovoljno brzo da uštedim gumb i učinim ga manjim.
Preporučeni:
Diy makro objektiv s AF -om (različit od svih ostalih DIY makro objektiva): 4 koraka (sa slikama)
Diy makro objektivi s AF-om (različiti od svih ostalih DIY makro objektiva): Vidio sam mnogo ljudi koji rade makro objektive sa standardnim kit objektivom (obično 18-55 mm). Većina njih je leća koja se samo zalijepi na kameru unatrag ili se ukloni prednji element. Za obje ove opcije postoje nedostaci. Za montažu objektiva
DropArt - Precizni fotografski kolajder s dva ispuštanja: 11 koraka (sa slikama)
DropArt - Precizni fotografski sudarač s dvije kapi: Pozdrav svima, u ovom uputstvu predstavljam svoj dizajn za računarski upravljani sudarač s dvije kapljice tekućine. Prije nego počnemo s detaljima dizajna, mislim da ima smisla objasniti točno koja je svrha dizajna. Zabava, interesi
Vijak - DIY noćni sat za bežično punjenje (6 koraka): 6 koraka (sa slikama)
Vijak - Noćni sat za bežično punjenje DIY (6 koraka): Induktivno punjenje (poznato i kao bežično punjenje ili bežično punjenje) vrsta je bežičnog prijenosa energije. Koristi elektromagnetsku indukciju za opskrbu prijenosnih uređaja električnom energijom. Najčešća aplikacija je Qi bežično punjenje
Izgradite mini DIY hidroponski sustav i DIY hidroponski biljni vrt s WiFi upozorenjima: 18 koraka
Izgradite mini DIY hidroponski sustav i DIY hidroponski biljni vrt s WiFi upozorenjima: U ovom ćemo vam vodiču pokazati kako izgraditi #DIY #hidroponski sustav. Ovaj DIY hidroponski sustav zalijevat će po prilagođenom ciklusu navodnjavanja hidroponom s 2 minute uključene i 4 minute isključene. Također će pratiti razinu vode u rezervoaru. Ovaj sustav
Arduino DIY svjetlomjer sa BH1750 senzorom: 6 koraka (sa slikama)
Arduino DIY svjetlomjer sa BH1750 senzorom: U ovom uputstvu pokazat ću vam kako izgraditi svjetlomjer s velikim Nokia 5110 LCD zaslonom pomoću Arduina. Izgradnja svjetlomjera odlično je iskustvo za učenje. Kad završite s izgradnjom ovog projekta, bolje ćete razumjeti