Съдържание:

Калибриране на яркостта на LED: 5 стъпки
Калибриране на яркостта на LED: 5 стъпки

Видео: Калибриране на яркостта на LED: 5 стъпки

Видео: Калибриране на яркостта на LED: 5 стъпки
Видео: Управление умным светом - Yeelight bluetooth mesh Gateway, работа с Apple Homekit и Home Assistant 2024, Ноември
Anonim
Калибриране на яркостта на LED
Калибриране на яркостта на LED

Докато правех приказна светлина, осъзнах, че стойността на ШИМ е нелинейно пропорционална на яркостта на светодиода. Просто казано, ако стойността на ШИМ е двойна, яркостта не е двойна; особено когато ШИМ е близо до максимума, всяка промяна не се разпознава от очите ми. Мислех, че това трябва да е прост проблем с калибрирането! и така направих този проект! Идеята е да се измери яркостта на светодиода с някакво устройство (сензор за осветеност или фоторезистор) и да се намери корелация между стойността на ШИМ и яркостта. Тогава по -късно, ако настроя яркостта на 50%, Arduino ще изчисли съответната ШИМ и ще затъмни съответно светодиода.

Затова се нуждая от сензор за осветеност и светодиод за измерване на яркостта. Използвайки SD карта, ще запазя данните за по -късна процедура за монтиране. Монтирането ще се извърши в Excel (или всяка друга програма). Изходът ще бъде използван в кода на Arduino и това е всичко! Трябва да се направи веднъж. След това можете да използвате параметъра за калибриране завинаги!

Стъпка 1: Части

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (сензор за осветеност): Aliexpress 3 €

3- Модул за SD карта: Aliexpress 1 €

4- LED

5- Резистор 220 ома

6- жици

обща цена: 8 -10 €

Стъпка 2: Окабеляване

Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации

Проводниците на модула SD карта и сензора за осветеност не трябва да се сменят (повечето от тях). Led трябва да бъде свързан към PWM щифт.

Стъпка 3: Код

Код
Код

Комбинирах три кода:

SD карта: използван пример> SD> ReadWrite в Arduino IDE

TSL 2561: използван пример за библиотека Adafruit TSL2561 (сензорапи); ще го намерите в примери, ако инсталирате библиотеката (предполагам, че знаете как да инсталирате библиотека в Arduino IDE).

LED избледняване: използвани примери> Аналогов> избледняване

Кодът, след инициализиране на модулите, ще затъмни светодиода и ще прочете яркостта и ще го запише в SD картата. по този начин ще събера някои данни за калибриране.

Промених всеки код според нуждите си. приложен окончателният код.

Сигналът трябва да изглежда като приложената снимка. За съжаление забравих да направя снимка, затова я пренасочих в Excel, за да ви покажа как трябва да бъде.

ЗАБЕЛЕЖКА: Използвам wemo mini D1 вместо Arduino. по някаква причина, която не знам, PWM е между 0 и 1023. В Arduino трябва да е между 0-255. Ако искате да използвате кода за arduino, трябва да се погрижите за него (ред 90).

Стъпка 4: Монтиране и използване

Монтаж и използване
Монтаж и използване
Монтаж и използване
Монтаж и използване

след събиране на данни отворих файла в excel и начертах данните (погледнете снимката). първата колона е PWM стойност, а втората е лукс (отчитане на сензора, единицата няма голямо значение). Следователно, графиката лукс (ос y) спрямо ШИМ (ос x). Както можете да видите, яркостта е линейно пропорционална на стойността на ШИМ. Поставих линия към него.

За да се побере ред, следвайте следното:

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

Тъй като в arduino моят вход е относителната яркост, трябва да пренаредя уравнението за x (PWM):

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

използвайки това уравнение в кода, можем да получим линейна промяна на яркостта. Затова питате arduino за яркост (y) между 0-100 и arduino изчислява съответната PWM стойност. по този начин, ако удвоите яркостта, вашето възприятие също е същото.

ако искате да го използвате във вашия код, по -добре добавете тези редове:

яркост = 50; // в проценти

ШИМ = pow (10, яркост*1.914/100) -1) /0.0793;

analogWrite (ledpin, PWM);

ЗАБЕЛЕЖКА: нормализирането се извършва за максимален ШИМ от 1023 (за Wemos mini D1). За Arduino PWM е между 0-255. трябва да го изчислите съответно.

ЗАБЕЛЕЖКА 2: Добавих график, линеен, за да покажа как нашето възприятие и ШИМ стойността са свързани. не трябва да го използвате за монтаж!

Стъпка 5: Заключение

калибрирането ми работи добре. Когато стойностите на ШИМ са големи, виждам разликата. Преди като големи стойности не можех да видя ефекта от затъмняването. По принцип повечето от промените са направени в малък диапазон от ШИМ. сега е калибриран!

всеки светодиод, специално различни цветове, трябва да има свои собствени параметри за калибриране. Въпреки това калибрирах син светодиод и използвах параметъра за бял светодиод и резултатът беше приемлив. така че може би можете да използвате моя параметър за калибриране, без да се притеснявате !!

Препоръчано: