Как подключить фоторезистор к Arduino. Для чего нужен делитель напряжения при подключении. Какой код использовать для считывания данных с фоторезистора. Где можно применить фоторезистор в проектах на Arduino.
Что такое фоторезистор и как он работает
Фоторезистор — это электронный компонент, сопротивление которого меняется в зависимости от интенсивности падающего на него света. Чем ярче освещение, тем ниже сопротивление фоторезистора.
Основные характеристики фоторезистора:
- Сопротивление в темноте: 200-500 кОм
- Сопротивление при ярком свете: 2-5 кОм
- Время реакции на изменение освещенности: 20-30 мс
- Максимальное напряжение: 100-150 В
- Рабочая температура: -30…+70°C
Фоторезисторы широко применяются в различных устройствах автоматики для определения уровня освещенности. Их преимущества — низкая стоимость, простота использования, малые размеры.
Схема подключения фоторезистора к Arduino
Для подключения фоторезистора к Arduino используется схема делителя напряжения с дополнительным резистором. Это позволяет преобразовать изменение сопротивления фоторезистора в изменение напряжения, которое можно измерить аналоговым входом Arduino.
Типовая схема подключения выглядит так:
- Один вывод фоторезистора подключается к питанию +5В
- Второй вывод фоторезистора и один вывод резистора 10 кОм соединяются и подключаются к аналоговому входу Arduino (например, A0)
- Второй вывод резистора 10 кОм подключается к земле GND
При такой схеме напряжение на аналоговом входе будет меняться от 0В до 5В в зависимости от освещенности фоторезистора.
Код для считывания данных с фоторезистора
Базовый скетч для считывания значений с фоторезистора и вывода их в монитор порта:
const int photoResistorPin = A0; // Пин, к которому подключен фоторезистор
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(photoResistorPin);
Serial.println(sensorValue);
delay(100);
}
Этот код считывает аналоговое значение с пина A0 каждые 100 мс и выводит его в монитор порта. Значения будут в диапазоне от 0 до 1023.
Зачем нужен делитель напряжения при подключении фоторезистора
Возникает вопрос — почему нельзя подключить фоторезистор напрямую к аналоговому входу Arduino без дополнительного резистора? Есть несколько причин:
- Сопротивление фоторезистора даже при ярком свете остается довольно высоким (несколько кОм). При прямом подключении падение напряжения на нем будет незначительным.
- Диапазон изменения сопротивления фоторезистора очень широкий — от сотен Ом до мегаОм. Без делителя напряжения сложно получить линейную зависимость выходного сигнала.
- Делитель напряжения позволяет настроить диапазон выходного сигнала под конкретную задачу, подобрав номинал постоянного резистора.
Таким образом, делитель напряжения позволяет получить более стабильный и удобный для измерения сигнал с фоторезистора.
Применение фоторезистора в проектах Arduino
Фоторезистор можно использовать во многих интересных проектах на базе Arduino:
- Автоматическое включение освещения при наступлении темноты
- Управление яркостью подсветки дисплея в зависимости от внешнего освещения
- Детектор препятствий для роботов (по изменению отраженного света)
- Измеритель уровня освещенности
- Детектор дыма (по ослаблению светового потока)
- Автоматические шторы, реагирующие на освещенность
Фоторезистор — простой, но очень полезный датчик для проектов умного дома и робототехники на Arduino. Его легко подключить и использовать даже начинающим.
Калибровка фоторезистора для точных измерений
Для получения точных измерений освещенности с помощью фоторезистора необходимо провести его калибровку. Это позволит преобразовать «сырые» значения АЦП в реальные единицы освещенности — люксы.
Процесс калибровки включает следующие шаги:
- Измерение значений АЦП при разных уровнях освещенности с помощью люксметра
- Построение калибровочной кривой
- Аппроксимация кривой математической функцией
- Реализация функции преобразования в коде Arduino
Пример кода с калибровочной функцией:
float mapfloat(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } float getLux(int rawADC) { float Vout = float(rawADC) * (5.0 / 1023.0); float RLDR = (10000.0 * (5.0 - Vout))/Vout; float lux = mapfloat(RLDR, 1000.0, 11000.0, 250.0, 0.0); return lux; } void loop() { int rawValue = analogRead(A0); float lux = getLux(rawValue); Serial.print("Освещенность: "); Serial.print(lux); Serial.println(" люкс"); delay(1000); }
После калибровки фоторезистор может использоваться как полноценный датчик освещенности.
Улучшение точности измерений с фоторезистором
Для повышения точности и стабильности измерений с помощью фоторезистора можно применить следующие приемы:
- Использование усредненных показаний — считывание нескольких значений и вычисление среднего
- Применение медианного фильтра для устранения выбросов
- Компенсация температурной зависимости с помощью дополнительного датчика температуры
- Экранирование фоторезистора от электромагнитных помех
- Использование стабилизированного источника опорного напряжения вместо 5В от Arduino
Пример кода с усреднением и медианным фильтром:
#include
MedianFilter medianFilter(5);
int getFilteredValue() {
int sum = 0;
for(int i=0; i<10; i++) {
int raw = analogRead(A0);
sum += medianFilter.in(raw);
delay(10);
}
return sum / 10;
}
void loop() {
int filteredValue = getFilteredValue();
float lux = getLux(filteredValue);
Serial.println(lux);
delay(1000);
}
Такой подход позволит значительно повысить качество измерений с помощью фоторезистора.
Шановні клієнти! У зв'язку з перебоями у енергопостачанні, в роботі нашого магазину можливі тривалі перебії й неможливість оплати замовлень карткою.
|
"Подключение фоторезистора к плате Ардуино" Урок № 2
Этот урок посвящён подключению Фоторезистора к плате Ардуино Нано.
Мы продолжаем курс обучения Ардуино для начинающих.
Более подробно про фоторезистор можно прочитать в статье «Фоторезистор 5506»
и посмотреть видео на канале YouTube
Предыдущие уроки можно посмотреть здесь.
Урок № 0 - "Введение в программирование Ардуино"
Урок № 0.5 - "Продолжение вводного урока."Первое подключение Ардуино к компьютеру"
Урок № 1 - "Пишем свой первый скетч"
Фоторезистор — полупроводниковый прибор, изменяющий величину своего сопротивления при попадании на него света. Чем ярче свет, тем меньше сопротивление.
Технические характеристики
- Фоторезистор модель: GL5506
- Максимальное напряжение: 150 Вольт
- Максимальная потребляемая мощность: 100 мВт
- Температура окружающей среды (° C): -30 ... +70
- Спектральная чувствительность: 540 нм
- Световое сопротивление (10Lux): 2-5 кОм
- Темновое сопротивление: 0,2 мОм = 200 кОм
- Время отклика мин-макс: 20-30 мс
- Размеры: 5. 0х4.3 мм
Преимущества и недостатки
Преимущества
Они маленькие, недорогие, мало энергозатратные, легки в использовании, практически не подвержены износу.
Недостатки
Главный недостаток – это чувствительность к спектру. В зависимости от спектра падающего света сопротивление меняется очень сильно.
Низкая скорость реакции на изменение освещённости, так же очень сильный недостаток. При мигании света датчик просто не успевает среагировать. При большой частоте мигания, фоторезистор вообще не сработает.
Подключение
Фоторезистор работает по схеме делителя напряжения с дополнительным сопротивлением. Одно плечо изменяется от уровня освещённости, второе – подаёт напряжение на аналоговый вход. В Arduino – это напряжение преобразуется в цифровые данные через АЦП (Аналогово-Цифровой Преобразователь). Подключается к аналоговому порту Arduino. Для измерения значений уровня освещенности или к цифровому, если нужно определить лишь наличие или отсутствие света.
В зависимости от того, подключен фоторезистор (к плюсу или земле) будет подаваться повышенное или уменьшенное напряжение.
Если вывод фоторезистора подключена к земле, то максимальное значение напряжения будет соответствовать темноте, а минимальное – освещённости.
При подключении к + питания, значения изменятся на противоположные.
Меняя значение резистора, мы можем устанавливать значение чувствительности в «темную» или «светлую» сторону.
10 кОм даст быстрое переключение наступления света.
1 кОм более точно определяет высокий уровень освещенности.
Можно поставить переменный резистор и настроить точное значения срабатывания.
Схема делителя напряжения включает в себя входной источник напряжения и два резистора.
Пример работы делителя напряжения на фоторезисторе.
Допустим, сопротивление фоторезистора изменяется от 1 кОм (при освещении) и до 10 кОм (при полной темноте). Если мы дополним схему постоянным сопротивлением примерно 5,6 кОм, то мы можем получить широкий диапазон изменения выходного напряжения при изменении освещенности фоторезистора.
Примеры.
знакомств | Провод | Arduino для светозависимого фоторезистора (LDR)
- Дом ▸
- знакомства ▸
- Датчики ▸
- Легкий ▸
- Подключение Arduino к датчику LDR
LDR (светозависимый резистор) также известен как фоторезистор. Это простое устройство, которое имеет свойство изменять свое сопротивление в зависимости от количества света, попадающего на него. Его сопротивление будет ниже, если на него посветить светом. Когда свет убран, сопротивление будет максимальным.
LDR можно использовать для определения дня и ночи для управления каким-либо устройством. Если вы хотите знать, гаснет ли свет, когда холодильник дверь закрывается, тогда для ответа на этот вопрос можно использовать LDR с Arduino. LDR не даст вам точного показания количества света, но это позволит вам обнаружить переход между количеством доступного света.
Изображения
Примечание. Изображения на этой странице представлены не в масштабе.
Список деталей
- Плата Arduino
- ЛДР. Их можно приобрести с различными диапазонами сопротивления. Подробности смотрите ниже.
- Резистор 10K
- Провода для подключения макетной платы
- USB-кабель для Arduino
Принципиальная схема
Самый простой способ использования LDR — конфигурация с делителем напряжения. Напряжение, которое появляется на аналоговом входе, будет меняться в зависимости от количество света, попадающего на LDR. LDR можно подключить либо к 5В, либо к 3,3В. LDR появляется как переменный резистор в схеме ниже. Мы также используем подтягивающий резистор 10K (R1).
Схема подключения LDR к плате Arduino.
Для подключения датчика требуется только LDR и понижающий резистор. Мы используем подтягивающий резистор 10K (R1). Мы можем подключиться к контакту питания 5 В или 3,3 В. на Ардуино. Это просто означает, что выходное напряжение на аналоговый вход при использовании контакта питания 3,3 В будет ниже.
Макетная схема подключения LDR к плате Arduino
Примечание. Изображения на этой странице представлены не в масштабе.
Программное обеспечение
Для тестирования этого датчика мы можем использовать образец эскиза, показанный ниже. Вы можете скачать файл эскиза. Он считывает LDR каждые 0,5 секунды и выводит результаты на консоль компьютера, подключенного к USB-порту на Arduino. Мы не требуют никаких библиотек для этого скетча. Чем меньше отображаемое значение, тем меньше света попадает на датчик. Чем больше света попадает на датчик, тем выше будет значение.
Мы используем аналоговый контакт A0 для подключения к датчику. Если вы используете другой аналоговый контакт, вам нужно будет изменить номер контакта, определенный в строке 9 кода скетча.
Вывод эскиза
Лицензия
CC BY-NC-SA 3.0
Последние обновления
Проект метеостанции на Arduino
Руководство по подключению анемометра Дэвиса к Arduino
6. Зачем использовать делитель напряжения с фоторезистором?
Руководство по схемам серии
Распространенный вопрос: «Почему бы не подключить фоторезистор напрямую к одному из аналоговых контактов Arduino, а не через делитель напряжения?».
Делители напряжения обычно сбивают с толку людей, разбирающихся в новой электронике.
Возьмем для примера фоторезистор.
Распространенный вопрос: «Почему бы не подключить фоторезистор напрямую к одному из аналоговых контактов Arduino, а не через делитель напряжения?»
Это справедливый вопрос.
Напряжение, которое Arduino измеряет на своем аналоговом выводе, зависит от импеданса (сопротивления) фоторезистора. Поскольку импеданс фоторезистора зависит от интенсивности света, мы должны иметь возможность использовать прямое подключение вместо делителя напряжения.
Но это так не работает.
Эксперимент
Если у вас есть под рукой мультиметр, проведите простой эксперимент.
Подсоедините контакты фоторезистора к электродам мультиметра. Настройте мультиметр на измерение сопротивления (омметр). Это позволит вам измерить импеданс (сопротивление) фоторезистора.
Проведите несколько измерений при различных условиях освещения. Вы увидите, что импеданс меняется, но всегда очень высок. Для большинства распространенных фоторезисторов измеренное сопротивление может варьироваться от 100 кОм до 1 МОм.
Из-за этого высокого импеданса, если вы подключите фоторезистор, скажем, между выводом Arduino 5V и A0, ток, который будет протекать через этот компонент, будет очень мал. В результате падение напряжения на фоторезисторе будет едва заметно для Arduino.
На контакте A0 Arduino будет измерять близкое к 5 В независимо от того, сколько света попадает на фоторезистор.
Это не очень полезно!
Вот измерение импеданса фоторезистора, направленного на источник света. Оно составляет около 10 кОм, что больше подходит для подтягивающего или подтягивающего резистора. При 5 В вы не получите большого тока от этого устройства (в данном случае всего ~ 0,0005 А).
Моделирование
Я использовал симулятор схемы, чтобы сравнить два способа подключения фоторезистора к Arduino. Без делителя напряжения (слева) и с делителем напряжения (справа). Симулятор позволяет мне тестировать фоторезистор при произвольном уровне освещенности.
При трех различных уровнях освещенности фоторезистора (около 1 клк — это интенсивность света в слабоосвещенной комнате) измеренное напряжение на левой цепи не отклонялось от 5 В. С правой стороны, с постоянным резистором делителя напряжения, мы получили три разных показания.
Как видите, с помощью подходящего делителя напряжения фоторезистор становится полезным датчиком интенсивности света.
С левой стороны также видно, что независимо от тока, протекающего через фоторезистор, вольтметр измеряет напряжение на источнике постоянного тока, которое постоянно на уровне 5В. Просто нет другого способа подключить фоторезистор так, чтобы он мог работать сам по себе и по-прежнему давать значимые показания пропорционально интенсивности падающего на него света. Обратите внимание, что это идеальная схема без какого-либо импеданса в проводах. В реале сопротивление в проводах есть, и схема больше похожа на такую:
Полное сопротивление проводов составляет около 0,11 Ом для соединительного провода длиной 10 см. Это может дать показания напряжения 4,998 В на вольтметре в цепи слева. И это показание не будет сильно меняться при изменении импеданса фоторезистора, поскольку этот импеданс по сравнению с ним очень велик.
Заключение
Используя постоянный резистор, который намного меньше минимального импеданса датчика, мы можем создать падение напряжения, которое намного больше зависит от меньшего компонента, но все еще зависит от более крупных компонентов. (больше, с точки зрения импеданса).
Еще одно преимущество заключается в следующем: поскольку фоторезисторы разных производителей имеют разные характеристики, использование фиксированного резистора в конфигурации делителя напряжения позволяет уменьшить влияние этих отклонений. Поэтому наша схема становится менее зависимой от особенностей фоторезистора.
Программа подписки Tech Explorations
Подпишитесь и получите немедленный доступ ко всем нашим видеокурсам.
Благодаря каталогу из более чем 25 видеокурсов премиум-класса (и их число постоянно растет), эта подписка дает вам удивительный ресурс для повышения вашего обучения.
Просмотрите эту статью
Эксперимент
Моделирование
Заключение
Перейти к другой статье
Впервые на Arduino?
Arduino Step by Step Getting Started — наш самый популярный курс для начинающих.
Этот курс содержит высококачественное видео, мини-проекты и все необходимое для изучения Arduino с нуля. Мы поможем вам начать работу и на каждом этапе с помощью первоклассных инструкций и нашего супер-полезного пространства для обсуждения курсов.
Узнать больше
Закончили с основами? Ищете более сложные темы?
Arduino Step by Step Getting Serious — это наш комплексный курс Arduino для тех, кто готов перейти на новый уровень.
Узнайте о Wi-Fi, BLE и радио, двигателях (серводвигателях, двигателях постоянного тока и шаговых двигателях с различными контроллерами), ЖК-дисплеях, OLED- и TFT-экранах с кнопками и сенсорными интерфейсами, управлении большими нагрузками, такими как реле и источники света, и о многом, НАМНОГО больше.