В данной статье мы рассмотрим подключение датчика освещенности TEMT6000 к плате Arduino. С его помощью интенсивность света будет измеряться в процентах и отображаться на ЖК-дисплее. Также мы кратко рассмотрим концепцию работы датчика освещенности TEMT6000.
Как мы знаем, большинство современных устройств, использующих датчики освещенности, в частности, используются для автоматической регулировки яркости в зависимости от интенсивности света. Устройство включает в себя экраны мобильных телефонов и цифровые камеры для регулировки экспозиции. Поэтому здесь мы будем использовать один из лучших датчиков освещенности, а именно датчик освещенности TEMT6000, и подключим его к Arduino для измерения интенсивности света.
Также на нашем сайте вы можете посмотреть подключение к плате Arduino таких датчиков освещенности как TSL25911 и BH1750.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Датчик освещенности TEMT600 (купить на AliExpress).
- ЖК дисплей 16х2 (купить на AliExpress).
- Потенциометр 10 кОм (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Датчик освещенности TEMT6000
Как вы можете видеть на изображении ниже, TEMT6000 — это простой датчик с платой коммутации. На плате сверху и снизу есть три маркированных контакта.
Функция каждого контакта указана в следующей таблице.
TEMT6000 состоит из одного фототранзистора, который действует как простой NPN-транзистор. Чем больше входящего света попадает на его базу, тем больше ток, текущий от коллектора к излучателю. Датчик работает только в видимом спектре (390–700 нм). Инфракрасный, ультрафиолетовый луч или любой другой свет не будет иметь никакого воздействия на датчик. Если же вам нужно измерять интенсивность ультрафиолетового света, то в этом деле вам может помочь датчик ML8511.
Датчик работает в диапазоне от 3,3 В до 5 В. На коммутационной плате имеется схема делителя напряжения, подключенная к резистору 10 кОм. TEMT600 действует как один из резисторов в сети делителя. Когда свет падает на поверхность фототранзистора , значение сопротивления изменяется, что изменяет напряжение на выводе SIG. Arduino или любой другой микроконтроллер используется для считывания этого значения, которое затем используется для расчета освещенности и интенсивности света .
Как работает обнаружение света
Датчик освещенности TEMT6000 измеряет освещенность. Освещенность — это мера общего количества видимого света, излучаемого источником. Она называется световым потоком и измеряется в люменах (лм) на квадратный метр.
Но вопрос в том, почему TEMT6000 измеряет только освещенность? Ответ в том, что измерить интенсивность света без учета расстояния очень сложно. Например, если у вас есть яркий источник далеко, а тусклый источник очень близко, может показаться, что они имеют одинаковую яркость. Это происходит потому, что свет более яркого источника должен рассеиваться в большем объеме по сравнению с менее ярким светом. Вот почему датчик будет считывать меньшее значение, если вы отодвинете тот же источник света дальше от него, по сути увеличивая пространство, которое то же количество света должно заполнить между источником и датчиком.
Ниже представлена графическая зависимость между током (в мкА) и освещенностью в непосредственной близости, воспринимаемой датчиком:
Схема проекта
Схема подключения датчика освещенности TEMT6000 к плате Arduino представлена на следующем рисунке. Эта схема используется для отображения интенсивности света в процентах на экране ЖК дисплея.
Подключите контакт VCC датчика TEMT6000 к контакту Arduino 5 В, а контакт GND датчика - к GND контакту платы. Подключите его контакт SIG к аналоговому контакту Arduino A0.
Аналогично подключите контакты 1, 5, 16 ЖК-дисплея к GND, а 2, 15 к VCC. Используйте потенциометр 10 кОм на контакте 3 ЖК-дисплея для регулировки контрастности ЖК-дисплея. Аналогично подключите контакты 4, 6, 11, 12, 13, 14 ЖК-дисплея к контактам 12, 11, 5, 4, 3, 2 Arduino.
Исходный код программы для измерения интенсивности света
Исходный код для сопряжения датчика освещенности TEMT6000 с платой Arduino и измерением интенсивности света приведен ниже. Аналоговое значение считывается с контакта SIG датчика освещенности с помощью Arduino. С помощью некоторых математических вычислений аналоговое значение преобразуется в интенсивность света в процентах.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int temt6000Pin = A0; float light; int light_value; void setup() { Serial.begin(115200); lcd.begin(16, 2); pinMode(temt6000Pin, INPUT); //data pin for ambientlight sensor lcd.setCursor(0, 0); lcd.print("Light Intensity"); } void loop() { int light_value = analogRead(temt6000Pin); light = light_value * 0.0976;// percentage calculation Serial.println(light); lcd.setCursor(0, 1); lcd.print(light); lcd.print(" %"); delay(500); } |
Исходный код программы для измерения освещенности
Исходный код для сопряжения датчика освещенности TEMT6000 с платой Arduino и измерением освещенности приведен ниже. Аналоговое значение считывается с контакта SIG датчика освещенности с помощью Arduino. С помощью некоторых математических вычислений аналоговое значение преобразуется в освещенность.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { Serial.begin(9600); lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Illuminance"); } void loop() { //lcd.clear(); float volts = analogRead(A0) * 5.0 / 1024.0; float amps = volts / 10000.0; // across 10,000 Ohms float microamps = amps * 1000000; float lux = microamps * 2.0; lcd.setCursor(0, 1); lcd.print(lux); lcd.print(" lux"); delay(750); } |