Satura rādītājs:

DIY fotografēšanas gaismas mērītājs: 5 soļi
DIY fotografēšanas gaismas mērītājs: 5 soļi

Video: DIY fotografēšanas gaismas mērītājs: 5 soļi

Video: DIY fotografēšanas gaismas mērītājs: 5 soļi
Video: ПОЧЕМУ НА САМОМ ДЕЛЕ ГИБНУТ ОРХИДЕИ? ДЕЛАЮ ВСЁ НЕ ПО ПРАВИЛАМ И ПОКАЗЫВАЮ РЕЗУЛЬТАТ! АДАПТАЦИЯ 100%! 2024, Novembris
Anonim
DIY fotogrāfiskais gaismas mērītājs
DIY fotogrāfiskais gaismas mērītājs
DIY fotogrāfiskais gaismas mērītājs
DIY fotogrāfiskais gaismas mērītājs

Šajā instrukcijā ir dažas idejas, kā izveidot vienkāršu mazu un lētu krītošo gaismas mērītāju.

Tā kā Instructables neļauj man ievietot savus videoklipus, izmēģiniet šo saiti:

www.youtube.com/embed/avQD10fd52s

Mērķis man bija gaismas mērītājs, lai pavadītu manu Bronica ETRSi vidēja formāta filmu kameru.

Lietas, kuras es vēlējos, lai tajā tiktu parādīts:

  • viena ASA (100), jo es gandrīz izmantoju tikai ASA 100 plēvi
  • pēc iespējas mazāks
  • dodiet man tikai kombinācijas, kuras var reproducēt mana Bronica, kas nozīmē f2.8-f22 un 1s līdz 1/500 sek.
  • nav muļķīgu funkciju, izņemot vienkāršus laikus un diafragmas vērtības

Lietas, ko izmantoju:

  • Adafruit (Vishay) VEML 7700 digitālais Lux-metrs (aptuveni 5 ASV dolāri)
  • Adafruit Trinket M0 mikrokontrolleris (aptuveni 9 USD)
  • 128x32 OLED displejs (aptuveni 10 USD)
  • spiedpoga, lai to īslaicīgi ieslēgtu (daži centi)
  • niecīgs sloksnes plāksnes gabals, jo es cenšos neizmantot kabeļus, bet jūs noteikti varat izmantot arī kabeļus

1. darbība: pamata aprēķini | No luksusa līdz EV

Pamata aprēķini | No luksusa līdz EV
Pamata aprēķini | No luksusa līdz EV
Pamata aprēķini | No luksusa līdz EV
Pamata aprēķini | No luksusa līdz EV

Iegādātais sensors izmanto divas funkcijas, kas ļauj man izlemt par to:

  • izvada 16 bitu luksa vērtības, nevis gaismas dimensijas
  • izvada vērtības, izmantojot I2C

Fotogrāfijas gaismas mērītājs izmanto ekspozīcijas vērtības (EV), ko es nopirku, izmantojot Lux vērtības, kas ir pilnīgi atšķirīga skala. Tātad pirmais solis ir iegūt EV no Lux vērtībām, ja ir sensors.

Īss ieskats wikipēdijā, un jūs varat atrast formulu incidentu mērīšanai un pārveidot EV uz Lux:

E = 2,5 * 2^EV

kur E tiek mērīts luksos.

Tā kā mēs jau saņēmām Lux vērtību no sensora un vēlamies EV vērtību, mums ir jāpārveido formula, kas ļauj mums:

EV = log2 (E/2,5)

Tātad tas ir pirmais aprēķins, kas jāveic, lai no gaismas mērītāja iegūtu fotogrāfiskas vērtības.

Pievienotajā uzmeklēšanas tabulā varat redzēt visas vērtības, kas tiks izmantotas šajā gaismas mērītājā, kopā ar atbilstošajām Lux un EV vērtībām.

2. darbība. Vērtību parādīšana displejā | Adafruit GFX bibliotēka

Vērtību parādīšana displejā | Adafruit GFX bibliotēka
Vērtību parādīšana displejā | Adafruit GFX bibliotēka
Vērtību parādīšana displejā | Adafruit GFX bibliotēka
Vērtību parādīšana displejā | Adafruit GFX bibliotēka
Vērtību parādīšana displejā | Adafruit GFX bibliotēka
Vērtību parādīšana displejā | Adafruit GFX bibliotēka

Vispirms es centos parādīt vērtības veselos soļos, jo tas ir tas, uz ko es varu iestatīt savu Bronica, bet tas noved pie problēmas:

Pieņemsim, ka Lux sensors izvada vērtību tieši 20480, kas nozīmētu, ka tā ir tieši EV 13, lai es, piemēram, varētu iestatīt kameru uz f4 un 1/500 sekundes, un būtu labi iet

Tālāk pieņemsim, ka Lux sensors izvadīs 20479 Lux, 1 Lux zem EV13, kas radītu EV vērtību 12, bet tas ir tikai Lux attālumā no EV13

Tāpēc es iestatītu savu kameru uz f2.8 un 1/500 sekundes, kas pārspīlētu vienu pieturu, man pat nezinot, cik tuvu esmu EV13.

Secinājums: mums ir nepieciešams sava veida vērtību displejs, lai vismaz redzētu, cik tuvu vai tālu skaitītājs atrodas no nākamā vai iepriekšējā EV soļa.

Mēģinot izmantot GFX bibliotēkas iebūvētos burtus un fontu, es nolēmu izmantot divas pielāgotas grafikas, kas pārvietosies pa OLED ekrānu.

Viens par diafragmas vērtībām, viens par laiku.

GFX bibliotēka grafikas attēlošanai izmanto 8 bitu vērtības, tāpēc es izveidoju xls lapu (skatiet attēlu iepriekš).

  • katrai vērtībai ir tieši tāds pats pikseļu skaits uz vērtību
  • laikiem un atverēm vienā rindā ir tieši tāds pats vērtību skaits
  • Katra baita sākumā es pievienoju vajadzīgo "B" un beigās ""
  • Pēc tam es to eksportēju uz vienkāršu tekstu un voila: pievienoju trešo grafiku

Laika vērtības sākas ar 1/8 sekundi, un diafragmas atvēruma vērtības sākas ar f2.8

Izmantojot iepriekšējā soļa uzmeklēšanas tabulu, mēs zinām, ka tas nozīmē 160 Lux vai EV6.

Tumšākās vērtības būtu f22 un 1/500 sekundes daļa

Atkal, izmantojot uzmeklēšanas tabulu, mēs varam redzēt, ka tas nozīmē 655360 Lux vai EV18

Tik tālu, labi.

Tātad EV6 diafragmas grafikai jābūt kreisajā malā, laikiem - labajā pusē un otrādi - EV18

3. solis: Lux vērtību lasīšana un kompensēšana | VEML7700

Lux vērtību lasīšana un kompensēšana | VEML7700
Lux vērtību lasīšana un kompensēšana | VEML7700
Lux vērtību lasīšana un kompensēšana | VEML7700
Lux vērtību lasīšana un kompensēšana | VEML7700

Ritinot Vishay VEML7700 Adafruit datu lapai, ko izmanto savai dēlei, es atklāju diezgan satraucošu paziņojumu:

Sensors darbojas tikai lineāri no 0 līdz 1000Lux (!)

skatiet ekrānuzņēmumu ar oranžu (lineāru) līniju un zilu (faktiskā sensora izejas) līniju

Saules gaisma (EV15) ir aptuveni 80 000 luksu, kas nozīmē, ka bez kompensācijas par nelineāro sensora daļu tas būtu pilnīgi bezjēdzīgi kā gaismas mērītājs.

Vishay to zina, tāpēc viņi saviem klientiem nodrošināja citu pdf failu ar nosaukumu VEML7700 izstrāde lietojumprogrammā.

Šajā pdf failā varat atrast formulu, lai kompensētu sensoru nelinearitāti:

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

Kur LUX_CORR ir labotā Lux vērtība un LUX ir vērtība, ko sensors izvada.

Tie ir mainīgie, kurus es izmantoju, savā lapā izmantoti dažādi.

Mani mazliet apgrūtina tas, ka Adafruit to nepiemin ar vienu vārdu savā lapā, dokumentācijā, bibliotēkā vai citur.

Tāpēc pirmajās dienās man radās jautājums, kāpēc mans gaismas mērītājs pat tiešos saules staros izvada maksimumu 20000 Lux.

Ja paskatāties uz grafiku ar sarkano un zilo līniju, jūs varat saprast, kāpēc: jo bez kompensācijas formulas tas nevar būt augstāks.

Bet sensora dokumentācijā ir paslēpts vēl viens mājiens:

Šī kompensācijas formula darbojas tikai tad, ja sensoru iestatāt uz 25 ms un pastiprinājuma koeficientu 1/8.

Ar Adafruits bibliotēku to var izdarīt diezgan viegli, pievienojot:

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

jūsu spēkā neesošajā iestatījumā ()

Tātad, iestatot to uz 1/8 un 25 ms un pievienojot kompensācijas formulu, jūs varat izmērīt līdz 120000 luksiem, kas ir pietiekami, lai aptvertu saules gaismu 80-100k Lux

4. darbība: Arduino / C kods

Tā kā tas ir atkarīgs no jūsu izmantotā displeja un vēlamā kontroliera, es pārāk neiedziļināšos detaļās, pievienoju tikai dažas domas un ieteikumus, it īpaši, ja izmantojat Adafruit bibliotēkas un 128 x 32 pikseļu OLED:

tukšuma iestatījumā:

Es iestatīju VEML bibliotēkas daļu uz:

veml.setGain (VEML7700_GAIN_1_8);

veml.setIntegrationTime (VEML7700_IT_25MS);

veml.setLowThreshold (10000);

veml.setHighThreshold (20000);

veml.interruptEnable (true);

tukšuma cilpā:

noteikti pievienojiet kompensāciju:

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

lai iegūtu EV no Lux, izmantojiet šo līniju:

pludiņš EV = log2 ((LUX_CORR/2.5));

pārvietojot bitkartes

lai pārliecinātos, ka bitkartes pārvietojas tikai tad, ja vērtības ir no 160Lux līdz 655360Lux, kā norādīts iepriekšējā solī, ietiniet to šādā klauzulā:

ja (LUX_CORR> 159 && LUX_CORR <655361)

Tālāk mums ir jāsaskaņo EV vērtības ar koordinātām, jo EV diapazons ir divciparu skaitlis, un mēs vēlamies tos pārvietot no displeja vairāk nekā 128 pikseļi visā displejā, un mums ir vajadzīgas lielākas vērtības.

Tā kā mums jau ir peldošs skaitlis, mēs to reizinām ar 100 un izmantojam šo veselu skaitli, lai kartētu koordinātas

int EV_DSPL = EV*100;

un:

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

Kā redzat manā gadījumā, bitkartes minimālā pozīcija būtu -260 pikseļi, bet maksimālā -39 pikseļi

Šeit redzams arī tas, ka es pārslēdzu koordinātas tā, lai abas bitkartes pārvietotos pretējā virzienā

Tālāk mums jāpārvieto bitkartes saskaņā ar koordinātām:

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

Un tas ir viss, kas jādara

Kā bonuss es parādīšu taisnas EV un Lux vērtības, kad sensors izvada vērtības zem 160Lux, tikai tāpēc, ka es gribēju redzēt lietas, pārbaudot to.

5. solis: salieciet to kopā

Liekot to kopā
Liekot to kopā
Liekot to kopā
Liekot to kopā

Tā kā displejs un sensors saziņai izmanto I2C, faktiskās aparatūras izveidošana ir tik vienkārša, cik vien iespējams.

Vienkārši savienojiet datus, pulksteņa zemi un 3 V līnijas ar Arduino, un jūs esat gatavs doties.

Es pievienoju grafiku, kā es to darīju ar sloksnes dēli, bet, kā jau tika teikts iepriekš, varat izmantot kabeļus vai pat uzbūvēt tam spārnu, tas viss ir atkarīgs no tā, kuru kontrolieri un displeju izmantojat.

Manā grafikā baltie punkti ir jāpievieno displejam un sensoram, bet dzeltenie punkti - piekariņam.

Vienīgais izņēmums būtu I2C līnijas datu tapa, kas savienojas ar displeju, un šī tapa savienojas arī ar piekariņu datu tapu.

Es izvēlējos neizmantot ieslēgšanas/izslēgšanas slēdzi, bet gan izmantot spiedpogu un divas 3 V pogas šūnas, lai to īslaicīgi ieslēgtu, kamēr es nospiežu pogu. Tas tiek ieslēgts mazāk nekā 1/10 sekundē, tāpēc tas ir pietiekami ātri, lai es varētu rezervēt pogu un padarīt to mazāku.

Ieteicams: