Turinys:
- 1 žingsnis: pagrindiniai skaičiavimai | Nuo liukso iki EV
- 2 veiksmas: verčių pateikimas ekrane | „Adafruit GFX“biblioteka
- 3 žingsnis: „Lux“vertybių skaitymas ir kompensavimas | VEML7700
- 4 žingsnis: „Arduino“/ C kodas
- 5 žingsnis: sujungimas
Video: „Pasidaryk pats“fotografijos šviesos matuoklis: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Ši instrukcija dalijasi idėjomis, kaip sukurti paprastą mažą ir pigų kritimo šviesos matuoklį.
Kadangi „Instructables“neleidžia įterpti savo vaizdo įrašų, pabandykite šią nuorodą:
www.youtube.com/embed/avQD10fd52s
Mano tikslas buvo šviesos matuoklis, lydintis mano Bronica ETRSi vidutinio formato filmavimo kamerą.
Dalykai, kuriuos norėjau parodyti:
- vieną ASA (100), nes beveik naudoju tik ASA 100 plėvelę
- kuo mažesnis
- duok man tik kombinacijas, kurias mano Bronica gali atkurti, o tai reiškia f2.8-f22 ir 1 sek. iki 1/500 sek.
- jokių nesąmonių, išskyrus paprastą laiką ir diafragmos vertes
Dalykai, kuriuos naudojau:
- „Adafruit“(„Vishay“) „VEML 7700“skaitmeninis liukso matuoklis (apie 5 USD)
- „Adafruit Trinket M0“mikrovaldiklis (apie 9 USD)
- 128x32 OLED ekranas (apie 10 USD)
- mygtukas laikinai jį įjungti (keli centai)
- mažas juostelės plokštės gabalas, nes stengiuosi nenaudoti kabelių, bet jūs taip pat galite naudoti kabelius
1 žingsnis: pagrindiniai skaičiavimai | Nuo liukso iki EV
Pirktame jutiklyje naudojamos dvi funkcijos, leidžiančios man nuspręsti:
- išleidžia 16 bitų liukso reikšmes, o ne „be matmenų“šviesos reikšmes
- išleidžia reikšmes per I2C
Fotografinis šviesos matuoklis naudoja ekspozicijos vertes (EV), mano įsigytas jutiklis naudoja liukso vertes, o tai yra visiškai skirtinga skalė. Taigi pirmas žingsnis yra gauti EV iš „Lux“verčių, jei yra jutiklis.
Greitas žvilgsnis į Vikipediją ir rasite incidentų matavimo formulę ir konvertuokite EV į liuksą:
E = 2,5 * 2^EV
kur E matuojamas liuksais.
Kadangi iš jutiklio jau gavome „Lux“vertę ir norime EV vertės, turime iš naujo suformuoti formulę, kuri leidžia mums:
EV = log2 (E/2,5)
Taigi tai yra pirmas skaičiavimas, kurį reikia atlikti norint išgauti fotografines vertes iš šviesos matuoklio.
Pridedamoje peržiūros lentelėje galite pamatyti visas reikšmes, kurios bus naudojamos šiame šviesos matuoklyje, kartu su atitinkamomis „Lux“ir „EV“reikšmėmis.
2 veiksmas: verčių pateikimas ekrane | „Adafruit GFX“biblioteka
Pirmiausia bandžiau visas vertes pateikti vertybėmis, nes būtent tai galiu nustatyti savo „Bronica“, tačiau tai mane veda prie problemos:
Tarkime, kad „Lux“jutiklis išleidžia tiksliai 20480 reikšmę, o tai reikštų, kad jis yra tiksliai EV 13, todėl galėčiau, pavyzdžiui, nustatyti fotoaparatą į f4 ir 1/500 sekundės ir būtų gerai eiti
Toliau tarkime, kad „Lux“jutiklis išvestų 20479 liuksus, 1 liuksą pagal EV13, o tai reikštų 12 EV vertę, tačiau jis yra tik liukso atstumu nuo EV13
Taigi aš nustatyčiau savo fotoaparatą f2.8 ir 1/500 sekundės, o tai per daug ekspozicijos, 1 man sustojus, net man nežinant, kaip arti buvau EV13.
Išvada: mums reikia tam tikro analoginio verčių rodymo, kad bent pamatytume, kaip arti ar toli skaitiklis yra nuo kito ar ankstesnio EV žingsnio.
Pabandęs naudoti integruotas GFX bibliotekos raides ir šriftą, nusprendžiau naudoti dvi pasirinktines grafikas, kurios judės per OLED ekraną.
Vienas - diafragmos reikšmėms, kitas - laikui.
GFX biblioteka naudoja 8 bitų reikšmes grafikai pateikti, todėl sukūriau xls lapą (žr. Paveikslėlį aukščiau).
- kiekviena vertė turi tą patį taškų kiekį vienoje vertėje
- laikai ir diafragmos turi lygiai tokį patį reikšmių skaičių eilutėje
- Kiekvieno baito pradžioje pridėjau būtiną „B“, o pabaigoje - „“
- Tada eksportavau jį į paprastą tekstą ir voila: pridėjau trečią grafiką
Laiko vertės prasideda 1/8 sekundės, o diafragmos reikšmės prasideda f2.8
Naudodami ankstesnio veiksmo peržiūros lentelę žinome, kad tai reiškia 160 liuksų arba EV6.
Tamsiausios vertės būtų f22 ir 1/500 sekundės
Vėlgi per paieškos lentelę matome, kad tai reiškia 655360 Lux arba EV18
Kol kas viskas gerai.
Taigi EV6 diafragmos grafika turi būti kairėje, laikas - dešinėje ir atvirkščiai - EV18
3 žingsnis: „Lux“vertybių skaitymas ir kompensavimas | VEML7700
Slinkdamas „Vishay VEML7700 Adafruit“lentelėje naudojamų duomenų lapą, radau gana nerimą keliantį pranešimą:
Jutiklis veikia tik tiesiškai nuo 0 iki 1000Lux (!)
žiūrėkite ekrano kopiją su oranžine (linijine) linija ir mėlyna (faktinė jutiklio išvesties) linija
Saulės šviesa (EV15) yra apie 80 000 liuksų, o tai reiškia, kad kompensuojant nelinijinę jutiklio dalį ji būtų visiškai nenaudinga kaip šviesos matuoklis.
„Vishay“tai žino, todėl jie savo klientams pateikė kitą pdf, pavadintą „VEML7700 projektavimas programoje“.
Šiame pdf galite rasti formulę, kaip kompensuoti jutiklių netiesiškumą:
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 yra pataisyta „Lux“vertė, o „LUX“yra jutiklio išvesties vertė.
Tai yra kintamieji, kuriuos naudoju, skirtingi jų lape.
Mane šiek tiek trikdo tai, kad „Adafruit“to nepamena vienu žodžiu savo puslapyje, dokumentuose, bibliotekoje ar kitur.
Taigi pirmomis dienomis man buvo įdomu, kodėl mano šviesos matuoklis, net esant tiesioginiams saulės spinduliams, išleidžia tik maksimalų 20000 liuksų.
Jei pažvelgsite į grafiką su raudona ir mėlyna linija, pamatysite, kodėl: nes jis negali pakilti aukščiau be kompensavimo formulės.
Tačiau jutiklio dokumentuose yra dar viena užuomina:
Ši kompensavimo formulė veikia tik tada, jei jutiklį nustatote į 25 ms, o padidinimo koeficientą - 1/8.
Tai gana lengva padaryti naudojant „Adafruits“biblioteką, pridėjus:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
tuštumos sąrankoje ()
Taigi nustačius 1/8 ir 25 ms ir pridėjus kompensavimo formulę, galite išmatuoti iki 120000 liuksų, pakankamai, kad padengtų saulės šviesą esant 80-100k liuksui
4 žingsnis: „Arduino“/ C kodas
Kadangi tai priklauso nuo jūsų naudojamo ekrano ir pageidaujamo valdiklio, aš per daug nesileisiu į detales, pridėsiu tik keletą minčių ir patarimų, ypač kai naudojate „Adafruit“bibliotekas ir 128 x 32 pikselių OLED:
tuštumos sąrankoje:
Aš nustatiau VEML bibliotekos dalį:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (tiesa);
tuštumos kilpoje:
būtinai pridėkite kompensaciją:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
Norėdami gauti EV iš „Lux“, naudokite šią eilutę:
plūdė EV = log2 ((LUX_CORR/2.5));
perkeliant bitų žemėlapius
norėdami įsitikinti, kad bitų žemėlapiai juda tik tada, kai vertės yra tarp 160Lux ir 655360Lux, kaip nurodyta ankstesniame žingsnyje, apvyniokite jį tokia sąlyga, jei:
jei (LUX_CORR> 159 && LUX_CORR <655361)
Toliau turime susieti EV reikšmes su koordinatėmis, nes EV diapazonas yra dviženklis ir mes norime perkelti juos iš ekrano daugiau nei 128 pikselių per visą ekraną, mums reikia didesnių verčių.
Kadangi jau gavome plūdės skaičių, mes tiesiog padauginame jį iš 100 ir naudojame tą sveikąjį skaičių koordinačių atvaizdavimui
int EV_DSPL = EV*100;
ir:
LAIKAS = žemėlapis (EV_DSPL, 600, 1900, -260, 39); APERTURE = žemėlapis (EV_DSPL, 600, 1900, 39, -260);
Kaip matote mano atveju, mažiausia bitų žemėlapio padėtis būtų -260 pikselių, o didžiausia -39 taškų
Čia taip pat galima pamatyti tai, kad aš pakeičiau koordinates taip, kad abi bitų schemos judėtų priešinga kryptimi
Toliau turime perkelti bitų žemėlapius pagal koordinates:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
Ir tai viskas, ką reikia padaryti
Kaip premiją aš rodau tiesiogines EV ir liukso reikšmes, kai jutiklis pateikia reikšmes, mažesnes nei 160Lux, tik todėl, kad norėjau pamatyti dalykus, kai jį bandau.
5 žingsnis: sujungimas
Kadangi tiek ekranas, tiek jutiklis naudoja I2C bendravimui, tikrosios aparatūros kūrimas yra toks paprastas, koks tik gali būti.
Tiesiog prijunkite duomenis, laikrodį ir 3 V linijas prie „Arduino“ir būsite pasiruošę eiti.
Pridėjau grafiką, kaip tai padariau su striptizo plokšte, tačiau, kaip minėta anksčiau, galite naudoti kabelius ar net pastatyti sparną, viskas priklauso nuo to, kurį valdiklį ir ekraną naudojate.
Mano grafikoje balti taškai turėtų būti prijungti prie ekrano ir jutiklio, o geltoni taškai - prie „Trinket“.
Vienintelė išimtis būtų I2C linijos duomenų kaištis, jungiantis prie ekrano, tas kaištis taip pat jungiasi prie „Trinkets“duomenų kaiščio.
Aš nusprendžiau nenaudoti įjungimo/išjungimo jungiklio, bet naudoju mygtuką ir du 3V mygtuko elementus, kad laikinai įjungčiau, kol paspausiu mygtuką. Jis įsijungia per mažiau nei 1/10 sekundės, todėl man tai pakankamai greitai, kad nepagailėčiau mygtuko ir jį sumažinčiau.
Rekomenduojamas:
Nuostabus „pasidaryk pats“saulės šviesos lauko šviesos diodų lempa: 9 žingsniai
Nuostabus „pasidaryk pats“saulės šviesos lauko šviesos diodų lempa: Sveiki! Šioje instrukcijoje galite sužinoti, kaip sukurti pigią ir lengvą saulės energija varomą LED lempą! Dienos metu įkraunama baterija, o naktį užsidega labai ryškus COB šviesos diodas! Tiesiog atlikite veiksmus! Tu gali tai padaryti! Tai tikrai lengva ir smagu
„Pasidaryk pats“fotografijos slankiklis: 4 žingsniai
„Pasidaryk pats“fotografijos slankiklis: sveiki visi! tai yra mano „pasidaryk pats“fotoaparato slankiklio projektas, man buvo sunku su manimi, bet esu tikras, kad jei daugiau dėmesio skirsite detalėms, tai veiks! teoriškai tai turėtų visiškai veikti, jei nuspręsite tai padaryti, tikiuosi, kad jums patiks tai
„Pasidaryk pats“-grindų ventiliatoriaus perdirbimas į fotografijos šviesos modifikatorių/„viskas viename“lempą: 11 žingsnių
„Pasidaryk pats“-grindų ventiliatoriaus perdirbimas į fotografijos šviesos modifikatorių/„viskas viename“lempą: Taigi aš neseniai pavasarį valau ir susidūriau su grindų ventiliatoriumi, kurio variklis buvo perdegęs. Ir man reikėjo stalo lempos. 2+2 ir aš šiek tiek apmąstėme ir sugalvojau ventiliatorių paversti 20 colių pločio šviesos modifikatoriumi. Skaitykite toliau
„Arduino“pasidaryk pats šviesos matuoklis su BH1750 jutikliu: 6 žingsniai (su nuotraukomis)
„Arduino“„pasidaryk pats“šviesos matuoklis su BH1750 jutikliu: šioje instrukcijoje parodysiu, kaip sukurti šviesos matuoklį su dideliu „Nokia 5110“LCD ekranu naudojant „Arduino“. Šviesos matuoklio kūrimas yra puiki mokymosi patirtis. Kai baigsite kurti šį projektą, geriau suprasite
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: 5 žingsniai (su paveikslėliais)
KAIP PADARYTI IR IR IR ŠVIESOS ŠVIESOS ŠVIESOS KAMERĄ: Supratau infraraudonųjų spindulių kamerą, kad galėčiau ją naudoti judesio fiksavimo sistemoje. Su juo taip pat galite gauti tokių nuostabių vaizdų: blizgių objektų, matomų fotoaparate, kurie yra normalūs realybėje. Už pigią kainą galite gauti gana gerų rezultatų. Jis