Obsah:

Fotografický světelný měřič DIY: 5 kroků
Fotografický světelný měřič DIY: 5 kroků

Video: Fotografický světelný měřič DIY: 5 kroků

Video: Fotografický světelný měřič DIY: 5 kroků
Video: První foto ateliér? Co potřebujete vědět a udělat | administrativa | vybavení fotoateliéru 2024, Listopad
Anonim
DIY fotografický světelný měřič
DIY fotografický světelný měřič
DIY fotografický světelný měřič
DIY fotografický světelný měřič

Tento Instructable sdílí několik nápadů na stavbu jednoduchého malého a levného měřiče dopadajícího světla.

Protože Instructables mi nedovolí vkládat vlastní videa, zkuste tento odkaz:

www.youtube.com/embed/avQD10fd52s

Cílem pro mě byl světelný metr doprovázející mou středoformátovou filmovou kameru Bronica ETRSi.

Věci, které jsem chtěl, aby to představovalo:

  • single ASA (100), protože téměř výhradně používám film ASA 100
  • co nejmenší
  • dávejte mi pouze kombinace, které dokáže moje Bronica reprodukovat, což znamená f2,8-f22 a 1 s až 1/500 s
  • žádné nesmyslné funkce, kromě obyčejných časů a hodnot clony

Věci, které jsem použil:

  • Adafruit (Vishay) VEML 7700 digitální Lux-metr (kolem 5 $)
  • Mikroprocesor Adafruit Trinket M0 (přibližně 9 $)
  • 128x32 OLED displej (přibližně 10 $)
  • tlačítko pro dočasné zapnutí (některé centy)
  • malý kousek páskové desky, protože se snažím nepoužívat kabely, ale určitě můžete použít i kabely

Krok 1: Základní výpočty | Lux až EV

Základní výpočty | Lux až EV
Základní výpočty | Lux až EV
Základní výpočty | Lux až EV
Základní výpočty | Lux až EV

Senzor, který jsem koupil, používá dvě funkce, které mi umožňují rozhodnout se o něm:

  • místo hodnot světla „bezrozměrných“vydává hodnoty 16bit Lux
  • odesílá hodnoty přes I2C

Měřič fotografického světla používá hodnoty expozice (EV), snímač, který jsem koupil, používá hodnoty Lux, což je úplně jiné měřítko. Prvním krokem je tedy získání EV z hodnot Lux za předpokladu senzoru.

Rychlý pohled na wikipedii a můžete najít vzorec pro měření incidentů a převod EV na Lux:

E = 2,5 * 2^EV

kde E se měří v Lux.

Protože jsme již dostali hodnotu Lux ze snímače a chceme hodnotu EV, musíme znovu vytvořit vzorec, který nás dostane:

EV = log2 (E/2,5)

Toto je první výpočet, který je třeba provést, aby se z měřiče světla dostaly fotografické hodnoty.

V přiložené vyhledávací tabulce vidíte všechny hodnoty, které budou použity v tomto světelném měřiči, společně s příslušnými hodnotami Lux a EV.

Krok 2: Prezentace hodnot na displeji | Knihovna Adafruit GFX

Prezentace hodnot na displeji | Knihovna Adafruit GFX
Prezentace hodnot na displeji | Knihovna Adafruit GFX
Prezentace hodnot na displeji | Knihovna Adafruit GFX
Prezentace hodnot na displeji | Knihovna Adafruit GFX
Prezentace hodnot na displeji | Knihovna Adafruit GFX
Prezentace hodnot na displeji | Knihovna Adafruit GFX

Nejprve jsem se pokusil prezentovat hodnoty v celých krocích, protože na to mohu nastavit Bronicu, ale to mě vedlo k problému:

Předpokládejme, že snímač Lux vydává hodnotu přesně 20480, což by znamenalo jeho přesně EV 13, takže bych mohl například nastavit svůj fotoaparát na f4 a 1/500 sekundy a bylo by dobré jít

Dále předpokládejme, že snímač Lux bude produkovat 20479 Lux, 1 Lux pod EV13, což by mělo hodnotu EV 12, ale je to jen Lux daleko od EV13

Fotoaparát bych tedy nastavil na f2,8 a 1/500 sekundy, což by přeexponovalo 1 zastávku, aniž bych věděl, jak blízko jsem k EV13.

Závěr: potřebujeme nějaký druh analogového zobrazení hodnot, abychom alespoň viděli, jak blízko nebo daleko je měřič od dalšího nebo předchozího kroku EV.

Poté, co jsem se pokusil použít vestavěná písmena a písma knihovny GFX, rozhodl jsem se použít dvě vlastní grafiky, které se budou pohybovat po obrazovce OLED.

Jeden pro hodnoty clony, jeden pro časy.

Knihovna GFX používá k prezentaci grafiky 8bitové hodnoty, proto jsem vytvořil list xls (viz obrázek výše).

  • každá hodnota má přesně stejné množství pixelů na hodnotu
  • časy a clony mají přesně stejné množství hodnot na řádek
  • Přidal jsem potřebné „B“na začátek každého bajtu a „,“na konec
  • Potom jsem to exportoval do prostého textu a voila: připojil jsem třetí grafiku

Časové hodnoty začínají o 1/8 sekundy a hodnoty clony začínají na f2,8

Pomocí vyhledávací tabulky z předchozího kroku víme, že to představuje 160 Lux nebo EV6.

Nejtmavší hodnoty by pak byly f22 a 1/500 sekundy

Znovu prostřednictvím vyhledávací tabulky vidíme, že to znamená 655360 Lux nebo EV18

Zatím je vše dobré.

Na EV6 tedy musí být grafika clony zcela vlevo, časy zcela vpravo a naopak na EV18

Krok 3: Čtení a kompenzace hodnot Lux | VEML7700

Čtení a kompenzace hodnot Lux | VEML7700
Čtení a kompenzace hodnot Lux | VEML7700
Čtení a kompenzace hodnot Lux | VEML7700
Čtení a kompenzace hodnot Lux | VEML7700

Při procházení datasheetu Vishay VEML7700 Adafruit, který používá pro svou desku, jsem našel docela znepokojivé upozornění:

Senzor funguje pouze lineárně mezi 0 a 1000 Lux (!)

viz snímek obrazovky s oranžovou (lineární) čarou a modrou (skutečný výstup snímače) čárou

Sluneční světlo (EV15) se pohybuje kolem 80 000 Luxů, což znamená, že bez kompenzace nelineární části senzoru by bylo jako měřič světla zcela zbytečné.

Vishay to ví, a tak poskytli svým zákazníkům další pdf s názvem Designing the VEML7700 Into an Application.

V tomto pdf najdete vzorec pro kompenzaci nelinearity senzorů:

LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX

Kde LUX_CORR je opravená hodnota Lux a LUX je hodnota, kterou senzor vydává.

To jsou proměnné, které jsem použil, použité různé ve svém listu.

Trochu mi vadí, že to Adafruit nezmiňuje jediným slovem na své stránce, dokumentaci, knihovně nebo jinde.

Prvních pár dní jsem tedy přemýšlel, proč můj světelný přístroj vydává maximum pouze 20 000 Luxů, a to i na přímém slunci.

Když se podíváte na graf s červenou a modrou čarou, uvidíte proč: protože bez vzorce pro kompenzaci nemůže jít výše.

V dokumentaci senzoru se však skrývá ještě jeden náznak:

Tento kompenzační vzorec funguje pouze tehdy, když nastavíte snímač na 25 ms a poměr zisku 1/8.

To se s knihovnou Adafruits provádí docela snadno přidáním:

veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);

ve vašem neplatném nastavení ()

Takže po nastavení na 1/8 a 25 ms a přidání kompenzačního vzorce můžete změřit až 1 200 000 luxů, což je dost na pokrytí slunečního světla při 80 až 100 000 luxech

Krok 4: Arduino / C-kód

Vzhledem k tomu, že to závisí na vašem použitém displeji a preferovaném ovladači, nebudu se příliš rozepisovat, stačí přidat několik myšlenek a rad, zvláště při použití knihoven Adafruit a OLED 128x32 px:

v nastavení prázdnoty:

Nastavil jsem část knihovny VEML na:

veml.setGain (VEML7700_GAIN_1_8);

veml.setIntegrationTime (VEML7700_IT_25MS);

veml.setLowThreshold (10 000);

veml.setHighThreshold (20000);

veml.interruptEnable (true);

ve smyčce prázdnoty:

nezapomeňte přidat kompenzaci:

int LUX_CORR = 6,0135e-13*pow (LUX, 4) -9,3924e-9*pow (LUX, 3)+8,1488e-5*pow (LUX, 2)+1,0023*LUX;

Chcete -li získat EV z Luxu, použijte tento řádek:

float EV = log2 ((LUX_CORR/2.5));

přesouvání bitmap

Chcete -li zajistit, aby se bitmapy pohybovaly pouze tehdy, když jsou hodnoty mezi 160Lux a 655360Lux, jak bylo uvedeno v předchozím kroku, zabalte jej do klauzule if takto:

pokud (LUX_CORR> 159 && LUX_CORR <655361)

Dále musíme namapovat hodnoty EV na souřadnice, protože rozsah EV je dvouciferný a chceme je přesunout z displeje přes 128 pixelů na celý displej, potřebujeme větší hodnoty.

Protože jsme již dostali plovoucí číslo, vynásobíme je 100 a použijeme celé číslo k mapování souřadnic

int EV_DSPL = EV*100;

a:

TIME = mapa (EV_DSPL, 600, 1900, -260, 39); APERTURE = mapa (EV_DSPL, 600, 1900, 39, -260);

Jak vidíte v mém případě, minimální pozice bitmapy by byla -260 pixelů a maximum by bylo 39 pixelů

Zde je také vidět, že jsem změnil souřadnice tak, aby se obě bitmapy pohybovaly v opačném směru

Dále musíme přesunout bitmapy podle souřadnic podle:

display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);

A to je vše, co je třeba udělat

Jako bonus zobrazuji přímé hodnoty EV a Lux, když snímač vydává hodnoty pod 160 Lux, jen proto, že jsem chtěl při testování vidět věci.

Krok 5: Dát to dohromady

Dát to dohromady
Dát to dohromady
Dát to dohromady
Dát to dohromady

Protože displej i senzor používají ke komunikaci I2C, je sestavení skutečného hardwaru tak jednoduché, jak jen může být.

Stačí propojit datové, hodinové a 3V linky s Arduinem a můžete vyrazit.

Přidal jsem grafiku, jak jsem to udělal se stripboardem, ale jak již bylo řečeno, můžete k tomu použít kabely nebo dokonce postavit křídlo, vše závisí na tom, jaký ovladač a displej použijete.

Na mé grafice mají být bílé tečky připojeny k displeji a senzoru a žluté tečky k Trinketu.

Jedinou výjimkou by byl datový pin linky I2C, který se připojuje k displeji, tento pin se také připojuje k datovému kolíku Trinkets.

Rozhodl jsem se nepoužívat vypínač/vypínač, ale místo toho použít tlačítko a dva 3V knoflíkové články k dočasnému zapnutí, dokud stisknu tlačítko. Zapne se za méně než 1/10 sekundy, takže je to dost rychlé na to, abych ušetřil tlačítko a zmenšil ho.

Doporučuje: