Мазмұны:

DIY фотографиялық жарық өлшегіші: 5 қадам
DIY фотографиялық жарық өлшегіші: 5 қадам

Бейне: DIY фотографиялық жарық өлшегіші: 5 қадам

Бейне: DIY фотографиялық жарық өлшегіші: 5 қадам
Бейне: софтбоксты қалай жасауға болады softbokstı qalay jasawğa boladı 2024, Шілде
Anonim
DIY фотографиялық жарық өлшегіші
DIY фотографиялық жарық өлшегіші
DIY фотографиялық жарық өлшегіші
DIY фотографиялық жарық өлшегіші

Бұл нұсқаулық қарапайым шағын және арзан жарық шамының құрылысына қатысты кейбір идеялармен бөліседі.

Instructables маған өз бейнелерімді енгізуге рұқсат бермейтіндіктен, мына сілтемені қолданып көріңіз:

www.youtube.com/embed/avQD10fd52s

Менің мақсатым-орташа форматтағы Bronica ETRSi кинокамерасын сүйемелдеу үшін жарық өлшеуіш.

Мен көрсеткісі келетін нәрселер:

  • жалғыз ASA (100), себебі мен тек ASA 100 пленкасын қолданамын
  • мүмкіндігінше кіші
  • маған тек Bronica шығаратын комбинацияларды беріңіз, бұл f2.8-f22 және 1sec-1/500 сек.
  • қарапайым уақыттар мен диафрагмалық мәндерді қоспағанда, мағынасыз ерекшеліктер жоқ

Мен қолданған заттар:

  • Adafruit (Vishay) VEML 7700 сандық люкс метрі (шамамен 5 доллар)
  • Adafruit Trinket M0 микроконтроллері (шамамен 9 доллар)
  • 128x32 OLED дисплей (шамамен 10 доллар)
  • уақытша қосу түймесі (бірнеше цент)
  • Кішкене жолақ тақтасы, өйткені мен кабельдерді қолданбауға тырысамын, бірақ сіз кабельдерді де қолдана аласыз

1 -қадам: Негізгі есептеулер | EV -ге люкс

Негізгі есептеулер | EV -ге люкс
Негізгі есептеулер | EV -ге люкс
Негізгі есептеулер | EV -ге люкс
Негізгі есептеулер | EV -ге люкс

Мен сатып алған сенсор бұл туралы шешім қабылдауға мүмкіндік беретін екі мүмкіндікті пайдаланады:

  • «өлшемсіз» жарық мәндерінің орнына 16 биттік люкс мәндерін шығарады
  • мәндерді I2C арқылы шығарады

Фотографиялық жарық өлшегіш экспозиция мәндерін (EV) пайдаланады, мен сатып алған сенсор мүлдем басқа масштабтағы Lux мәндерін пайдаланады. Бірінші қадам - сенсормен жабдықталған Люкс мәнінен EV алу.

Уикипедияға жылдам қарау және сіз оқиғаларды өлшеу формуласын таба аласыз және EV -ны Люкске айналдыра аласыз:

E = 2,5 * 2^EV

мұндағы Е люкспен өлшенеді.

Біз сенсордан 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 сенсоры EV13 астында 20479 Lux, 1 Lux шығарады, бұл EV мәнін 12 шығарады, бірақ EV13 -тен бір люкс

Сондықтан мен камерамды f2.8 және секундтың 1/500 бөлігіне қоятын едім, ол EV13 -ке қаншалықты жақын екенімді білмей -ақ, 1 аялдаманы шамадан тыс арттырады.

Қорытынды: есептегіштің келесі немесе алдыңғы EV қадамынан қаншалықты жақын немесе алыс екенін көру үшін бізге мәндердің аналогтық көрінісі қажет.

GFX кітапханасының кіріктірілген әріптері мен қарпін қолдануға тырысқаннан кейін мен OLED экранында жылжитын екі реттелетін графиканы қолдануға шешім қабылдадым.

Бірі диафрагма мәндері үшін, екіншісі уақыт үшін.

GFX кітапханасы графиканы көрсету үшін 8 биттік мәндерді пайдаланады, сондықтан мен xls парағын жасадым (жоғарыдағы суретті қараңыз).

  • әрбір мәнде бір мәнге сәйкес келетін пиксельдер саны бірдей
  • уақыттар мен саңылаулардың бір жолдағы мәндері бірдей
  • Мен әр байттың басына қажет «В» мен соңына «,» қостым
  • Содан кейін мен оны қарапайым мәтінге және воилаға экспорттадым: мен үшінші графиканы тіркедім

Уақыт мәндері секундына 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 люкс, бұл датчиктің сызықты емес бөлігін өтемей, жарық өлшегіш ретінде мүлдем пайдасыз болатынын білдіреді.

Вишай мұны біледі, сондықтан олар өз тұтынушыларына VEML7700 қосымшасына жобалау деп аталатын басқа pdf файлын ұсынды.

Бұл pdf-те сенсорлардың сызықты емес орнын толтыратын формуланы таба аласыз:

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

Мұндағы LUX_CORR-түзетілген Lux-Value, ал LUX-сенсор шығатын мән.

Бұл мен қолданған айнымалылар, олардың парағында қолданылған әр түрлі.

Мені мазалайтын нәрсе - Адафрут бұл туралы өз бетінде, құжаттарында, кітапханасында немесе басқа жерде бір сөзбен айтпайды.

Алғашқы бірнеше күнде мен неліктен менің жарық өлшегішім 20000 Lux максимумын тікелей күн сәулесінде де шығарады деп ойладым.

Егер сіз қызыл және көк сызығы бар графикке қарасаңыз, оның себебін көре аласыз: себебі ол өтемақы формуласынсыз жоғары көтеріле алмайды.

Бірақ сенсордың құжаттамасында жасырылған тағы бір кеңес бар:

Бұл компенсация формуласы сенсорды 25 мс және кіріс коэффициентінің 1/8 мәніне орнатқанда ғана жұмыс істейді.

Бұл Adafruits кітапханасымен оңай орындалады:

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

сіздің бос күйіңізде ()

Оны 1/8 және 25 мс орнатып, компенсация формуласын қосқаннан кейін сіз күн сәулесін 80-100 к люкске дейін жабатындай 120000 люкске дейін өлшей аласыз

4-қадам: Arduino / C-коды

Бұл сіздің қолданылған дисплейге және таңдаулы контроллерге байланысты болғандықтан, мен егжей -тегжейлі айтпаймын, тек бірнеше ойлар мен кеңестерді қосуға болады, әсіресе 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;

Люкстен EV алу үшін мына жолды пайдаланыңыз:

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

нүктелік карталарды жылжыту

нүктелік карталар алдыңғы қадамда көрсетілгендей мәндер 160Lux пен 655360Lux аралығында болғанда ғана қозғалатынына көз жеткізу үшін оны келесі сөйлемге ораңыз:

егер (LUX_CORR> 159 && LUX_CORR <655361)

Содан кейін біз EV мәндерін координаттармен салыстыруымыз керек, өйткені EV -дің диапазоны екі таңбалы және біз оларды дисплейден 128 пиксельден жоғары дисплейден жылжытқымыз келеді, бізге үлкен мәндер қажет.

Бізде өзгермелі нөмір бар болғандықтан, біз оны 100 -ге көбейтеміз және координаттарды салыстыру үшін сол санды қолданамыз

int EV_DSPL = EV*100;

және:

УАҚЫТ = карта (EV_DSPL, 600, 1900, -260, 39); APERTURE = карта (EV_DSPL, 600, 1900, 39, -260);

Көріп отырғанымдай, нүктелік кескіннің минималды орны -260 пиксель, ал максимумы 39 пиксель болар еді.

Мұнда да көруге болады, мен екі нүктелік кескін қарама -қарсы бағытта қозғалатындай етіп координаттарды ауыстырдым

Содан кейін координаттарға сәйкес нүктелік кескіндерді жылжыту керек:

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

Және мұның бәрін жасау керек

Мен бонус ретінде сенсор 160Lux астындағы мәндерді шығарғанда EV және Lux мәндерін көрсетемін, себебі мен оны сынау кезінде заттарды көргім келді.

5 -қадам: оны біріктіру

Оны біріктіру
Оны біріктіру
Оны біріктіру
Оны біріктіру

Дисплей мен сенсор екеуі де байланыс үшін I2C -ді қолданады, сондықтан нақты жабдықты құру мүмкіндігінше қарапайым.

Деректерді, Clock жерін және 3V желілерін Arduino -мен байланыстырыңыз, сонда сіз дайын боласыз.

Мен оны стриптиз тақтасында қалай жасағанымды графикамен қостым, бірақ бұрын айтылғандай, сіз кабельдерді қолдана аласыз немесе тіпті қанат жасай аласыз, бәрі сіз басқаратын дисплей мен дисплейге байланысты.

Менің графикамда ақ нүктелер дисплей мен сенсорға, ал сары нүктелер Сегізкіге қосылуы керек.

Жалғыз ерекшелік дисплейге қосылатын I2C желісінің деректер түйреуіші болады, бұл түйін Trinkets деректер түйреуішіне де қосылады.

Мен қосу/өшіру қосқышын пайдаланбауды шештім, бірақ мен түймені басқанша оны уақытша қуаттандыру үшін батырманы және 3В екі түйме ұяшығын қолдандым. Ол 1/10 секундтан аз уақыт ішінде қосылады, осылайша мен батырманы босатып, оны кішірейте аламын.

Ұсынылған: