Sadržaj:
- Korak 1: Osnovni proračuni | Lux do EV
- Korak 2: Predstavljanje vrijednosti na ekranu | Adafruit GFX biblioteka
- 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 izmjena: 2024-01-30 08:05
Ovaj Instructable dijeli neke ideje o izgradnji jednostavnog malog i jeftinog svjetlosnog mjerača.
Kako mi Instructables ne dopuštaju da umetnem vlastite videozapise, isprobajte ovu vezu:
www.youtube.com/embed/avQD10fd52s
Cilj mi je bio merač svetlosti da prati moju kameru Bronica ETRSi filma srednjeg formata.
Stvari koje sam želio da to 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 funkcija, osim običnih 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)
- OLED ekran 128x32 (oko 10 USD)
- dugme za privremeno uključivanje (nekoliko centi)
- mali komad strip-ploče, jer pokušavam ne koristiti kabele, ali svakako možete koristiti i kabele
Korak 1: Osnovni proračuni | Lux do EV
Senzor koji sam kupio koristi dvije značajke koje mi omogućuju da odlučim o njemu:
- daje vrijednosti 16bit luksa umjesto "bez dimenzija" svjetlosnih vrijednosti
- daje vrijednosti preko 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 da dobijete EV iz vrijednosti Lux koje je dao 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 proračun koji je potrebno izvršiti kako bi se iz svjetlomjera izvukle fotografske vrijednosti.
U priloženoj tabeli za pretraživanje možete vidjeti sve vrijednosti koje će se koristiti u ovom svjetlomjeru, zajedno sa odgovarajućim vrijednostima Lux i EV.
Korak 2: Predstavljanje vrijednosti na ekranu | Adafruit GFX biblioteka
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 točno EV 13 pa bih, na primjer, mogao 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
Zato 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 biblioteke, odlučio sam koristiti dvije prilagođene grafike koje će se kretati po OLED ekranu.
Jedan za vrijednosti otvora blende, jedan za vremena.
GFX biblioteka koristi 8 -bitne vrijednosti za predstavljanje grafike, pa sam napravio xls list (vidi sliku iznad).
- svaka vrijednost ima potpuno isti broj piksela po vrijednosti
- vremena i otvori imaju potpuno istu količinu vrijednosti po redu
- Dodao sam potrebno "B" na početku svakog bajta i "," na kraju
- Zatim sam ga izvezao u običan tekst i voila: dobio sam treću grafiku u prilogu
Vrijednosti vremena počinju za 1/8 sekunde, a vrijednosti otvora blende počinju za f2,8
Koristeći tablicu pretraživanja iz prethodnog koraka znamo da predstavlja 160 Lux ili EV6.
Najtamnije vrijednosti tada bi bile f22 i 1/500 dio sekunde
Opet putem tabele 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 tablični list Vishay VEML7700 Adafruit koji koristi za svoju ploču, našao sam prilično uznemirujuće upozorenje:
Senzor radi samo linearno između 0 i 1000Lux (!)
pogledajte snimak ekrana sa narandž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č svjetlosti.
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 direktnoj 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 Adafruits biblioteke dodavanjem:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
u vašoj postavci void ()
Dakle, nakon što ga postavite na 1/8 i 25 ms i dodate kompenzacijsku formulu, možete izmjeriti do 120000 luksa, što je dovoljno za pokrivanje sunčeve svjetlosti pri 80-100.000 luksa
Korak 4: Arduino / C-kod
Kako ovisi o vašem ekranu koji koristite i preferiranom 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 dio VEML biblioteke na:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (true);
u petlji void:
obavezno dodajte kompenzaciju:
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));
pomeranje bitmapa
da biste bili sigurni da se bitmape pomiču samo kada su vrijednosti između 160Lux i 655360Lux kako je navedeno u prethodnom koraku, umotajte je u klauzulu if ovako:
ako (LUX_CORR> 159 && LUX_CORR <655361)
Zatim moramo preslikati vrijednosti EV u koordinate, jer je raspon EV dvocifren i želimo ih premjestiti s ekrana preko 128 piksela po cijelom ekranu, potrebne su nam veće vrijednosti.
Kako već imamo 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
Ovdje se može vidjeti i to 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 prave EV i Lux vrijednosti kada senzor daje vrijednosti ispod 160Lux, samo zato što sam htio vidjeti stvari prilikom testiranja.
Korak 5: Sastavite to zajedno
Kako i zaslon 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 sa stripboardom, ali kao što je ranije rečeno možete koristiti kabele ili čak izgraditi krilo za to, sve ovisi koji kontroler i ekran koristite.
Na mojoj slici, bijele tačke bi trebale biti povezane s ekranom i senzorom, a žute tačke sa Trinket.
Jedino izuzetak bio bi pin za podatke I2C linije koji se povezuje s ekranom, a taj pin se povezuje i s podatkovnim pinom Trinkets.
Odlučio sam da ne koristim prekidač za uključivanje/isključivanje, već da umjesto toga koristim dugme i dvije ćelije sa 3 V dugmeta za privremeno uključivanje dok god pritisnem dugme. Uključuje se za manje od 1/10 sekunde, tako da je dovoljno brzo da uštedim dugme i smanjim ga.
Preporučuje se:
Diy makro objektiv sa AF -om (različit od svih ostalih DIY makro objektiva): 4 koraka (sa slikama)
Diy makro objektiv sa AF-om (različit od svih ostalih DIY makro objektiva): Vidio sam mnogo ljudi koji rade makro sočiva sa standardnim kit objektivom (obično 18-55 mm). Većina njih je objektiv koji 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č sa dvije kapi: Pozdrav svima, u ovom uputstvu predstavljam svoj dizajn za računarski upravljani sudarač sa dvije kapljice tekućine. Prije nego počnemo s detaljima dizajna, mislim da ima smisla objasniti tačno koja je svrha dizajna. Zabava, interesi
Vijak - Noćni sat za bežično punjenje DIY (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) je vrsta 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
Arduino DIY svjetlomjer sa BH1750 senzorom: 6 koraka (sa slikama)
Arduino DIY svjetlomjer sa BH1750 senzorom: U ovom uputstvu ću vam pokazati kako izgraditi svjetlomjer s velikim Nokia 5110 LCD ekranom pomoću Arduina. Izgradnja svjetlomjera je odlično iskustvo učenja. Kad završite s izgradnjom ovog projekta, bolje ćete razumjeti
Broj koraka / koraka: 3 koraka
পেনড্রাইভ / মেমোরি কার্ডে ভাইরাসের ভাইরাসের হারিয়ে সমাধান সমাধান সমাধান সমাধান সমাধান পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ পেনড্রাইভ মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি মেমোরি এখন এখন এখন।।।।।। Zaštita podataka, pristup prečicama / virusima