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

Материал из me-robotics wiki
(Отмена правки 508, сделанной Сергей (обсуждение))
Метка: отмена
 
Строка 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 = ");
+
<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> может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.

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