Дизайн Luxmeter с использованием светозависимого резистора
Введение
Luxmeter - это устройство, которое измеряет освещенность и световой эмиттанс, используя блок SI люкс. Он эффективно измеряет количество энергии от света, падающего на определенную единицу площади, за исключением того, что измерение мощности взвешено, чтобы отражать чувствительность человеческого глаза к изменяющимся длинам волн света. Простейший способ описать люкс-метр - сказать, что он измеряет, насколько яркий свет падает на датчик. Коммерчески доступные люкс-метры варьируются в цене от примерно 15 долларов США до сотен долларов, но дешевле и гораздо веселее строить их самостоятельно.
Датчик освещенности для измерителя уровня люкс может быть одним из нескольких типов датчиков, включая фотодиоды и фототранзисторы, но самым простым в использовании и часто наиболее доступным типом датчика является фоторезистор или резистор, зависящий от света (LDR). Как и следовало ожидать, сопротивление LDR изменяется, поскольку количество света, падающего на него, изменяется. Если вы можете измерить сопротивление LDR и знаете характеристики вашего конкретного LDR, вы можете количественно оценить количество люксов, попадающих на LDR. В общем, чем ярче свет, тем ниже сопротивление, но, к сожалению, связь между сопротивлением и люкс для LDR не является хорошей линейной связью. Это скорее экспоненциальные отношения, которые немного сложнее иметь дело. С небольшим количеством времени вы можете провести несколько измерений, чтобы определить математическую зависимость между сопротивлением и люкс и запрограммировать связь в микроконтроллере, чтобы создать простой и разумно эффективный люксметр.
В этом проекте я расскажу вам о процессе описания LDR, написании программного обеспечения, которое может рассчитать освещенность, а затем построить LDR и Arduino на базе люксметра.
Требуется оборудование
- 1 светочувствительный резистор (неважно, какой из них, вам даже не нужно знать номер детали)
- Резистор 5 кОм
- Arduino
- 2x16 ЖК-экран
- макетировать
- Цифровой мультиметр (DMM)
- Коммерческий люкс-метр (для характеристики вашего LDR)
Характеристика светозависимого резистора
Подключите LDR к макету и убедитесь, что плоская часть датчика параллельна земле.

Подключите DMM к двум выводам LDR и установите для измерения сопротивления. Поместите датчик коммерческого светового индикатора рядом с LDR.

При обеспечении того, чтобы одни и те же уровни света падали на два датчика, записывайте показания сопротивления LDR и светового индикатора lux. Повторите этот процесс для разных уровней освещения от очень темного (около 0 люкс) до очень яркого (тысячи люкс). Важно, чтобы при всех этих различных уровнях освещения вы делаете все возможное, чтобы оба датчика получили одинаковое количество света.
Передайте показания в электронную таблицу (или введите их непосредственно во время выполнения измерений), а затем сделайте график освещенности (люкс) как функцию сопротивления. Вы можете загрузить таблицу, ниже которой будет создан график и выполнить весь необходимый анализ из ваших записей.
LDR Lux Spreadsheet
Измерения, полученные мной из моего LDR, дали мне следующий сюжет:

Этот график показывает, что сопротивление уменьшается экспоненциально по мере увеличения яркости света. В конечном счете, то, что мы ищем, является уравнением для этого графика, в который мы можем подключить сопротивление, чтобы получить люкс. Это уравнение можно получить непосредственно из графика, но для этого может быть немного сложно. Намного легче получить уравнение по прямой, где форма уравнения равна (y = mx + b ) (где m - наклон линии, b - y-перехват линии).
Оказывается, если вы возьмете логарифм обеих переменных (освещенность и сопротивление), а затем перерисуете, вы получите более или менее прямую линию. Основой логарифма в теории могло быть что угодно, но я буду использовать базу 10 log. Вот результирующий график log lux в зависимости от логарифма сопротивления.

Этот график довольно близок к прямой линии и использует Excel (хотя вы также можете это сделать путем проверки), я получил наилучшую линию соответствия с наклоном -1.405 и y-перехватом 7.098, который дает мне уравнение:
(log_ {10} (lux) = -1.4 \ times log_ {10} left (R \ right) +7.098 )
Это хорошее уравнение для графика выше, но в его текущей форме нельзя использовать для вычисления lux от сопротивления. Я хочу уравнение где (lux = something ), а не (log (lux) = something ). К счастью, с небольшим количеством алгебры я могу манипулировать уравнением в форму, которую я хочу. Предположим, что я начинаю с общей формы уравнения выше:
(log_ {10} (lux) = m \ times log_ {10} left (R \ right) + b )
Поскольку я использовал логарифм base-10, я могу взять 10 на каждую из сторон, чтобы получить:
(10 ^ {log_ {10} (lux)} = 10 ^ {m \ times log_ {10} (R) + b} )
Использование некоторых правил логарифмов для упрощения обеих сторон уравнения дает:
(lux = 10 ^ {m \ times log_ {10} (R)} times 10 ^ {b} )
(= 10 ^ {(log_ {10} (R)) ^ {m}} times 10 ^ {b} )
(= R ^ {m} times 10 ^ {b} )
Заметим, что b является константой, поэтому (10 ^ {b} ) также будет константой.
Теперь, используя уравнение (lux = 10 ^ {b} times R ^ {m} ), вы можете рассчитать освещение на LDR
Для моего конкретного LDR я получаю уравнение
(lux = (1.25 \ times 10 ^ {7}) times R ^ {- 1.4059} )
Строительство Lux Meter
Строительство люксометра очень просто. Мне нужен только Arduino, ЖК-экран, LDR, который я только что охарактеризовал, и резистор 5 кОм. Теоретически вы можете использовать любое значение сопротивления, но я выбрал 5 кОм, потому что сопротивление LDR составляло порядка нескольких кило-омов при типичных условиях освещения помещения. Я подключил экран к Arduino, а затем построил простую цепь делителя напряжения с LDR и резистором. Эта цепь делителя напряжения является основной цепью датчика. Питание 5 вольт разделено между LDR и резистором 5 кОм. По мере изменения сопротивления LDR изменяется доля напряжения на обоих резисторах. Если напряжение на резисторе 5 кОм измеряется с помощью Arduino, очень легко добавить код, который определит, какое сопротивление проявляет LDR. LDR подключен к 5 В, резистор подключен к земле, а точка между ними подключена к аналоговому входу 0.

Эта цепь делителя напряжения может быть подключена непосредственно к экрану ЖК-дисплея и не нуждается в макете. На этом рисунке показана законченная схема с резистором LDR и 5 кОм на ЖК-экране.

Светодиодный индикатор
Уравнение, полученное в части 1, относится к освещенности к сопротивлению, но аналоговый входной вывод Arduino измеряет только напряжение, поэтому для получения сопротивления необходимо выполнить несколько расчетов.
Сначала цифровое представление аналогового напряжения должно быть получено с помощью функции analogRead (помните, что это напряжение на резисторе 5 кОм, а не напряжение на LDR)
rawData = analogRead(LDR_PIN);
Во-вторых, цифровое представление должны быть преобразованы обратно в напряжение посредством масштабирования преобразователя значение аналого-цифровое к опорному напряжению:
// MAX_ADC_READING is 1023 and ADC_REF_VOLTAGE is 5
resistorVoltage = (float)ldrRawData / MAX_ADC_READING * ADC_REF_VOLTAGE;
В-третьих, необходимо определить напряжение LDR. Поскольку 5V разделяется между резистором 5 кОм и LDR, просто вычтите напряжение резистора от 5V:
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
Наконец, сопротивление LDR должно рассчитываться на основе напряжения (простой расчет сопротивления для цепи делителя напряжения):
ldrResistance = ldrVoltage/resistorVoltage * REF_RESISTANCE; // REF_RESISTANCE is 5 kohm
После достижения сопротивления можно рассчитать освещенность (в люксах), и значение можно будет выводить на ЖК-дисплей.
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT);
// LUX_CALC_SCALAR and LUX_CALC_EXPONENT are determined by the Excel spreadsheet
// They are set to 12518931 and -1.405 respectively in my example
Вычисления и вывод дисплея выполняются в функции цикла, и весь исходный код для эскиза можно найти ниже. ЖК-экран от Adafruit используется для отображения измерения люкс, поэтому их ЖК-библиотеку необходимо загрузить для этого эскиза
Эскиз Lux Meter
Все вместе
Аппаратное обеспечение было собрано, код был написан, все, что нужно сделать, это загрузить код и сравнить результаты с коммерческим измерителем света. В приведенном ниже видео вы можете увидеть сравнение света LDR и LX-102 от Lutron. При стандартных комнатных уровнях освещения (500 люкс и ниже) два световых индикатора находились в пределах 40 или 50 люкс друг от друга. Под яркими огнями разница выросла до 100 люкс и более. Вероятно, это связано с тем, что характеристическая кривая I экспериментально отличается от фактической характеристической кривой. Если бы я взял больше образцов и особенно сфокусировался на получении образцов в диапазоне условий освещения, которые я ожидаю измерить, я бы, вероятно, получил бы уравнение, которое более точно отражает фактическую характеристическую кривую.
В целом, я бы сказал, что световой индикатор LDR достаточно хорош в обычной комнате, когда вам просто нужно оценить уровень освещенности в шале, но если вам нужны точные и точные измерения, вам нужно будет использовать датчик другого типа.
Окончательное слово
- LDR luxmeter не невероятно точен, но может быть достаточно хорош в некоторых условиях.
- При характеристике LDR очень важно обеспечить, чтобы свет, падающий на LDR, и коммерческий датчик идентичны.
- Люкметр LDR дешев и прост в изготовлении. Вам нужен только один коммерческий датчик освещенности, который поможет вам сделать столько световых датчиков LDR, сколько захотите.
Попробуйте этот проект сами! Получить спецификацию.