Mundarija:
- 1 -qadam: Asosiy hisoblar | EV uchun lyuks
- 2 -qadam: Qiymatlarni displeyda ko'rsatish | Adafruit GFX kutubxonasi
- 3 -qadam: hashamatli qadriyatlarni o'qish va kompensatsiya qilish VEML7700
- 4-qadam: Arduino / C-kod
- 5 -qadam: uni birlashtirish
Video: DIY fotografik yorug'lik o'lchagichi: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Bu yo'riqnoma oddiy kichik va arzon nurli o'lchagichni yaratish bo'yicha ba'zi fikrlar bilan bo'lishadi.
Instructables menga o'z videolarimni kiritishga ruxsat bermagani uchun, bu havolani ko'ring:
www.youtube.com/embed/avQD10fd52s
Men uchun maqsad Bronica ETRSi o'rta formatli kino kameramga hamrohlik qilish uchun yorug'lik o'lchagich edi.
Men ko'rsatmoqchi bo'lgan narsalar:
- bitta ASA (100), chunki men deyarli faqat ASA 100 filmidan foydalanaman
- iloji boricha kichikroq
- faqat menga Bronika qayta ishlab chiqarishi mumkin bo'lgan kombinatsiyalarni bering, bu f2.8-f22 va 1 sekunddan 1/500 sekundgacha
- oddiy vaqtlar va diafragma qiymatlaridan tashqari, bema'nilik xususiyatlari yo'q
Men ishlatgan narsalar:
- Adafruit (Vishay) VEML 7700 raqamli lyuks-metr (taxminan 5 dollar)
- Adafruit Trinket M0 mikro boshqaruvchisi (taxminan 9 dollar)
- 128x32 OLED displey (taxminan 10 dollar)
- vaqtincha yoqish uchun tugma (bir necha sent)
- kichik bir bo'lak taxta, chunki men kabellardan foydalanmaslikka harakat qilaman, lekin siz ham kabellardan foydalanishingiz mumkin
1 -qadam: Asosiy hisoblar | EV uchun lyuks
Men sotib olgan sensori ikkita xususiyatdan foydalanadi, bu menga qaror qabul qilishga imkon beradi:
- "o'lchamsiz" yorug'lik qiymatlari o'rniga 16 bitli lyuks qiymatlarini chiqaradi
- qiymatlarni I2C orqali chiqaradi
Fotosurat nuri o'lchagichi Ekspozitsiya qiymatlarini (EV) ishlatadi, sensori Lux qiymatlaridan foydalanadi, bu mutlaqo boshqa o'lchov. Shunday qilib, birinchi qadam - bu sensorlar bilan jihozlangan EV qiymatlarini Lux qiymatlaridan olish.
Vikipediyani tezda ko'rib chiqing va siz hodisalarni o'lchash formulasini topishingiz va EVni Lyuksga o'zgartirishingiz mumkin:
E = 2,5 * 2^EV
bu erda E Lyuksda o'lchanadi.
Sensordan Lux qiymatini olganimiz va EV qiymatini xohlaganimiz uchun, biz formulani qayta tuzishimiz kerak, bu bizni quyidagilarga olib keladi:
EV = log2 (E/2.5)
Shunday qilib, yorug'lik o'lchagichdan fotografik qiymatlarni olish uchun birinchi hisob -kitob qilish kerak.
Qidiruv jadvalida siz ushbu yorug'lik o'lchagichida ishlatiladigan barcha qiymatlarni, shuningdek Lux va EV qiymatlari bilan ko'rishingiz mumkin.
2 -qadam: Qiymatlarni displeyda ko'rsatish | Adafruit GFX kutubxonasi
Men birinchi navbatda qadriyatlarni bosqichma -bosqich ko'rsatishga harakat qildim, chunki men Bronikani shunday sozlashim mumkin, lekin bu meni muammoga olib keladi:
Faraz qilaylik, Lux sensori aynan 20480 qiymatini chiqaradi, bu aynan EV 13 degan ma'noni anglatadi, shuning uchun men masalan, kameramni f4 va 1/500 soniyasiga o'rnatib qo'ygan bo'lardim
Keling, Lyuks sensori EV13 ostida 20479 Lux, 1 Lux ishlab chiqaradi, bu EV qiymatini 12 ga chiqaradi, lekin u EV13dan uzoqda
Shunday qilib, men kameramni f2.8 va 1/500 soniyalariga o'rnatardim, bu men EV13 ga qanchalik yaqinligimni bilmasdan ham 1 to'xtash joyini haddan tashqari oshirib yuborardi.
Xulosa: hech bo'lmaganda hisoblagichning keyingi yoki oldingi EV bosqichidan qanchalik yaqin yoki uzoqroq ekanligini ko'rish uchun bizga qandaydir analogli displey kerak.
GFX kutubxonasining ichki harflari va shriftidan foydalanishga urinib ko'rganimdan so'ng, men OLED ekranida harakatlanadigan ikkita maxsus grafikadan foydalanishga qaror qildim.
Biri diafragma qiymatlari uchun, biri vaqt uchun.
GFX kutubxonasi grafikani ko'rsatish uchun 8 bitli qiymatlardan foydalanadi, shuning uchun men xls varag'i tayyorladim (yuqoridagi rasmga qarang).
- har bir qiymat har bir piksel uchun bir xil miqdordagi pikselga ega
- vaqt va diafragma har bir satrda bir xil miqdordagi qiymatga ega
- Men har bir baytning boshiga "B" va oxirida "," qo'shdim
- Keyin men uni oddiy matn va voilaga eksport qildim: uchinchi grafik biriktirilgan
Vaqt qiymatlari 1/8 sekundda, diafragma f2.8 da boshlanadi
Oldingi qadamni qidirish jadvalidan foydalanib, biz bilamizki, bu 160 Lux yoki EV6.
Eng qorong'i qiymatlar f22 va soniyaning 1/500 qismi bo'ladi
Yana qidiruv jadvali orqali biz bu 655360 Lux yoki EV18 degan ma'noni anglatishini ko'rishimiz mumkin
Hozircha hammasi yaxshi.
Shunday qilib, EV6da diafragma grafigi chapda, o'ngda - o'ngda va aksincha - EV18da bo'lishi kerak.
3 -qadam: hashamatli qadriyatlarni o'qish va kompensatsiya qilish VEML7700
Vishay VEML7700 Adafruit -ning ma'lumotlar jadvalini varaqlab o'tirganimda, men juda xavotirli xabarni topdim:
Sensor faqat 0 dan 1000Luxgacha chiziqli ishlaydi (!)
to'q sariq (chiziqli) chiziq va ko'k (haqiqiy sensor chiqishi) bilan ekran tasvirini ko'ring
Quyosh nuri (EV15) taxminan 80.000 lyuksni tashkil etadi, ya'ni sensorning chiziqli bo'lmagan qismini kompensatsiya qilmasa, yorug'lik o'lchagich sifatida umuman foydasiz bo'ladi.
Vishay buni biladi, shuning uchun ular o'z mijozlariga "VEML7700 ni ilovaga loyihalash" deb nomlangan boshqa pdf faylni taqdim etdilar.
Ushbu pdf-da siz datchiklarning chiziqli bo'lmaganligini qoplaydigan formulani topishingiz mumkin:
LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX
Bu erda LUX_CORR-to'g'rilangan Lux-Value va LUX-sensor chiqaradigan qiymat.
Bular men ishlatgan o'zgaruvchilar, o'z varaqlarida ishlatilganlar.
Adafruit o'z sahifasida, hujjatlarida, kutubxonasida yoki boshqa joyda bir so'z bilan bu haqda gapirmaydi.
Birinchi kunlarda men nima uchun mening yorug'lik o'lchagichim to'g'ridan -to'g'ri quyosh nurida ham maksimal 20000 lyuks chiqaradi?
Agar siz qizil va ko'k chiziqli grafikga nazar tashlasangiz, buning sababini ko'rishingiz mumkin: chunki kompensatsiya formulasisiz u yuqoriroq bo'lolmaydi.
Sensor hujjatlarida boshqa maslahat yashiringan:
Ushbu kompensatsiya formulasi faqat sensorni 25ms ga va daromad nisbatini 1/8 ga o'rnatganingizda ishlaydi.
Buni Adafruits kutubxonasi bilan osonlikcha bajarish mumkin:
veml.setGain (VEML7700_GAIN_1_8); veml.setIntegrationTime (VEML7700_IT_25MS);
sizning bo'sh sozlamangizda ()
Shunday qilib, uni 1/8 va 25 ms ga o'rnatganingizdan va kompensatsiya formulasini qo'shgandan so'ng, siz quyosh nurini 80-100k lyuksda qoplash uchun 120000 lyuksgacha o'lchashingiz mumkin
4-qadam: Arduino / C-kod
Bu sizning ishlatilgan displeyingiz va tanlangan boshqaruvchingizga bog'liq bo'lgani uchun men juda ko'p tafsilotlarni aytmayman, faqat bir nechta fikr va maslahatlarni qo'shish kerak, ayniqsa Adafruit kutubxonalari va 128x32 pikselli OLED -dan foydalanganda:
bo'sh sozlamalarda:
VEML kutubxona qismini quyidagicha o'rnatdim:
veml.setGain (VEML7700_GAIN_1_8);
veml.setIntegrationTime (VEML7700_IT_25MS);
veml.setLowThreshold (10000);
veml.setHighThreshold (20000);
veml.interruptEnable (haqiqiy);
bo'sh davrda:
kompensatsiyani qo'shganingizga ishonch hosil qiling:
int LUX_CORR = 6.0135e-13*pow (LUX, 4) -9.3924e-9*pow (LUX, 3)+8.1488e-5*pow (LUX, 2)+1.0023*LUX;
Lyuksdan EV olish uchun ushbu qatordan foydalaning:
float EV = log2 ((LUX_CORR/2.5));
bitmaplarni ko'chirish
bitmaplar faqat oldingi bosqichda aytilganidek, qiymatlar 160Lux va 655360Lux oralig'ida harakatlanishiga ishonch hosil qilish uchun uni quyidagi if bandiga o'rang:
agar (LUX_CORR> 159 && LUX_CORR <655361)
Keyin biz EV qiymatlarini koordinatalar bilan taqqoslashimiz kerak, chunki EVlar diapazoni ikki xonali va biz ularni displeydan 128 pikselgacha butun ekran bo'ylab ko'chirishni xohlaymiz.
O'zgaruvchan raqamni olganimizdan so'ng, biz uni 100 ga ko'paytiramiz va koordinatalarni xaritada ko'rsatish uchun shu tamsayıdan foydalanamiz
int EV_DSPL = EV*100;
va:
TIME = xarita (EV_DSPL, 600, 1900, -260, 39); APERTURE = xarita (EV_DSPL, 600, 1900, 39, -260);
Ko'rib turganingizdek, mening misolimda, bitmapning minimal pozitsiyasi -260 piksel va maksimal 39 piksel bo'lishi mumkin.
Bu erda ko'rish mumkin bo'lgan narsa shundaki, men koordinatalarni ikkita bitmap teskari yo'nalishda harakat qilish uchun o'zgartirdim
Keyin biz bitmapalarni koordinatalarga muvofiq ko'chirishimiz kerak:
display.drawBitmap ((TIME), (0), TIMES_bmp, 352, 16, 1); display.drawBitmap ((APERTURE), (15), APERTURES_bmp, 352, 16, 1);
Va buni qilish kerak bo'lgan hamma narsa
Bonus sifatida men sensori 160Lux ostida qiymatlarni chiqarganda, men EV va Lux qiymatlarini ko'rsataman, chunki men uni sinab ko'rganimda narsalarni ko'rishni xohlardim.
5 -qadam: uni birlashtirish
Ikkala holatda ham, displey va sensor aloqa qilish uchun I2C -dan foydalanadi, haqiqiy uskunani yaratish imkoni boricha sodda.
Ma'lumotlar, soat va 3V liniyalarini Arduino -ga ulang va siz borishga tayyormiz.
Men tasma bilan qanday ishlaganimni grafik bilan qo'shib qo'ydim, lekin ilgari aytilganidek, siz kabellardan foydalanishingiz yoki hatto qanot yasashingiz mumkin, hammasi qaysi nazoratchi va displeydan foydalanayotganingizga bog'liq.
Mening grafikimda oq nuqta displey va sensorga, sariq nuqta esa Trinketga ulangan bo'lishi kerak.
Faqatgina istisno bu I2C liniyasining displeyga ulanadigan pin-pinidir, u ham Trinkets ma'lumotlar piniga ulanadi.
Men yoqish/o'chirish tugmachasini ishlatmaslikni tanladim, lekin men tugmani bosganimcha uni vaqtincha yoqish uchun tugma va ikkita 3V tugmachasini ishlataman. U 1/10 sekunddan kam quvvat oladi, shuning uchun men tugmani zaxiralashim va uni kichraytirishim mumkin.
Tavsiya:
YN160 Pro LED yoritgichli yorug'lik chiroqlari, o'zgaruvchan toklar va yorug'lik chiroqlari: 8 qadam
YN160 Pro LED yoritgichli yorug'lik manbai (AC)
Sirli yorug'lik qutisi (tungi yorug'lik): 4 qadam
Sirli yorug'lik qutisi (tungi yorug'lik): Va bu juda oson qiziqarli loyiha, bu loyiha https://www.instructables.com/id/Arduino-Traffic-L…, lekin men allaqachon Men asl saytning tuzilishini o'zgartirdim, men qo'shimcha yoritgichlar qo'shaman va uni to'plash uchun poyabzal qutisini ishlataman
O'zgaruvchan yorug'lik sezuvchi tungi yorug'lik: 8 qadam (rasmlar bilan)
O'zgaruvchan yorug'lik sezgichli tungi yorug'lik: Bu ko'rsatma qo'lda o'chirish uchun tungi yorug'lik sensori qanday buzilganligini ko'rsatadi. Diqqat bilan o'qing, har qanday ochiq sxemalarni yodda tuting va agar kerak bo'lsa, birlikni sinovdan o'tkazishdan oldin o'z hududingizni o'chiring
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: 5 qadam
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: Harakatlanuvchi yorug'lik tugmasi uyda ham, ofisda ham juda ko'p qo'llanmalarga ega. Biroq, bu yorug'lik sensori bilan jihozlanishning qo'shimcha afzalliklari bo'lib, bu yorug'lik faqat tunda yoqilishi mumkin
Yorug'lik va tovush effektlari bilan Arduino asosidagi yorug'lik chiroqlari: 14 qadam (rasmlar bilan)
Yorug'lik va tovush effektlari bilan Arduino asosidagi Lightsaber: Salom jedi! Bu ko'rsatma kinofilmda bo'lgani kabi ko'rinadigan, ovoz chiqaradigan va bajaradigan chiroqni yasash haqida. Yagona farq - bu metallni kesolmaydi: (Bu qurilma Arduino platformasiga asoslangan va men unga juda ko'p funktsiyalar va funktsiyalarni beraman, u