Оглавление:
Видео: Калибровка яркости светодиода: 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Пока я делал сказочный свет, я понял, что значение ШИМ нелинейно пропорционально яркости светодиода. Проще говоря, если значение ШИМ удвоено, яркость не удвоится; особенно, когда ШИМ близок к максимуму, никакие изменения не распознаются моими глазами. Я подумал, это должна быть простая проблема с калибровкой! и именно так я сделал этот проект! Идея состоит в том, чтобы измерить яркость светодиода с помощью какого-либо устройства (датчика яркости или фоторезистора) и найти корреляцию между значением ШИМ и яркостью. Затем, позже, если я установлю яркость на 50%, Arduino вычислит соответствующий ШИМ и соответственно уменьшит яркость светодиода.
Поэтому мне нужен датчик освещенности и светодиод для измерения яркости. Используя 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-карты и провода датчика освещенности не подлежат замене (большинство из них). Светодиод должен быть подключен к выводу ШИМ.
Шаг 3: Код
Я объединил три части кода:
SD-карта: использованный пример> SD> ReadWrite в Arduino IDE
TSL 2561: использовался пример библиотеки Adafruit TSL2561 (sensorapi); вы найдете это в примерах, если установите библиотеку (я предполагаю, что вы знаете, как установить библиотеку в Arduino IDE).
Светодиодное затухание: использованные примеры> Аналоговый> затухание
Код после инициализации модулей затемняет светодиод, считывает яркость и сохраняет ее на SD-карте. таким образом я соберу некоторые данные для калибровки.
Я изменил каждый код в соответствии со своими потребностями. окончательный код прилагается.
Сигнал должен выглядеть как на прикрепленном изображении. К сожалению, я забыл сделать снимок, поэтому перепечатал его в Excel, чтобы показать вам, каким он должен быть.
ПРИМЕЧАНИЕ: я использую wemo mini D1 вместо Arduino. почему-то, я не знаю, ШИМ находится в диапазоне от 0 до 1023. В Arduino он должен быть в диапазоне от 0 до 255. Если вы хотите использовать код для Arduino, вам следует об этом позаботиться (строка 90).
Шаг 4: установка и использование
после сбора данных я открыл файл в Excel и построил график данных (посмотрите на картинку). в первом столбце указано значение ШИМ, а во втором - люкс (показания датчика, единицы измерения значения не имеют). Поэтому постройте график зависимости люкс (ось y) от ШИМ (ось x). Как видите, яркость прямо пропорциональна значению ШИМ. Я приспособил к нему линию.
Чтобы подогнать линию, выполните следующие действия:
1- построить данные (вставить> график разброса), я полагаю, вы знаете, как это сделать.
2- щелкните правой кнопкой мыши данные на графике
3- щелкните линию тренда.
4- (в Excel 2013) с правой стороны всплывает панель. Выберите линейный. Внизу выберите «отобразить уравнение на графике».
Линейное отношение отличается от моего восприятия. Поэтому я считаю, что между моим восприятием и яркостью должна быть логарифмическая связь (это самый простой способ пришел мне в голову!). Так что я выбрал наклон подгонки. Перехват не важен, потому что это зависит от окружающего светового загрязнения! вместо этого я добавил 1. Поскольку Log10 (0) бесконечно. Так что мне нужен перехватчик, чтобы решить проблему. В моем случае уравнение выглядит так:
y = Log10 (0,08 x +1), y - яркость, а x - значение ШИМ (0-1023)
Я нормализовал уравнение до максимального значения. тогда выходной диапазон всегда находится в диапазоне от 0 до 100. Таким образом, я могу запросить у Arduino определенную относительную яркость, не касаясь максимальной абсолютной яркости.
y = Log10 (0,08 x +1) * 100 / 1,914
Поскольку в Arduino я вводил относительную яркость, мне нужно переупорядочить уравнение для x (ШИМ):
х = (10 ^ (у * 1,914 / 100) - 1) / 0,08
используя это уравнение в коде, мы можем получить линейное изменение яркости. Таким образом, вы запрашиваете у arduino значение яркости (y) от 0 до 100, и arduino вычисляет соответствующее значение PWM. Таким образом, если яркость удвоится, ваше восприятие останется прежним.
если вы хотите использовать его в своем коде, вам лучше добавить эти строки:
яркость = 50; // в процентах
PWM = pow (10, яркость * 1.914 / 100) -1) /0.0793;
analogWrite (ledpin, ШИМ);
ПРИМЕЧАНИЕ: нормализация выполняется для максимального значения ШИМ 1023 (для Wemos mini D1). Для Arduino PWM находится в пределах от 0 до 255. вам нужно рассчитать его соответственно.
ПРИМЕЧАНИЕ 2: Я добавил лог-линейный график, чтобы показать, как связаны наше восприятие и значение ШИМ. не используйте его для примерки!
Шаг 5: Заключение
калибровка у меня работает нормально. Когда значения ШИМ велики, я вижу разницу. Раньше при больших значениях я не видел эффекта затемнения. В основном большинство изменений было сделано в небольшом диапазоне ШИМ. теперь он откалиброван!
у каждого светодиода, особенно разного цвета, должны быть собственные параметры калибровки. Однако я откалибровал синий светодиод и использовал параметр для белого светодиода, и результат был приемлемым. так что, возможно, вы сможете использовать мой параметр калибровки, не беспокоясь о себе !!
Рекомендуемые:
КАЛИБРОВКА ДАТЧИКА PH ARDUINO: 7 шагов
КАЛИБРОВКА ДАТЧИКА PH ARDUINO: в этом руководстве мы будем калибровать датчик pH Atlas Scientific EZO с помощью Arduino Uno. ТЕОРИЯ КАЛИБРОВКИ Самая важная часть калибровки - это наблюдение за показаниями во время процесса калибровки. Калибровать прибор проще всего в
Visuino Как использовать широтно-импульсную модуляцию (ШИМ) для изменения яркости светодиода: 7 шагов
Visuino Как использовать широтно-импульсную модуляцию (ШИМ) для изменения яркости светодиода: в этом уроке мы будем использовать светодиод, подключенный к Arduino UNO и Visuino, чтобы изменить его яркость с помощью широтно-импульсной модуляции (ШИМ). Посмотрите демонстрационное видео
Регулировка яркости светодиода с помощью потенциометра: 4 шага
Отрегулируйте яркость светодиода с помощью потенциометра: в предыдущей статье я показал вам, как считывать значение АЦП с потенциометра с помощью Arduino, а на этот раз я воспользуюсь показаниями значения АЦП, то есть регулировкой яркости светодиода
Микроконтроллер AVR. Широтно-импульсная модуляция. Контроллер двигателя постоянного тока и яркости светодиода: 6 ступеней
Микроконтроллер AVR. Широтно-импульсная модуляция. Контроллер двигателя постоянного тока и яркости светодиода: Всем привет! Широтно-импульсная модуляция (PWM) - очень распространенный метод в телекоммуникациях и управлении питанием. он обычно используется для управления мощностью, подаваемой на электрическое устройство, будь то двигатель, светодиод, динамики и т. д. Это в основном моду
Регулировка яркости и яркость светодиода с помощью Arduino: 7 шагов (с изображениями)
Уменьшение яркости и яркость светодиода с помощью Arduino: прежде чем вы начнете строить, вам нужно получить правильные материалы: 1 плата Arduino - я использовал подделку Arduino Uno, но она работает точно так же. 1 Потенциометр - мой выглядит иначе, чем большинство, но они также работают одинаково. 1 Макетная плата Несколько