Подключение фоторезистора к Ардуино: схема для датчика света и цвета

Вопросы и ответы

Фоторезистор ардуино и датчик освещенности

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

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

Фоторезистор датчика освещенности ArduinoФоторезисторы активно используются в самых разных системах. Чаще всего применяется уличное освещение. Если над городом наступает ночь или становится пасмурно, свет включается автоматически. Из фоторезистора можно сделать недорогую лампочку для дома, которая включается не по расписанию, а по освещению. На основе датчика освещенности можно даже сделать систему безопасности, которая будет активироваться сразу после открытия и освещения закрытого шкафа или сейфа. Как всегда, возможности любого датчика Arduino ограничены только нашим воображением.

Какие фоторезисторы можно купить в интернет-магазинах

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

Фоторезистор датчика освещенности Arduino

Начинающему геймеру в arduino можно посоветовать приобрести готовый фотомодуль, который выглядит так:

Фоторезистор датчика освещенности Arduino

Фоторезистор датчика освещенности Arduino

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

Российскому радиолюбителю можно посоветовать обратиться к российскому датчику FR. Имеются в продаже FR1-3, FR1-4 и др. — были произведены во времена союза. Но, несмотря на это, FR1-3 — более точная деталь. Отсюда и разница в цене, за FR просят не более 400 руб. FR1-3 будет стоить более тысячи рублей каждый.

Маркировка фоторезистора

Современная маркировка моделей, произведенных в России, довольно проста. Первые две буквы — PhotoResistor, цифры после тире — номер разработки. FR-765 — фоторезистор, проявка 765. Обычно маркируется непосредственно на корпусе детали

Для датчика VT диапазон сопротивления указан на схеме маркировки. Например:

  • VT83N1 — 12-100кОм (12К — на, 100К — в темноте)
  • ВТ93Н2 — 48-500кОм (48К — на, 100К — в темноте).

Фоторезистор датчика освещенности Arduino

Иногда продавец предоставляет специальный документ от производителя для уточнения информации о модели. Помимо рабочих параметров указывается еще и точность детали. У всех моделей диапазон чувствительности находится в видимой части спектра. Собирая датчик освещенности, нужно понимать, что точность срабатывания — понятие условное. Даже для моделей от одного производителя, одной партии, одной покупки он может отличаться на 50% и более.

На заводе детали настраиваются на длину волны от красного до зеленого света. При этом большинство «видит» инфракрасное излучение. Чрезвычайно мелкие детали могут улавливать даже ультрафиолетовый свет.

Достоинства и недостатки датчика

Главный недостаток фоторезисторов — их чувствительность к спектру. В зависимости от типа падающего света сопротивление может варьироваться на несколько порядков. К недостаткам также можно отнести медленную реакцию на изменение освещения. Если лампочка мигает, датчик не успевает среагировать. Если скорость изменения достаточно высока, резистор перестанет «видеть», что освещение меняется.

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

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

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

Схема подключения датчика освещенности к ардуино довольно проста. Если мы используем фоторезистор, то датчик на схеме подключения реализован как делитель напряжения. Одно плечо меняется в зависимости от уровня освещения, второе подает напряжение на аналоговый вход. В микросхеме контроллера это напряжение преобразуется в цифровые данные через АЦП. Потому что сопротивление датчика при попадании на него света уменьшается, поэтому величина падающего на него напряжения будет уменьшаться.

Фоторезистор датчика освещенности Arduino

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

Сама установка карты не должна вызывать затруднений. Поскольку фоторезистор не имеет полярности, можно подключать его с двух сторон, можно припаять к плате, соединить проводами с помощью монтажной платы или использовать для подключения обычные зажимы (зажимы типа «крокодил»). Источником питания в схеме является сама ардуино. Фоторезистор соединен одной ногой с землей, другой — с платой АЦП (в нашем примере АО). К этой же ножке подключаем резистор 10 кОм. Конечно, фоторезистор можно подключить не только к аналоговому выводу A0, но и к любому другому.

Несколько слов о дополнительном резисторе 10 К. Он выполняет две функции в нашей схеме: ограничивает ток в цепи и формирует желаемое напряжение в цепи с помощью делителя. Ограничение тока необходимо в ситуации, когда полностью освещенный фоторезистор резко снижает его сопротивление. Моделирование напряжения предназначено для предсказуемых значений аналогового порта. Фактически, для нормальной работы с нашими фоторезисторами достаточно сопротивления 1К.

Изменяя номинал резистора, мы можем «сместить» уровень чувствительности в «темную» и «светлую» стороны. Следовательно, 10 К даст быстрое переключение начала света. В случае 1K датчик освещенности будет более точно определять высокий уровень освещенности.

Если вы используете готовый модуль светового датчика, подключение будет еще проще. Подключаем выход модуля VCC к разъему 5V на плате, GND на массу. Подключаем остальные пины к разъемам ардуино.

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

Пример скетча датчика освещенности на фоторезисторе

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

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

Напишем скетч датчика освещенности, который включает или выключает подключенный светодиод, как показано ниже.

Фоторезистор датчика освещенности Arduino

Алгоритм работы следующий:

  • Определите уровень сигнала с аналогового вывода.
  • Сравните уровень с пороговым значением. Максимальное значение будет соответствовать темноте, минимальное значение будет соответствовать максимальной освещенности. Выберем пороговое значение равным 300.
  • Если уровень ниже порога, темно, нужно включить светодиод.
  • Если нет, выключите светодиод.

Прикрыв фоторезистор (руками или непрозрачным предметом), мы можем наблюдать включение и выключение светодиода. Изменяя параметр порога в коде, мы можем заставить лампочку включаться / выключаться при разных уровнях освещения.

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

Управляем освещением при помощи датчика приближения

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

В этом примере требуется следующее оборудование и программное обеспечение:

  • Arduino UNO — одна из разновидностей плат Arduino;
  • Датчик PIR;
  • Блок реле SRD-12VDC-SL-C;
  • Arduino IDE — программа для загрузки микрокода на микроконтроллер Arduino;
  • Лампочка подключена к сети 220 вольт.

Устройство автоматического пуска

Как и в предыдущих примерах, первым делом нужно собрать схему, представленную ниже.

Схема подключения с автоматической активацией

Принцип работы этой программы подробно описан в его комментариях. Проверить работу датчика можно с помощью «Монитора портов», который отобразит сообщения «Объект начал двигаться» и «Объект не перемещается».

Подключение HC-SR501 к Ардуино Уно

Для соединения с микроконтроллером или напрямую с реле HC-SR501 имеет три контакта. Подключаем их к Arduino следующим образом:

HC-SR501 GND VCC ИЗ
Ардуино Уно GND + 5В 2

Схематическая диаграмма

IR_motion_scheme

Программа

Как уже упоминалось, цифровой выход датчика HC-SR501 при активации генерирует сигнал высокого уровня. Напишем простую программу, которая будет отправлять «1» на последовательный порт, если датчик обнаруживает движение, и «0» в противном случае.

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

Тестирование кода для датчика Arduino LDR

После подключения LDR к Arduino вы можете проверить значения, поступающие от LDR через Arduino. Для этого подключите Arduino через USB к компьютеру и откройте программу Arduino IDE. Затем вставьте этот код и загрузите его в Arduino:

int sensorPin = A0; // выбираем входной контакт для LDR int sensorValue = 0; // переменная для хранения значения, поступающего от датчика void setup () {Serial.begin (9600); // устанавливаем последовательный порт для связи} void loop () {sensorValue = analogRead (sensorPin); // считываем значение с датчика Serial.println (sensorValue); // выводим значения с датчика на экран delay (100); }

После загрузки кода нажмите кнопку в среде разработки Arduino под названием Serial Monitor. Это откроет новое окно, которое выводит на экран различные значения.

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

Принципиальная схема контроллера на Arduino

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

В качестве датчика освещенности используется миниатюрный фоторезистор VT93N1 номиналом 12 кОм. Резистор R3 с фоторезистором образует делитель напряжения, подключенный к аналоговому входу A7. Это самый простой способ подключить фоторезистор к вашему Arduino.

Для определения присутствия человека в помещении я использовал противоугонный ИК-датчик движения Foton-9. (Важный момент, не путать с датчиками движения для управления осветительными приборами). Без изменения схемы и прошивки можно использовать любой аналогичный датчик движения с нормально замкнутыми контактами реле и напряжением питания 12 В. Датчик подключается к контроллеру через комбинированный разъем TB1-TB2 (клеммные колодки с винтовыми зажимами).

Сигнальная линия датчика движения (клемма C, см. Описание датчика 1) подключена к порту D2, который настроен как вход с внутренним подтягивающим резистором. Земля подключается к нормально замкнутому контакту датчика. В нормальном состоянии контакты реле датчика движения (NC и C) замкнуты, поэтому на входе D2 низкий логический уровень. При обнаружении движения контакты реле датчика размыкаются и благодаря подтягивающему резистору на входе D2 появляется высокий логический уровень.

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

Контакт 2 TB2 подключен к свободному порту D3 Arduino и может использоваться для расширения функциональности контроллера. То же самое и с разъемами P2-P4.

Светодиоды или светодиодная лента с напряжением питания 12 В подключаются к разъему DC2. Микроконтроллер реализует ШИМ-контроль яркости светодиодов через силовой полевой МОП-транзистор NTD3055L (или аналогичный с логическим уровнем управления), затвор которого подключен к цифровому выходу Arduino D5.

Плата Arduino Nano содержит регулятор напряжения 5 В для питания микроконтроллера, поэтому дополнительная цепь питания не требуется, а напряжение 12 В с разъема DC1 поступает непосредственно на вход Vin платы Arduino. Напряжение 5 В от регулятора Arduino поступает на фоторезистор и на контакт 2 разъема P4.

Список используемых компонентов библиотеки, созданный в редакторе EasyEDA, приведен в таблице 1.

Таблица 1. Список используемых компонентов.

п / п
Обозначение
на диаграмме
Количество Чехол EasyEDA Примечание
1 DC1, DC2 2 DC-5020 Розетка постоянного тока
2 U1 1 АРДУИНО НАНО
3 R1, R2, R3 3 1206 1206 SMD резисторы
4 Q1 1 ДПАК-3 МОП-транзистор
5 Do1 1 CAP-D5.0XF2.0
6 P2, P4 2 HDR-8X1 / 2.54 Штыревые соединители
7 P3 1 HDR-1X2 / 2,54 Контактный разъем
восемь TB1, TB2 2 ДГ126-02П Винтовой клеммный блок
девять J1 1 M1X2 Штекерный разъем o
монтажные отверстия
фоторезистор

Как это работает?

Эта система работает, измеряя интенсивность света в окружающей среде. Датчик, который можно использовать для обнаружения света, — это LDR. Это дешево, и вы можете купить его в любом местном или интернет-магазине электроники.

LDR излучает аналоговое напряжение при подключении к VCC (5 В), величина которого изменяется прямо пропорционально интенсивности света, проходящего через него. То есть, чем больше интенсивность света, тем больше соответствующее напряжение от LDR.

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

Когда в окружающей среде или на ее поверхности достаточно света, преобразованные цифровые значения, считываемые LDR через Arduino, будут в диапазоне 800-1023.

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

Соединение Arduino и LDR датчика

Во-первых, вам нужно подключить LDR к контакту 0 аналогового входа Arduino. Для этого нужно использовать настройку делителя напряжения. Схема подключения Arduino показана ниже.

Одна ножка LDR подключена к VCC (5 В) на Arduino, а другая — к аналоговому выводу 0 на Arduino. Резистор 100 кОм также подключен к той же ножке и заземлен.

Код проекта для настройки датчика движения

Загрузите или скопируйте следующий код в IDE Arduino и загрузите его на плату Arduino.

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

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

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

  • Arduino UNO — одна из разновидностей плат Arduino;
  • Блок реле SRD-12VDC-SL-C;
  • Резистор 10к;
  • Фоторезистор (действует как датчик света);
  • Arduino IDE — программа для загрузки микрокода на микроконтроллер Arduino;
  • Лампочка подключена к сети 220 вольт.

Адаптивные светильники

Первым шагом является сборка схемы, показанной ниже, с использованием этих компонентов.

Схема подключения с адаптивным освещением

Этот код не предназначен для включения нашей лампочки. С помощью этого кода мы протестируем наш датчик освещенности. Итак, давайте загрузим этот код в Arduino UNO и откроем «Монитор портов».

Дверной монитор

В «Port Monitor» вы можете видеть, что мы получаем значения от фоторезистора, что означает, что он работает нормально. Пришло время загрузить базовый код для автоматического управления освещением. Для этого вставьте этот код в IDE Arduino:
Принцип работы этого скетча основан на условной постановке, в которой выполняется условие «s2 <700». Это условие означает, что если значение датчика меньше 700, свет включается, а если значение больше 700, свет выключается. Пример показывает, насколько просто создать адаптивную систему автоматического освещения.

Управление светом при помощи датчика движения

Следующий шаг — система автоматического выключения света. Чтобы управлять освещением в комнате, нам нужно добавить в схему реле.

Мы будем использовать релейный модуль с защитой на основе оптической развязки, о которой мы уже говорили в одном из уроков (урок по реле).

Внимание! Эта схема включает лампу от сети 220 вольт. Перед подключением схемы к домашней электросети рекомендуется семь раз проверить все соединения.

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

вы можете изменить дизайн так, чтобы в зависимости от уровня освещения менялась яркость светодиода. Мы добавим в алгоритм следующие изменения:

  • Мы будем изменять яркость лампочки через ШИМ, отправляя значения от 0 до 255 на вывод со светодиодом через analogWrite.
  • Чтобы преобразовать цифровое значение уровня освещенности от датчика освещенности (от 0 до 1023) в ШИМ-диапазон яркости светодиода (от 0 до 255), мы будем использовать функцию map().

В случае другого способа подключения, при котором сигнал с аналогового порта пропорционален степени освещенности, необходимо будет дополнительно «инвертировать» значение, максимально вычитая его:

Подключение реле к Arduino

Реле представляет собой электромеханический переключатель. Его можно использовать для включения / выключения устройства в режиме AC / DC. Когда Arduino подает высокое напряжение (5 В) на реле, оно включает его (переключатель включен), в противном случае оно остается выключенным.

В этом проекте мы использовали реле 5D SPDT (один полюс, двухсторонний — один полюс, два направления). Один вывод катушки реле подключен к цифровому выводу 2 Arduino, а другой — к GND.

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

Читайте также: Беспаечная макетная плата для Ардуино: как пользоваться для монтажа

Оцените статью
Блог про Arduino