Датчик освещенности

Материал из MIK32 микроконтроллер
Внешний вид датчика освещенности

Датчик освещенности (освещения) - относительно простой цифровой датчик, способный возвращать значение освещённости в люксах и коэффициент пульсаций света в процентах, а так же определять близость препятствий.

Датчики освещенности, построенные на базе фоторезисторов, довольно часто используются в реальных ардуино проектах. Данный датчик позволяет сделать автоматическое включение освещения.

Основой данного модуля является полупроводниковый элемент — фоторезистор. Фоторезистор ардуино позволяет контролировать уровень освещенности и реагировать на его изменение.

Характеристики модуля датчика освещенности

Fotoresist.png

Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.


Подключение к Ардуино

Подключение датчика освещенности к Ардуино

Схема подключения датчика освещенности к ардуино довольна проста. Соединяем выход модуля VCC с разъемом 5В на плате, GND – c землей. Оставшиеся выводы соединяем с разъемами ардуино.

На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал при помощи АЦП в диапазон значений от 0 до 1023.

Если на плате представлен цифровой выход, то отправляем его на цифровые пины. Если аналоговый – то на аналоговые. В первом случае мы получим сигнал срабатывания – превышения уровня освещенности (порог срабатывания может быть настроен с помощью резистора подстройки). С аналоговых же пинов мы сможем получать величину напряжения, пропорциональную реальному уровню освещенности.

Пример программы для аналогового датчика освещенности

void setup() {

pinMode(A1, INPUT);

analogWrite(A1, LOW);

Serial.begin(9600); // подключаем монитор порта

}

void loop() {

// считываем данные с датчика и выводим на монитор порта

int light = analogRead(A1);

Serial.print("Light = ");

Serial.println(light);

// рассчитываем напряжение и выводим на монитор порта

float u = light * 0.48 / 100;

Serial.print("U = ");

Serial.println(u);

// ставим паузу и делаем перенос строки

delay(500);

Serial.println("");

}

В приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП Ардуино;

Чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных float может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.