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

На этом занятии рассмотрим подключение фоторезистора к аналоговым портам Arduino. Разберем принцип работы полупроводниковых приборов и фоторезисторной автоматики. Соберем схему светильника с автоматическим включением, а также с автоматическим изменением яркости свечения светодиода, в зависимости от освещения. Рассмотрим тип данных unsigned int и оператор if, else в языке C++.

Устройство и принцип работы фоторезистора

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

Устройство фоторезистора, обозначение на электрических схемах
Устройство фоторезистора, обозначение на электрических схемах

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

Устройство и принцип действия фоторезистора максимально просты, поэтому данные полупроводниковые приборы сегодня широко применяются во многих отраслях науки и техники. Это объясняется высокой чувствительностью фоторезисторов, малыми габаритами и простотой конструкции приборов, долговечностью в работе, а также возможностью обеспечить бесконтактные измерения и контроль.

Светильник с автоматическим включением

На этом занятии мы соберем электрическую схему «умного» светильника. Если на предыдущем занятии мы с помощью потенциометра включали и изменяли яркость светодиода, то сегодня мы будем использовать фоторезистор в схеме для автоматического включения светодиода. Фоторезистор будет играть роль переменного сопротивления, которое изменяет напряжение на аналоговом входе A0.

Для занятия нам понадобятся следующие детали:

  • Плата Arduino Uno;
  • Макетная плата;
  • USB-кабель;
  • 1 фоторезистор;
  • 1 светодиод;
  • 2 резистора 220 Ом;
  • Провода «папка-папка».

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

Схема сборки умного светильника с автоматическим включением
Схема сборки умного светильника с автоматическим включением

После сборки схемы, подключите Arduino к компьютеру и загрузите следующий скетч.
Скачать готовый скетч zanyatie6_foto.ino

// Присваиваем имя для аналогового входа A0 с фоторезистором
// Тип данных int округляет полученные значения до целого числа
int sensor = A0;

// Присваиваем имя для цифрового значения аналогового входа A0
// unsigned int округляет значения и принимает только положительные числа
unsigned int value = 0;
 
void setup()
{
 // Пин 9 со светодиодом будет выходом (англ. «output»)
  pinMode(9, OUTPUT);
}
 
void loop()
{
  // Считываем значение с фоторезистора на аналоговом входе A0
  value = analogRead(sensor);
  
  // Если значение value на входе A0 меньше 500, включаем светодиод
  if (value<500) digitalWrite(9, HIGH);

  // В противном случае (если value>500), выключаем светодиод 
  if (value>500) digitalWrite(9, LOW);
  
  // Последнее выражение можно написать по другому (снимите комментарий)
  // else digitalWrite(9, LOW);
  }

Пояснения к коду:

  1. В первой строчке мы присвоили имя sensor для аналогового входа A0 и с помощью оператора int мы указали, что значения могут принимать только целое число;
  2. Оператор unsigned int указывает, что значение value может принимать только положительное целое число, а начальное значение value равно нулю;
  3. Условный оператор if позволяет определить действие при истинном условии. Оператор else позволяет определить действие, когда истинное условие ложно.

Задание для самостоятельного выполнения:

  1. Выведите на Монитор последовательного порта значение value;
  2. Установите включение светодиода при значении value меньше 100.

«Умный» светильник на Ардуино

После выполнения задания, загрузите в Arduino следующий скетч.
Скачать готовый скетч zanyatie4_1.ino

// Присваиваем имя для аналогового входа A0 с фоторезистором
// Тип данных int округляет полученные значения до целого числа
int sensor = A0;

// Присваиваем имя для цифрового значения аналогового входа A0
// unsigned int округляет значения и принимает только положительные числа
unsigned int value = 0;

// Назначаем переменную data, которую будем использовать в скетче
int data;
 
void setup()
{
 // Пин 9 со светодиодом будет выходом (англ. «output»)
  pinMode(9, OUTPUT);
}
 
void loop()
{
  // Считываем значение с фоторезистора на аналоговом входе A0
  value = analogRead(sensor);
  
  // Полученные значения на аналоговом входе A0 делим на 4
  data = value / 4;
  
  // Включаем светодиод с полученной ранее мощностью - от 0 до 255
  analogWrite(9, data);
  }

Пояснения к коду:

  1. В этом скетче мы добавили переменную data, которая равна value деленная на 4;
  2. Пин 9 мы использовали, как аналоговый выход, который плавно изменяет яркость свечение светодиода в зависимости от значения data.

Задание для самостоятельного выполнения:

  1. Выведите на Монитор последовательного порта значение value и data.

Пройти тест


1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *