Мазмұны:

Жарық диодты жарықтылықты калибрлеу: 5 қадам
Жарық диодты жарықтылықты калибрлеу: 5 қадам

Бейне: Жарық диодты жарықтылықты калибрлеу: 5 қадам

Бейне: Жарық диодты жарықтылықты калибрлеу: 5 қадам
Бейне: 5 КЕРЕМЕТ ЛАЙФ ХАК №2 2024, Қараша
Anonim
Жарықдиодты жарықтылықты калибрлеу
Жарықдиодты жарықтылықты калибрлеу

Мен ертегі жарығын жасап жатқанда, PWM мәні жарық диодты жарықтылыққа пропорционалды емес екенін түсіндім. Қарапайым тілмен айтқанда, егер PWM мәні екі есе көп болса, жарықтық екі есе емес; әсіресе PWM максимумға жақындағанда, кез келген өзгеріс менің көзіме көрінбейді. Мен бұл қарапайым калибрлеу мәселесі болуы керек деп ойладым! және мен бұл жобаны осылай жасадым! Идея - жарықдиодты жарықтылықты кейбір құрылғылармен өлшеу (жарықтылық сенсоры немесе фоторезистор) және PWM мәні мен жарықтық арасындағы байланысты табады. Кейінірек, егер мен жарықтылықты 50%-ға қойсам, Arduino сәйкес PWM есептейді және сәйкесінше жарық диодты өшіреді.

Сондықтан маған жарықтықты өлшеу үшін жарықтық сенсоры мен жарық диоды қажет. SD картасын қолдана отырып, мен деректерді кейінірек орнату процедурасына сақтаймын. Орнату Excel -де (немесе кез келген басқа бағдарламада) орындалады. Шығару Arduino кодында қолданылады, және бұл! Мұны бір рет жасау керек. Содан кейін сіз калибрлеу параметрін мәңгілікке пайдалана аласыз!

1 -қадам: бөлшектер

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (Жарықтық сенсоры): Aliexpress 3 €

3- SD картасы модулі: Aliexpress 1 €

4- жарық диоды

5- резистор 220 Ом

6- сымдар

жалпы құны: 8-10 €

2 -қадам: Сымдарды жалғау

Сымдар
Сымдар
Сымдар
Сымдар
Сымдар
Сымдар

SD картасының модулі мен жарықтық сенсорының сымдарын өзгертуге болмайды (олардың көпшілігі). Светодиодты PWM түйреуішіне қосу керек.

3 -қадам: код

Код
Код

Мен үш кодты біріктірдім:

SD картасы: қолданылған мысал> SD> Arduino IDE бағдарламасындағы ReadWrite

TSL 2561: пайдаланылған Adafruit TSL2561 кітапханасының мысалы (sensorapi); Сіз оны мысалдардан таба аласыз, егер сіз кітапхананы орнатсаңыз (Arduino IDE -де кітапхананы қалай орнату керектігін білесіз деп ойлаймын).

Жарықдиодты сөндіру: қолданылған мысалдар> Аналогты> өшу

Код модульдерді инициализациялағаннан кейін жарық диодты өшіріп, жарықтығын оқиды және оны SD картасына сақтайды. осылайша мен калибрлеу үшін кейбір деректерді жинаймын.

Мен әр кодты өз қажеттіліктеріме сәйкес өзгерттім. соңғы код қоса беріледі.

Сигнал қоса берілген суретке ұқсас болуы керек. Өкінішке орай, мен суретке түсіруді ұмытып кеттім, сондықтан мен оны қалай болу керектігін көрсету үшін Excel -де қайта орналастырдым.

ЕСКЕРТПЕ: Мен Arduino орнына wemo mini D1 қолданамын. Мен білмейтін қандай да бір себептермен PWM 0 мен 1023 аралығында. Arduino-да ол 0-255 аралығында болуы керек. Егер сіз arduino кодын қолданғыңыз келсе, оған қамқорлық жасауыңыз керек (90 -жол).

4 -қадам: орнату және қолдану

Орнату және қолдану
Орнату және қолдану
Орнату және қолдану
Орнату және қолдану

деректерді жинағаннан кейін мен файлды excel -де ашып, деректерді салдым (суретке қараңыз). бірінші баған - PWM мәні, ал екіншісі - люкс (сенсордың оқылуы, құрылғы маңызды емес). Сондықтан, люкс (y осі) мен PWM (x осі) арасындағы сюжетті құрыңыз. Көріп отырғаныңыздай, жарықтық PWM мәніне пропорционалды. Мен оған сызық қойдым.

Сызықты орнату үшін келесі әрекеттерді орындаңыз:

1- деректерді сызыңыз (кірістіру> шашырау сызығы), сіз қалай білесіз деп ойлаймын.

2- берілген деректерді тінтуірдің оң жақ түймесімен нұқыңыз

3- тренд сызығын басыңыз.

4- (Excel 2013 жылы) оң жағында панель пайда болады. Сызықты таңдаңыз. Төменгі жағында «теңдеуді диаграммада көрсету» таңдаңыз.

Сызықтық қатынас менің қабылдаудан өзгеше. Сондықтан менің қабылдауым мен жарықтық арасында логарифмдік байланыс болуы керек деп ойлаймын (бұл менің ойыма келген ең қарапайым әдіс!). Сондықтан мен фитингтің еңістігін алдым. Қиып алу маңызды емес, себебі ол қоршаған жарықтың ластануына байланысты! орнына мен 1 -ді қостым. Себебі Log10 (0) шексіз. Мәселені шешу үшін маған тосқауыл қажет. Менің жағдайда теңдеу келесідей көрінеді:

y = Log10 (0.08 x +1), y-жарықтық, ал x-PWM мәні (0-1023)

Мен теңдеуді максималды мәнге келтірдім. онда шығыс жиілігі әрқашан 0-100 аралығында болады. осылайша мен максималды абсолюттік жарықтықты ескермей, arduino -дан белгілі бір салыстырмалы жарықтықты сұрай аламын.

y = Log10 (0,08 x +1)*100/1,914

Ардуинода менің кірісім салыстырмалы жарықтық болғандықтан, x (PWM) теңдеуін қайта реттеу керек:

x = (10^(y*1.914 / 100) - 1) / 0.08

кодта осы теңдеуді қолдана отырып, біз жарықтылықтың сызықтық өзгерісін ала аламыз. Сіз arduino-дан 0-100 арасындағы жарықтықты (y) сұрайсыз, ал arduino сәйкес PWM мәнін есептейді. осылайша, егер жарықтық екі есе болса, сіздің қабылдауыңыз да бірдей болады.

егер сіз оны кодта қолданғыңыз келсе, мына жолдарды қосқан дұрыс:

жарықтық = 50; // пайызбен

PWM = pow (10, жарықтық*1,914/100) -1) /0,0793;

analogWrite (ledpin, PWM);

ЕСКЕРТПЕ: нормализация максималды PWM 1023 үшін жасалады (Wemos mini D1 үшін). Arduino үшін PWM 0-255 аралығында. соған сәйкес есептеу керек.

ЕСКЕРТУ2: Мен біздің қабылдау мен PWM мәнінің қалай байланысты екенін көрсету үшін логикалық сызықты сюжетті қостым. оны орнату үшін қолдануға болмайды!

5 -қадам: Қорытынды

калибрлеу мен үшін жақсы жұмыс істейді. PWM мәндері үлкен болған кезде мен айырмашылықты көре аламын. Бұрын үлкен мәндер ретінде күңгірттеудің әсерін көре алмадым. Негізінен өзгерістердің көпшілігі PWM -дің шағын диапазонында болды. қазір ол калибрленген!

әр жарықдиодты, әр түрлі түстер, өзінің калибрлеу параметрлері болуы керек. Бірақ мен көк жарықдиодты калибрледім және ақ жарық диодты параметрді қолдандым, нәтиже қолайлы болды. Мүмкін сіз менің калибрлеу параметрімді өзіңізді мазаламай қолдана аласыз !!

Ұсынылған: