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

Фоторезисторы — это аналоговые датчики, которые могут измерять интенсивность света. Это светочувствительные резисторы, которые изменяют сопротивление в зависимости от количества света, попадающего на датчик.

Фоторезисторы идеально подходят для изготовления переключателей, управляемых светом. Одним из распространенных применений фоторезисторов является управление 5-вольтовыми реле для включения лампочки с наступлением темноты. Они также используются для отслеживания дневного света на метеостанциях и в системах мониторинга окружающей среды.

Как работает фоторезистор

Фоторезисторы имеют два отдельных электрода на чувствительном элементе. Волнистая красная линия — это слой полупроводящего материала между двумя электродами:

Как выглядит фоторезистор

Проводимость полупроводникового материала увеличивается, когда на него попадает больше света. Когда проводимость увеличивается, сопротивление уменьшается. Поэтому сопротивление фоторезистора уменьшается с увеличением интенсивности света. И наоборот, сопротивление фоторезистора увеличивается с уменьшением интенсивности света.

Как подключить фоторезистор к Arduino

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

Схема для подключения фоторезистора к микроконтроллеру

Выходное напряжение Uвых делителя напряжения изменяется при изменении сопротивления фоторезистора. Когда свет не попадает на фоторезистор, сопротивление фоторезистора велико, поэтому выходное напряжение низкое. Когда свет попадает на фоторезистор, сопротивление уменьшается, а выходное напряжение увеличивается.

Делитель напряжения с фоторезистором

Подключить фоторезистор к Arduino можно следующим образом:

Подключение фоторезистора к Ардуино Нано

Код для Ардуино и фоторезистора

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

int photoresistor = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int light = analogRead(photoresistor);
  Serial.println(light);
  delay(1000);
}

Сперва мы объявляем переменную типа int с именем photoresistor и устанавливаем ее равной аналоговому выводу A0. Это контакт, подключенный к центру делителя напряжения.

В функции setup() мы инициализируем последовательную связь. В функции loop() мы объявляем локальную переменную с именем light и сохраняем в нее значение, которое считали с аналогового контакта A0. Затем выводим переменную light в монитор порта и вызываем задержку на 1000 миллисекунд перед следующим чтением данных.

Таким образом, скетч будет использовать функцию analogRead() для измерения выходного напряжения с делителя, преобразовывать его в целое число из диапазона от 0 до 1023 и выводить это число на последовательный монитор.

Если поместить фоторезистор в темноту, то значение, считанное функцией analogRead(), в терминале должно уменьшиться. Если поместить фоторезистор на свет, тогда значения должно увеличиться:

Значение, считанное с фоторезистора при отсутствии света
Значение, считанное с фоторезистора при отсутствии света
Значение, считанное с фоторезистора при наличии света
Значение, считанное с фоторезистора при наличии света

Видео симуляции схемы в программе Proteus можно посмотреть ниже:

Как использовать фоторезистор для управления

Фоторезисторы отлично подходят для изготовления переключателей, управляемых светом. Давайте создадим переключатель, который включает светодиод, когда темно, и выключает его при попадании света. Собрать на макетке схему можно так:

Как только схема соединена, загрузим следующий код в плату Arduino:

int photoresistor = A0;
int led = 9;

void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() {
  int value = analogRead(photoresistor);
  Serial.print("Value: ");
  Serial.println(value);
  int light = map(value, 1023, 0, 10, 0);
  Serial.print("Light: ");
  Serial.println(light);

  if (light < 5) {
    digitalWrite(led, HIGH);
    Serial.println("LED - ON");
  }

  else {
    digitalWrite(led, LOW);
    Serial.println("LED - OFF");
  }
  delay(1000);
}

Мы начинаем с объявления переменной photoresistor и устанавливаем ее равной аналоговому выводу A0. Затем мы объявляем переменную led и устанавливаем ее равной цифровому выводу 9.

В функции setup() настраиваем вывод led как выход OUTPUT и инициализируем последовательную связь.

В функции loop() мы считываем аналоговое значение photoresistor и сохраняем его в локальной переменной с именем value. Чтобы упростить полученные значения с АЦП фоторезистора, мы используем функцию map() для преобразования значений в числа из диапазона от 0 до 10. Новое значение сохраняется в новой локальной переменной с именем light.

Оператор if else устанавливает пороговое значение, которое определяет, когда светодиод будет включаться и выключаться. Когда значение, сохраненное в переменной light, меньше 5, то будет выполнен код в инструкции if. Поскольку нам нужно, чтобы светодиод включался, когда уровень освещенности опускается ниже порогового значения, мы устанавливаем значение для контакта led в HIGH.

Оператор else выполняется, когда значение light больше или равно 5. В операторе else мы устанавливаем контакт led в низкий уровень LOW, чтобы выключить его.

После того, как вы построите схему и загрузите скетч, вы должны увидеть, как светодиод включается в темноте и выключается при свете.

Это простой пример, но это работающий выключатель, управляемый уровнем освещениея. Вы можете заменить светодиод любым другим устройством, которым можно управлять с помощью сигнала 5 В от Arduino.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии