Датчик освещенности: различия между версиями

Материал из MIK32 микроконтроллер
Нет описания правки
 
(не показано 6 промежуточных версий 2 участников)
Строка 7: Строка 7:


== Характеристики модуля датчика освещенности ==
== Характеристики модуля датчика освещенности ==
[[Файл:Fotoresist.png|слева|мини|382x382px]]
[[Файл:Fotoresist.png|слева|мини|327x327px]]
Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.
Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.


Строка 21: Строка 21:


== Пример программы для аналогового датчика освещенности ==
== Пример программы для аналогового датчика освещенности ==
void setup() {
<code>void setup() {</code>


pinMode(A1, INPUT);
<code>pinMode(A1, INPUT);</code>


analogWrite(A1, LOW);
<code>analogWrite(A1, LOW);</code>


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


}
<code>}</code>


void loop() {
<code>void loop() {</code>


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


int light = analogRead(A1);
<code>int light = analogRead(A1);</code>
Serial.print("Light = ");
Serial.println(light);


Serial.print("Light = ");
<code>Serial.print("Light = ");</code>


Serial.println(light);
<code>Serial.println(light);</code>


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


float u = light * 0.48 / 100;
<code>float u = light * 0.48 / 100;</code>


Serial.print("U = ");
<code>Serial.print("U = ");</code>


Serial.println(u);
<code>Serial.println(u);</code>


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


delay(500);
<code>delay(500);</code>


Serial.println("");
<code>Serial.println("");</code>


}
<code>}</code>


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


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

Текущая версия от 08:12, 6 июня 2021

Внешний вид датчика освещенности

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

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

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

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

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 может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.