КАК РАБОТАЕТ ДАТЧИК ОСВЕЩЕННОСТИ?
Основным элементом датчика являются фоторезисторы, фототранзисторы и фотодиоды.




Фоторезистор — полупроводниковый прибор, изменяющий величину своего сопротивления при облучении светом. В нем, как и во всех фотоэлементах, есть окошечко, с помощью которого он «ловит» свет, чем больше падает света на фоторезистор, тем меньше его сопротивление
Эти простые схемы представляют собой датчики освещения, в качестве чувствительного элемента используется фоторезистор. Первая схема — датчик затемнения, вторая — освещения.
Когда свет попадает на фоторезистор, он меняет сопротивление, чем больше света тем меньше сопротивление и больше падение напряжения на нем. При увеличении падения напряжения транзистор открывается, срабатывает реле. Порог срабатывания реле можно отрегулировать при помощи переменного резистора 50 кОм.
Различаются фоторезисторы по диапазону сопротивления. Например:
- VT83N1 — 12-100кОм;
- VT93N2 — 48-500кОм.
Это значит, что в темноте сопротивления фоторезистора равно 12кОм, а при определенной тестовой засветке — 100кОм. Конкретно в случае этих светодиодов, тестовая засветка имела параметры: освещенность -10 Люкс, и цветовая теплота — 2856К.
Кроме фоторезистора, в датчиках света часто используют фотодиод и фототранзистор. Оба выглядят как типичные светодиоды
ПРИМЕР ПОДКЛЮЧЕНИЯ ФОТОРЕЗИСТОРА К АРДУИНО
На выходе цепи фоторезистора мы получим некое напряжение, в диапазоне от 0 до 5 Вольт, которое нам потребуется превратить в конкретное число, с которым уже будет работать программа микроконтроллера.



Необходимые компоненты для подключения фоторезистора на Arduino
Ардуино подключение фоторезистора
Так выглядит собранная модель Arduino с фоторезистором:

Самое простое, что мы можем сделать — это зажигать на Ардуино штатный светодиод #13. Получается скетч:
const int pinPhoto = A0;
const int led = 13;
int raw = 0;
void setup() {
pinMode( pinPhoto, INPUT );
pinMode( led, OUTPUT );
}
void loop() {
raw = analogRead( pinPhoto );
if( raw < 600)
digitalWrite( led, HIGH );
else
digitalWrite( led, LOW );
delay(200);
}
ДАТЧИК ОСВЕЩЕННОСТИ — АРДУИНО ПОДКЛЮЧЕНИЕ



BH1750FVI цифровой модуль освещенности для Arduino
Для измерения освещенности отлично подходят на базе сенсора BH1750 датчики Gy-30 и Gy-302.
ХАРАКТЕРИСТИКИ BH1750FVI ЦИФРОВОЙ МОДУЛЬ ОСВЕЩЕННОСТИ ДЛЯ ARDUINO:
- Цифровой 16-битный цифровой датчик освещённости
- Чувствителен к видимому свету и практически не подвержен влиянию инфракрасного излучения
- Построен на микросхеме BH1750FVI
- Напряжение питания: +3..+5 В постоянного тока.
- Интерфейс: I2C.
- Диапазон измеряемой освещенности: (1 — 65535 лк).
- Размеры: 3,3 см х 1,5 см х 1,1 см
- Вес: 5 г
- Подключение модуля производится по двухпроводному интерфейсу I2C, который в плате Arduino реализован на аналоговых пинах A4 и A5, отвечающих за SDA (шина данных) и SCL (шина тактирования), соответственно. Вывод ADDR модуля GY-302 можно оставить не подключённым или заземлить.
- Устанавливаем библиотеку. Скачанный архив распакуем в директорию со средой разработки «Arduino IDE/libraries»
- Загружаем скетч
// подключаем библиотеку I2C:
#include <Wire.h>
// подключаем библиотеку датчика BH1750:
#include <BH1750.h>
// объявляем объект lightMeter:
BH1750 lightMeter;
void setup() {
Serial.begin(9600); //инициализация послед. порта
lightMeter.begin(); //инициализация датчика BH1750
}
void loop() {
//считываем показания с BH1750:
uint16_t lux = lightMeter.readLightLevel();
//выводим показания в послед. порт:
Serial.println(String(lux) + » lx»);
delay(100); //задержка 100 мсек
}
В скетче мы каждые 100 мсек считываем с датчика BH1750 показания освещённости в люксах и выводим эти данные в последовательный порт.
Проверяем работу. Для этого подключаем Ардуино к ПК. Запускаем среду разработки Arduino IDE и открываем монитор последовательного через меню Инструменты (Ctrl+Shift+M). Смотрим как меняются показания, если направить свет на датчик или если его затенить.