Բովանդակություն:

DIY լուսանկարչական լուսաչափ ՝ 5 քայլ
DIY լուսանկարչական լուսաչափ ՝ 5 քայլ

Video: DIY լուսանկարչական լուսաչափ ՝ 5 քայլ

Video: DIY լուսանկարչական լուսաչափ ՝ 5 քայլ
Video: 5 Steps For Exposure Testing 2024, Հուլիսի
Anonim
DIY լուսանկարչական լուսաչափ
DIY լուսանկարչական լուսաչափ
DIY լուսանկարչական լուսաչափ
DIY լուսանկարչական լուսաչափ

Այս Instructable- ը կիսում է մի քանի գաղափար ՝ պարզ փոքր և էժան միջադեպի թեթևաչափ կառուցելու վերաբերյալ:

Քանի որ Instructables- ը թույլ չի տա տեղադրել իմ սեփական տեսանյութերը, փորձեք այս հղումը.

www.youtube.com/embed/avQD10fd52s

Ինձ համար նպատակն էր լուսաչափը ՝ ուղեկցել իմ միջին ձևաչափի Bronica ETRSi տեսախցիկին:

Այն, ինչ ես ուզում էի, որ այն ցուցադրվեր.

  • միայնակ ASA (100), քանի որ ես գրեթե օգտագործում եմ միայն ASA 100 ֆիլմը
  • հնարավորինս փոքր
  • տվեք ինձ միայն այն համադրությունները, որոնք կարող է վերարտադրել իմ Բրոնիկան, ինչը նշանակում է f2.8-f22 և 1 վրկ 1/500-րդ վրկ
  • ոչ անհեթեթ հատկություններ, բացառությամբ պարզ ժամանակների և բացվածքի արժեքների

Գործեր, որոնք ես օգտագործել եմ.

  • Adafruit (Vishay) VEML 7700 թվային լյուքս-մետր (մոտ 5 $)
  • Adafruit Trinket M0 միկրո վերահսկիչ (մոտ 9 դոլար)
  • 128x32 OLED էկրան (մոտ $ 10)
  • այն ժամանակավորապես միացնելու կոճակ (որոշ ցենտներ)
  • մի փոքր կտոր տախտակ, քանի որ ես փորձում եմ չօգտագործել մալուխներ, բայց դուք, անշուշտ, կարող եք նաև օգտագործել մալուխներ

Քայլ 1. Հիմնական հաշվարկներ | Lux դեպի EV

Հիմնական հաշվարկներ | Lux դեպի EV
Հիմնական հաշվարկներ | Lux դեպի EV
Հիմնական հաշվարկներ | Lux դեպի EV
Հիմնական հաշվարկներ | Lux դեպի EV

Գնված սենսորը օգտագործում է երկու հատկություն, որոնք թույլ են տալիս ինձ որոշել դրա մասին.

  • թողարկում է 16 բիթ լյուքս արժեքներ `« առանց չափի »լուսային արժեքների փոխարեն
  • դուրս է բերում արժեքները I2C- ի միջոցով

Լուսանկարչական լուսաչափը օգտագործում է Exposure Values (EV) ցուցիչը, որը ես գնել եմ, օգտագործում է Lux արժեքները, ինչը բոլորովին այլ սանդղակ է: Այսպիսով, առաջին քայլը սենսորով նախատեսված Lux արժեքներից էլեկտրամատակարարում ստանալն է:

Արագ հայացք wikipedia- ին, և դուք կարող եք գտնել միջադեպերի չափման բանաձև և EV- ը վերածել Lux- ի.

E = 2.5 * 2^EV

որտեղ E- ն չափվում է Լյուքսով:

Քանի որ մենք արդեն ստացել ենք Lux- ի արժեքը սենսորից և ցանկանում ենք EV արժեքը, մենք պետք է նորից ձևավորենք բանաձևը, որը մեզ ստիպում է.

EV = log2 (E/2.5)

Այսպիսով, դա առաջին հաշվարկն է, որը պետք է արվի լուսաչափից լուսանկարի արժեքները հանելու համար:

Կցված որոնման աղյուսակում կարող եք տեսնել բոլոր արժեքները, որոնք կօգտագործվեն այս լուսաչափի մեջ ՝ ըստ Lux- ի և EV- ի արժեքների:

Քայլ 2: Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան

Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան
Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան
Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան
Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան
Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան
Արժեքների ներկայացում էկրանին | Adafruit GFX գրադարան

Ես առաջին հերթին փորձեցի արժեքները ներկայացնել ամբողջական քայլերով, քանի որ դա այն է, ինչին կարող եմ դասավորել իմ Բրոնիկան, բայց դա ինձ տանում է դեպի մի խնդիր.

Ենթադրենք, Lux սենսորը թողարկում է ուղիղ 20480 արժեք, դա կնշանակի, որ այն հենց EV 13 -ն է, այնպես որ ես կարող էի, օրինակ, իմ տեսախցիկը դնել f4- ի և վայրկյանի 1/500 -ի վրա և լավ կլիներ գնալ:

Հաջորդը, ենթադրենք, որ Lux սենսորը թողարկելու է 20479 Lux, 1 Lux ՝ EV13- ով, որը թողարկելու է EV արժեքը 12, բայց դա EV13- ից ընդամենը մեկ Lux է:

Այսպիսով, ես տեսախցիկս կդնեի f2.8 և վայրկյանի 1/500 -րդ մասի վրա, ինչը կբարձրացներ 1 կանգառ ՝ առանց նույնիսկ իմանալու, թե որքան մոտ էի EV13- ին:

Եզրակացություն. Մեզ անհրաժեշտ է արժեքների մի տեսակ անալոգային ցուցադրում, որպեսզի գոնե տեսնենք, թե որքան մոտ կամ հեռու է հաշվիչը հաջորդ կամ նախորդ EV քայլից:

Փորձելով օգտագործել GFX գրադարանի ներկառուցված տառերն ու տառատեսակը, որոշեցի օգտագործել երկու սովորական գրաֆիկա, որոնք կշարժվեն OLED էկրանով:

Մեկը `բացվածքի արժեքների համար, մեկը` ժամանակների համար:

GFX գրադարանը օգտագործում է 8 բիթ արժեքներ գրաֆիկա ներկայացնելու համար, այնպես որ ես պատրաստել եմ xls թերթ (տե՛ս վերևի պատկերը):

  • յուրաքանչյուր արժեք ունի ճշգրիտ նույն քանակությամբ պիքսել մեկ արժեքի համար
  • ժամանակներն ու բացվածքներն ունեն ճիշտ նույն քանակի արժեքներ մեկ տողի համար
  • Յուրաքանչյուր բայտի սկզբում ավելացրի անհրաժեշտ «Բ» -ն և վերջում `« »
  • Այնուհետև ես այն արտահանում եմ պարզ տեքստի և վոյլայի. Ես կցեցի երրորդ գրաֆիկը

Timeամանակի արժեքները սկսվում են վայրկյանի 1/8 -ով, իսկ բացվածքի արժեքները `f2.8- ով:

Օգտագործելով նախորդ քայլի որոնման աղյուսակը, մենք գիտենք, որ դա ներկայացնում է 160 Lux կամ EV6:

Այդ դեպքում ամենամութ արժեքները կլինեն f22 և 1/500 -րդ վայրկյանը:

Կրկին որոնման աղյուսակի միջոցով մենք կարող ենք տեսնել, որ դա նշանակում է 655360 Lux կամ EV18

Առայժմ ամեն ինչ լավ է:

Այսպիսով, EV6- ում բացվածքի գրաֆիկը պետք է լինի ձախ կողմում, ծայրերը ՝ աջ և հակառակը ՝ EV18- ում

Քայլ 3. Լյուքս արժեքների ընթերցում և փոխհատուցում | VEML7700

Լյուքս արժեքների ընթերցում և փոխհատուցում | VEML7700
Լյուքս արժեքների ընթերցում և փոխհատուցում | VEML7700
Լյուքս արժեքների ընթերցում և փոխհատուցում | VEML7700
Լյուքս արժեքների ընթերցում և փոխհատուցում | VEML7700

Vishay VEML7700 Adafruit- ի օգտագործման տվյալների թերթիկի միջոցով թերթելիս ես գտա բավականին անհանգստացնող ծանուցում.

Սենսորը աշխատում է միայն գծային ՝ 0 -ից մինչև 1000Lux (!)

տեսեք սքրինշոթը նարնջագույն (գծային) և կապույտ (սենսորների իրական ելքի) տողերով

Արևի լույսը (EV15) մոտ 80.000 լյուքս է, ինչը նշանակում է, որ առանց սենսորի ոչ գծային մասի փոխհատուցման այն լիովին անօգուտ կլիներ որպես լուսաչափ:

Vishay- ն դա գիտի, ուստի նրանք իրենց հաճախորդներին տրամադրեցին մեկ այլ pdf, որը կոչվում էր Designing the VEML7700 into an Application.

Այս pdf- ում կարող եք գտնել ոչ գծային սենսորների փոխհատուցման բանաձև.

LUX_CORR = 6.0135e-13*հզորություն (LUX, 4) -9.3924e-9*հզորություն (LUX, 3)+8.1488e-5*հզորություն (LUX, 2)+1.0023*LUX

Որտեղ LUX_CORR- ը ուղղված Lux-Value- ն է, իսկ LUX- ը `սենսորի թողարկած արժեքը:

Սրանք այն փոփոխականներն են, որոնք ես օգտագործել եմ, որոնք իրենց թերթում օգտագործել են տարբեր:

Ինձ մի փոքր անհանգստացնում է այն, որ Ադաֆրութը դա չի նշում մեկ բառով իրենց էջում, փաստաթղթերում, գրադարանում կամ այլուր:

Այսպիսով, առաջին մի քանի օրն ինձ հետաքրքրում էր, թե ինչու է իմ լուսաչափը միայն արևի ուղիղ ճառագայթների տակ թողնում առավելագույնը 20000 Լյուքս:

Եթե նայեք կարմիր և կապույտ գծերով գրաֆիկին, կարող եք տեսնել, թե ինչու. Քանի որ առանց փոխհատուցման բանաձևի այն չի կարող բարձրանալ:

Բայց սենսորի փաստաթղթերում թաքնված է մեկ այլ հուշում.

Այս փոխհատուցման բանաձևը գործում է միայն այն դեպքում, երբ սենսորը սահմանում եք 25ms և շահույթի հարաբերակցությունը 1/8:

Դա բավականին հեշտությամբ արվում է Adafruits գրադարանի միջոցով ՝ ավելացնելով.

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

ձեր դատարկ կարգավորման մեջ ()

Այսպիսով, այն սահմանելով 1/8-ի և 25ms- ի վրա և փոխհատուցման բանաձևը ավելացնելուց հետո կարող եք չափել մինչև 120000 լյուքս, այնքան, որքան բավարար է արևի լույսը ծածկելու 80-100k Lux- ով:

Քայլ 4: Arduino / C-code

Քանի որ դա կախված է ձեր օգտագործած ցուցադրումից և նախընտրած վերահսկիչից, ես շատ չեմ մանրամասնի, ընդամենը մի քանի մտքեր և հուշումներ կավելացնեմ, հատկապես Adafruit գրադարաններից և 128x32 px OLED- ից օգտվելիս.

դատարկ կարգավորման մեջ

Ես VEML գրադարանի մաս եմ սահմանել.

veml.setGain (VEML7700_GAIN_1_8);

veml.setIntegrationTime (VEML7700_IT_25MS);

veml.setLowThreshold (10000);

veml.setHighThreshold (20000);

veml.interruptEnable (ճշմարիտ);

դատարկ օղակում

անպայման ավելացրեք փոխհատուցումը.

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

Lux- ից էլեկտրամատակարարում ստանալու համար օգտագործեք այս տողը.

բոց EV = log2 ((LUX_CORR/2.5));

տեղափոխելով bitmaps

համոզվելու համար, որ bitmaps- ը շարժվում է միայն այն դեպքում, երբ արժեքները գտնվում են 160Lux- ից և 655360Lux- ի միջև, ինչպես նշված է նախորդ քայլին, փաթեթավորեք այն if- ի նման կետով.

եթե (LUX_CORR> 159 && LUX_CORR <655361)

Հաջորդը մենք պետք է քարտեզագրենք EV- ի արժեքները կոորդինատների վրա, քանի որ EV- ների միջակայքը երկնիշ է, և մենք ցանկանում ենք դրանք ցուցադրումից 128px- ով տեղափոխել ամբողջ ցուցադրման վրա, մեզ պետք են ավելի մեծ արժեքներ:

Քանի որ մենք արդեն ստացել ենք բոց թիվ, մենք պարզապես այն բազմապատկում ենք 100 -ով և օգտագործում ենք այդ ամբողջ թիվը `կոորդինատները քարտեզագրելու համար

int EV_DSPL = EV*100;

և ՝

IMEԱՄԱՆԱԿ = քարտեզ (EV_DSPL, 600, 1900, -260, 39); APERTURE = քարտեզ (EV_DSPL, 600, 1900, 39, -260);

Ինչպես տեսնում եք, իմ դեպքում bitmap- ի նվազագույն դիրքը կլինի -260px, իսկ առավելագույնը `39px

Այն, ինչ նույնպես կարելի է տեսնել այստեղ, այն է, որ ես փոխեցի կոորդինատները, որպեսզի երկու բիթ քարտեզները շարժվեն հակառակ ուղղությամբ

Հաջորդը, մենք պետք է բիտ քարտեզները տեղափոխենք ըստ կոորդինատների ՝

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

Եվ դա այն ամենն է, ինչ պետք է անել

Որպես բոնուս ես ցուցադրում եմ ուղիղ EV և Lux արժեքները, երբ սենսորը դուրս է բերում արժեքներ 160Lux- ից ցածր, միայն այն պատճառով, որ ես ուզում էի իրեր տեսնել այն փորձարկելիս:

Քայլ 5: Միավորել այն

Միասին դնելը
Միասին դնելը
Միասին դնելը
Միասին դնելը

Երկուսն էլ, դիսփլեյը և սենսորը օգտագործում են I2C հաղորդակցության համար, իսկական սարքավորումների ստեղծումը այնքան պարզ է, որքան հնարավոր է:

Պարզապես միացրեք Data, Clock ground և 3V գծերը Arduino- ի հետ, և դուք պատրաստվում եք գնալ:

Ես ավելացրեցի գրաֆիկական պատկեր, թե ինչպես դա արեցի գավազանով, բայց ինչպես արդեն նշվեց, դուք կարող եք օգտագործել մալուխներ կամ նույնիսկ դրա համար թև կառուցել, ամեն ինչ կախված է, թե որ վերահսկիչից և էկրանից եք օգտվում:

Իմ գծապատկերում ենթադրվում է, որ սպիտակ կետերը միացված են ցուցադրման և սենսորին, իսկ դեղին կետերը `մանրուքին:

Միակ բացառությունը կլինի I2C գծի տվյալների կապը, որը միանում է էկրանին, այդ կապը միանում է նաև Trinkets տվյալների քորոցին:

Ես նախընտրեցի չօգտագործել միացման/անջատման անջատիչ, այլ փոխարենը օգտագործել մի կոճակ և երկու 3V կոճակի բջիջներ ՝ այն ժամանակավորապես միացնելու համար, քանի դեռ սեղմում եմ կոճակը: Այն հզորանում է վայրկյանի 1/10 -ից պակաս, այնպես որ բավականաչափ արագ է ինձ համար, որպեսզի ես պահեմ մեկ կոճակ և այն փոքրացնեմ:

Խորհուրդ ենք տալիս: