Купить Ардуино Нано   Купить Arduino Nano на AliExpress

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

Использование фоторезистора вместе с Ардуино, аналоговое значение отображаем  на последовательном мониторе.

О фоторезисторах

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

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

Код и схемы ниже описывают использование фоторезистора с Arduino. Наш урок не является подробным руководством, и новичкам, которые не знакомы с Ардуино, мы рекомендуем взглянуть на другие уроки на нашем сайте по изучению основ Arduino. Люди с опытом в области электронной инженерии могут предпочесть более продвинутый курс, который охватывает проводку, установку и программирование Arduino и взаимодействие с LabView. Но надеемся, что наш урок будет полезен всем.

Комплектующие

Для создания проекта нам понадобятся:

  • Arduino Uno или Arduino-совместимая плата с аналоговыми входами.
  • Arduino IDE (интегрированная среда разработки).
  • Фоторезистор (фотоэлемент / резистор, зависящий от света), например, от Adafruit (США) или Maplin (Великобритания).
  • Один резистор 10 кОм.
  • Один потенциометр 10Ko (переменный резистор).
  • Макет и соединительные провода (или подходящие платы и паяльное оборудование).

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

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

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

Схемы соединения

Вариантов соединений фоторезистора с Ардуино может быть несколько, но мы разберем пару вариантов.

Вариант 1

  • Первый вывод -> 5 В
  • Второй вывод -> A0 (сопротивление подключено к заземлению и ко второму выводу фоторезистора).

Вариант 2

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

Провод от этой схемы соединен с аналоговым входом 0 на Arduino. Резисторы понижают напряжение, проходящее через них, и поэтому для считывания изменений в освещении этой цепи вы можете использовать аналого-цифровые преобразователи (АЦП) Arduino для измерения уровня напряжения на входе. АЦП преобразуют аналоговое значение в целое число в диапазоне от 0 до 1023.

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

Фоторезистор представляет собой простой пассивный компонент с двумя клеммами и не имеет полярности - не имеет значения, в каком направлении вы поместите его в цепь.

Коды проекта

Согласно нашим схемам мы приведем примеры различных вариантов для работы фоторезистора с Ардуино с некоторыми разъяснениями.

Вариант 1

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

void loop() {
  int value = analogRead(A0);
  Serial.println("Analog value : ");
  Serial.println(value);
  delay(250);
}

В «void setup» мы инициализируем последовательный монитор:

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

Затем мы читаем аналоговое значение, поступающее от фоторезистора, и определяем его как value («значение»):

void loop(){  
int value = analogRead(A0);

И мы записываем значение на последовательном мониторе:

Serial.println("Analog Value :");
Serial.println(value);  
delay(250);
}

Вариант 2

Чтобы убедиться, что все работает правильно, вы можете создать базовый эскиз, который считывает уровень напряжения и выводит значение в последовательный порт. Закрывая фоторезистор, вы увидите изменение показаний.

Чтобы создать эскиз вольтметра:

  1. Откройте Arduino IDE.
  2. Вставьте код ниже.
  3. Сохраните эскиз. В меню "Файл" выберите "Сохранить как" (англ. - Save as).
// pin assignments
 int LDR = 0;
 
 // initialize the serial port
 // and declare inputs and outputs
 void setup() {
   pinMode(LDR, INPUT);
   Serial.begin(9600);
 }
 
 // read from the analog input connected to the LDR
 // and print the value to the serial port.
 // the delay is only to avoid sending so much data
 // as to make it unreadable.
 void loop() {
   int v = analogRead(LDR);
   Serial.println(v);
   delay(1000);
 }

Чтобы загрузить эскиз на свой Arduino и посмотреть результат нужно:

  1. Подключитеь Arduino к компьютеру с помощью USB-кабеля.
  2. В IDE на панели инструментов нажмите кнопку «Загрузить» (Upload).
  3. На панели инструментов нажмите кнопку «Последовательный монитор» (Serial Monitor).

Обнаружение изменений

Точные значения, выводимые на последовательном мониторе в скетче выше, будут различаться в зависимости от нескольких факторов:

  • Блок питания от Arduino. В частности, при питании от USB-кабеля обычно 5 В блока питания Arduino немного меньше этого идеала;
  • Минимальное и максимальное значения сопротивления используемого фоторезистора;
  • Точность резистора 10К;
  • Конструкция макета и используемых проводов - они имеют небольшие уровни сопротивления, которые могут повлиять на АЦП;
  • И количество окружающего света в комнате.

Гораздо важнее обнаруживать изменения уровня освещенности, чем иметь дело с реальными цифрами.

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

// pin assignments
 int LED = 13;
 int LDR = 0;
 
 // variables
 int base;
 int threshold = 100;
 
 // declare inputs and outputs
 // and take a baseline reading
 void setup() {
   pinMode(LED, OUTPUT);
   pinMode(LDR, INPUT);
   base = analogRead(LDR);
 }
 
 // read from the analog input connected to the LDR
 // and print the value to the serial port.
 // the delay is only to avoid sending so much data
 // as to make it unreadable.
 void loop() {
   int v = analogRead(LDR);
   if ((base - v) > threshold) {
     digitalWrite(LED, HIGH);
   } else {
     digitalWrite(LED, LOW);
   }
 }

Установка порогов

Приведенный выше эскиз устанавливает порог - значение, которое определяет, сколько изменений ожидается, прежде чем что-то произойдет - в коде. В зависимости от вашей среды и приложения может потребоваться отрегулировать этот порог. Чтобы избежать необходимости подключать Arduino обратно к компьютеру и перепрограммировать его, вы можете использовать потенциометр для регулировки величины сопротивления в цепи.

Вы можете подключить потенциометр разными способами, пример которого показан ниже:

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

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

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

/ 07.04.2019

Ардуино+