Sisukord:

DIY fotograafiline valgusmõõtur: 5 sammu
DIY fotograafiline valgusmõõtur: 5 sammu

Video: DIY fotograafiline valgusmõõtur: 5 sammu

Video: DIY fotograafiline valgusmõõtur: 5 sammu
Video: Zeiss Ikon Nettar Simplified 2024, November
Anonim
DIY fotograafiline valgusmõõtur
DIY fotograafiline valgusmõõtur
DIY fotograafiline valgusmõõtur
DIY fotograafiline valgusmõõtur

Selles juhendis jagatakse mõningaid ideid lihtsa väikese ja odava langeva valgusmõõturi ehitamiseks.

Kuna Instructables ei lase mul oma videoid sisestada, proovige seda linki:

www.youtube.com/embed/avQD10fd52s

Minu eesmärk oli valgusmõõtur, mis oli kaasas minu Bronica ETRSi keskmise formaadiga filmikaameraga.

Asjad, mida tahtsin, et see esile tooks:

  • üks ASA (100), sest ma kasutan peaaegu ainult ASA 100 filmi
  • nii väike kui võimalik
  • anna mulle ainult kombinatsioone, mida mu Bronica suudab reprodutseerida, mis tähendab f2.8-f22 ja 1s kuni 1/500 sek
  • mingeid mõttetuid funktsioone, välja arvatud tavalised ajad ja ava väärtused

Asjad, mida kasutasin:

  • Adafruit (Vishay) VEML 7700 digitaalne Lux-meeter (umbes 5 dollarit)
  • Adafruit Trinket M0 mikrokontroller (umbes 9 dollarit)
  • 128x32 OLED -ekraan (umbes 10 dollarit)
  • nupp selle ajutiseks sisselülitamiseks (mõni sent)
  • väike tükk ribaplaati, sest ma üritan kaableid mitte kasutada, kuid kindlasti saate ka kaableid kasutada

1. samm: põhiarvutused | Lux kuni EV

Põhiarvutused | Lux kuni EV
Põhiarvutused | Lux kuni EV
Põhiarvutused | Lux kuni EV
Põhiarvutused | Lux kuni EV

Ostetud andur kasutab kahte funktsiooni, mis võimaldavad mul selle üle otsustada:

  • väljastab "mõõtmeteta" valgusväärtuste asemel 16-bitise luksväärtuse
  • väljastab väärtused I2C kaudu

Fotograafiline valgusmõõtur kasutab säriväärtusi (EV), mida ostsin, kasutab Lux väärtusi, mis on täiesti erinev skaala. Nii et esimene samm on saada EV -d Luxi väärtustest, kui andur on olemas.

Kiire pilguheit Vikipeediasse ja leiate juhtumite mõõtmise valemi ning teisendage EV luksiks:

E = 2,5 * 2^EV

kus E on mõõdetud luksides.

Kuna me juba andurilt Lux väärtuse kätte saime ja soovime EV väärtust, peame valemi uuesti vormistama, mille abil saame:

EV = log2 (E/2,5)

Nii et see on esimene arvutus, mis tuleb teha, et saada valgusmõõturist fotograafilised väärtused.

Lisatud otsingutabelis näete kõiki selles valgusmõõtjas kasutatavaid väärtusi koos vastavate Lux ja EV väärtustega.

2. samm: väärtuste esitamine ekraanil | Adafruit GFX raamatukogu

Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu
Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu
Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu
Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu
Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu
Väärtuste esitamine ekraanil | Adafruit GFX raamatukogu

Esmalt proovisin väärtusi esitada sammude kaupa, sest see on see, mille abil saan oma Bronica seadistada, kuid see viib mind probleemini:

Oletame, et Lux -anduri väljundväärtus on täpselt 20480, mis tähendab, et see on täpselt EV 13, nii et ma saaksin näiteks oma kaamera f4 ja 1/500 sekundi sisse lülitada ja oleks hea minna

Järgmisena oletame, et Lux -andur väljastab 20479 Lux, 1 Lux EV13 all, mis annaks EV väärtuse 12, kuid see on vaid Luxi kaugusel EV13 -st

Nii et ma seadistaksin oma kaamera f2.8 ja 1/500 sekundile, mis eksponeeriks 1 peatuse üle, ilma et ma isegi teaksin, kui lähedal olin EV13 -le.

Järeldus: vajame mingisugust väärtuste analoogkuva, et vähemalt näha, kui lähedal või kaugel on arvesti järgmisest või eelmisest EV sammust.

Pärast GFX raamatukogu sisseehitatud tähtede ja fondi kasutamist otsustasin kasutada kahte kohandatud graafikat, mis liiguvad üle OLED -ekraani.

Üks ava väärtuste jaoks, teine ajastu jaoks.

GFX raamatukogu kasutab graafika esitamiseks 8 -bitiseid väärtusi, nii et tegin xls -lehe (vt ülaltoodud pilti).

  • igal väärtusel on täpselt sama palju piksleid väärtuse kohta
  • aegadel ja avadel on rea kohta täpselt sama palju väärtusi
  • Lisasin iga baidi algusesse vajaliku "B" ja lõppu ""
  • Seejärel eksportisin selle lihttekstiks ja voilaa: lisasin kolmanda graafika

Aja väärtused algavad 1/8 sekundist ja ava väärtused algavad f2.8

Kasutades eelmise sammu otsingutabelit, teame, et see tähistab 160 luksi või EV6.

Tumedamad väärtused oleksid siis f22 ja 1/500 sekundist

Otsingutabeli kaudu näeme jälle, et see tähendab 655360 Lux või EV18

Siiamaani on kõik korras.

Nii et EV6 puhul peab avagraafik olema vasakul, kellaajad paremal ja vastupidi EV18 puhul

3. samm: luksväärtuste lugemine ja kompenseerimine | VEML7700

Luksusväärtuste lugemine ja kompenseerimine | VEML7700
Luksusväärtuste lugemine ja kompenseerimine | VEML7700
Luksusväärtuste lugemine ja kompenseerimine | VEML7700
Luksusväärtuste lugemine ja kompenseerimine | VEML7700

Sirvides Vishay VEML7700 Adafruit'i plaadil kasutatava andmelehte, leidsin üsna häiriva teate:

Andur töötab ainult lineaarselt vahemikus 0 kuni 1000 Lux (!)

vaadake ekraanipilti oranži (lineaarse) joone ja sinise (tegeliku anduri väljundi) joonega

Päikesevalgus (EV15) on umbes 80 000 luksi, mis tähendab, et ilma anduri mittelineaarse osa kompenseerimiseta oleks see valgusmõõturina täiesti kasutu.

Vishay teab seda, nii et nad pakkusid oma klientidele teise pdf -i nimega VEML7700 projekteerimine rakendusse.

Sellest pdf-ist leiate valemi andurite mittelineaarsuse kompenseerimiseks:

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

Kus LUX_CORR on korrigeeritud Lux-väärtus ja LUX on väärtus, mille andur väljastab.

Need on muutujad, mida ma kasutasin, nende lehel kasutatud erinevad.

Mind häirib natuke see, et Adafruit ei maini seda ühe sõnaga oma lehel, dokumentatsioonis, raamatukogus ega mujal.

Nii et esimestel päevadel mõtlesin, miks mu valgusmõõtur väljastab isegi otsese päikesevalguse korral maksimaalselt 20000 Luxi.

Kui vaatate punase ja sinise joonega graafikut, näete, miks: sest ilma hüvitusvalemita ei saa see kõrgemale minna.

Kuid anduri dokumentatsioonis on veel üks vihje:

See kompensatsioonivalem töötab ainult siis, kui seadistate anduri väärtuseks 25 ms ja võimendussuhteks 1/8.

Adafruits raamatukoguga on seda üsna lihtne teha, lisades:

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

tühimikus ()

Nii et pärast 1/8 ja 25 ms seadistamist ja kompensatsioonivalemi lisamist saate mõõta kuni 120000 luksi, mis on piisav, et katta päikesevalgus 80-100k Lux

Samm: Arduino / C-kood

Kuna see sõltub teie kasutatavast kuvarist ja eelistatud kontrollerist, ei lähe ma detailidesse liiga palju, lisan vaid mõned mõtted ja näpunäited, eriti kui kasutate Adafruit raamatukogusid ja 128 x 32 pikslit OLED -i:

tühimike seadistuses:

määrasin VEML-i raamatukogu osa:

veml.setGain (VEML7700_GAIN_1_8);

veml.setIntegrationTime (VEML7700_IT_25MS);

veml.setLowThreshold (10000);

veml.setHighThreshold (20000);

veml.interruptEnable (true);

tühjusse:

lisage kindlasti hüvitis:

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

EV -de saamiseks Luxist kasutage seda rida:

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

bitikaartide liigutamine

veendumaks, et bitikaardid liiguvad ainult siis, kui väärtused on vahemikus 160Lux kuni 655360Lux, nagu eelmises etapis öeldud, mähkige see sellisesse klauslisse:

kui (LUX_CORR> 159 && LUX_CORR <655361)

Järgmisena peame kaardistama EV väärtused koordinaatidele, kuna EV vahemik on kahekohaline ja me tahame neid kuvarilt üle 128 piksli kogu kuvarilt välja viia, vajame suuremaid väärtusi.

Kuna meil on juba ujuvarv, korrutame selle lihtsalt 100 -ga ja kasutame seda täisarvu koordinaatide kaardistamiseks

int EV_DSPL = EV*100;

ja:

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

Nagu näete minu puhul, on bitikaardi minimaalne asukoht -260 pikslit ja maksimaalne 39 pikslit

Siin on näha ka seda, et vahetasin koordinaadid nii, et kaks bitikaarti liiguksid vastupidises suunas

Järgmisena peame teisaldama bitikaardid vastavalt koordinaatidele:

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

Ja see on kõik, mida tuleb teha

Boonusena kuvan sirged EV ja Lux väärtused, kui andur väljastab väärtused alla 160Lux, lihtsalt sellepärast, et tahtsin seda testides näha.

5. samm: pange see kokku

Selle kokku panemine
Selle kokku panemine
Selle kokku panemine
Selle kokku panemine

Kuna nii ekraan kui ka andur kasutavad suhtlemiseks I2C -d, on tegeliku riistvara loomine nii lihtne kui võimalik.

Lihtsalt ühendage andmed, kella maandus ja 3 V liinid Arduinoga ja olete valmis minema.

Lisasin graafika, kuidas ma striptiisiga seda tegin, kuid nagu varem öeldud, saate kasutada kaableid või isegi ehitada selle jaoks tiiba, kõik sõltub sellest, millist kontrollerit ja ekraani kasutate.

Minu graafika kohaselt peaksid valged punktid olema ühendatud ekraani ja anduriga ning kollased punktid nipsasjaga.

Ainsaks erandiks oleks ekraaniga ühendatava I2C liini andmetihvt, see nööpnõel ühendub ka nipsasja nööpnõelaga.

Otsustasin mitte kasutada sisse/välja lülitit, vaid selle asemel ajutiseks sisselülitamiseks vajutusnuppu ja kahte 3V nupuelementi, kuni ma nuppu vajutan. See käivitub vähem kui 1/10 sekundist, nii et see on piisavalt kiire, et saaksin nupu varuda ja selle väiksemaks muuta.

Soovitan: