Подключение фоторезистора к Arduino¶
Датчик света — это электронный модуль, преобразующий уровень освещённости в электрический сигнал, который может быть считан микроконтроллером или управляющей схемой. В радиолюбительской электронике и прототипировании под датчиком света чаще всего понимают модуль на основе фоторезистора (LDR, светорезистора) в связке с компаратором, либо цифровой фотодатчик (например, BH1750, TSL2561). Подключение датча света сводится к правильному выбору интерфейса, распайке проводов и загрузке управляющего кода.
¶Принцип работы
Фоторезистор — полупроводниковый резистор, сопротивление которого уменьшается при увеличении освещённости. В темноте его сопротивление может достигать нескольких мегаом, при ярком свете — снижаться до сотен ом. Для измерения света фоторезистор включают в делитель напряжения последовательно с постоянным резистором: изменение сопротивления LDR приводит к изменению напряжения на точке раздела, которое измеряется аналого-цифровым преобразователем (АЦП) микроконтроллера.
Простые модули датчика света, распространённые в наборах для Arduino, содержат фоторезистор, фиксированный резистор, компаратор LM393 и подстроечный потенциометр. Компаратор выдаёт на выход цифровой сигнал «0» или «1» в зависимости от того, превышает ли напряжение с делителя порог, заданный потенциометром. Такой модуль имеет три или четыре вывода: VCC, GND, аналоговый (AO) и цифровой (DO).
¶Виды датчиков света
| Тип | Интерфейс | Особенности |
|---|---|---|
| Фоторезистор + компаратор LM393 | Аналоговый и цифровой выход | Дёшев, прост, порог настраивается потенциометром |
| BH1750 | I²C | Цифровой, измеряет освещённость в люксах, точность ~±20 % |
| TSL2561 | I²C | Два канала (инфракрасный и видимый), диапазон до 40 000 лк |
| Фотодиод | Аналоговый выход | Быстрый отклик, требует схемы ток-напряжение |
| Оптопара | Цифровой выход | Простейший детектор наличия светового луча |
¶Подключение модуля на LM393 к Arduino
Схема подключения наиболее распространённого модуля с компаратором выглядит следующим образом:
- Вывод VCC модуля соединяется с 5 В (или 3,3 В) Arduino.
- Вывод GND — с общей землёй платы.
- Вывод AO (аналоговый выход) подключается к любому аналоговому пину, например A0.
- Вывод DO (цифровой выход) — к любому цифровому пину, например D2.
При использовании только аналогового канала вывод DO можно оставить не подключённым. Подстроечный потенциометр на модуле задаёт порог срабатывания цифрового выхода: при освещённости выше порога DO выдаёт один уровень, ниже — другой (логика зависит от конкретной ревизии платы).
¶Пример кода для Arduino
Простейший скетч, считывающий аналоговое значение и управляющий светодиодом:
```cpp const int ldrPin = A0; const int ledPin = 13; int threshold = 500;
void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); }
void loop() { int value = analogRead(ldrPin); Serial.println(value);
if (value < threshold) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } delay(100); } ```
Значение threshold подбирается экспериментально: через монитор последовательного порта фиксируются показания в темноте и при освещении, после чего выбирается порог.
¶Подключение цифрового датчика BH1750
Датчик BH1750 подключается по шине I²C, для которой на Arduino Uno отведены пины A4 (SDA) и A5 (SCL). Порядок действий:
- VCC → 3,3 В (или 5 В, если модуль имеет стабилизатор).
- GND → земля.
- SDA → A4.
- SCL → A5.
- ADDR → GND (адрес 0x23) или VCC (адрес 0x5C).
Для работы с датчиком используется библиотека BH1750 (автор Christopher Laws). После подключения библиотеки в Arduino IDE вызовы lightMeter.begin(), lightMeter.configureMode(BH1750::CONTINUOUS_HIGH_RES_MODE) и lightMeter.readLightLevel() позволяют получить освещённость в люксах.
¶Типичные ошибки при подключении
- Перепутанные провода VCC и GND — наиболее частая причина выхода модуля из строя.
- Питание цифрового модуля на 5 В при отсутствии стабилизатора на плате (BH1750 рассчитан на 3,3 В).
- Использование слишком большого последовательного резистора в делителе — сигнал становится шумным.
- Отсутствие резистора подтяжки 4,7 кОм на линиях I²C (на платах Arduino Uno он уже установлен на плате, на некоторых других платах — нет).
- Попытка измерить аналоговое напряжение пином, не подключённым к АЦП.
¶Применение
Датчики света используются в системах автоматического уличного освещения, в схемах включения подсветки экрана, в системах умного дома для регулирования яркости светильников, в метеорологических станциях, а также в обучающих наборах по электронике и робототехнике. Простые модули на LM393 стоят порядка 20–50 рублей и широко доступны в китайских интернет-магазинах и на маркетплейсах.
Источники:
- Документация Arduino: analogRead(), Wire (I²C)
- Даташит на компаратор LM393 (Texas Instruments)
- Даташит на фотодатчик BH1750FVI (ROHM Semiconductor)
- Учебные материалы Arduino Project Hub
