Лестницы. Входная группа. Материалы. Двери. Замки. Дизайн

Лестницы. Входная группа. Материалы. Двери. Замки. Дизайн

» » Как соединить фоторезистор сопротивление и светодиод. Схема фотореле и правила подключения. Схема датчика освещения на фоторезисторе и реле

Как соединить фоторезистор сопротивление и светодиод. Схема фотореле и правила подключения. Схема датчика освещения на фоторезисторе и реле

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

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

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

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

На фото ниже, показана собранная схема на макетной плате. Напряжения 0В и 5В берутся с Arduino. Ножка А0 используется как вход АЦП.

Ниже показан скетч Arduino. В данном уроке мы просто включаем и выключаем LED, который встроен в плату Arduino. Более яркий LED-светодиод, вы можете подключить к ноге 13 (через резистор ~220 Ом). Если будете подключать более мощную нагрузку, такую как лампу накаливания, то ее следует подключать через реле или тиристор.

В коде программы есть закомментированные участки, они служат для отладки. Можно будет контролировать значение АЦП (от 0 до 1024). Также, необходимо в коде изменить значение 500 (порог включения и выключения) на то, которое вы подберете опытным путем, изменяя освещенность.

/* ** Ночник ** ** www.hobbytronics.co.uk */ int sensorPin = A0; // устанавливаем входную ногу для АЦП unsigned int sensorValue = 0; // цифровое значение фоторезистора void setup() { pinMode(13, OUTPUT); Serial.begin(9600); // старт последовательного вывода данных (для тестирования) } void loop() { sensorValue = analogRead(sensorPin); // считываем значение с фоторезистора if(sensorValue<500) digitalWrite(13, HIGH); // включаем else digitalWrite(13, LOW); // выключаем // Для отладки раскомментируйте нижеследующие строки //Serial.print(sensorValue, DEC); // вывод данных с фоторезистора (0-1024) //Serial.println(""); // возврат каретки //delay(500); }

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

У нас 8 светодиодов, они установлены так, что слева короткая ножка это минус, справа длинная ножка это плюс. Так они все установлены, в схеме использован один резистор на 10 килоом, я его брал из набора Arduino Kit , и используется 8 подключенных к плюсовому контакту светодиода сопротивлений на 220ом, так оно подключено.


Использовано 8 чёрных проводов это минусовые, и зелёные 8 штук – пины управления от двенадцатого до пятого. В процессе отладки крайний черный заменил на зеленый, но об этом позже.

Фоторезистор здесь, рядом с ним резистор на 10килоом, синяя перемычка идёт к минусу, оранжевый подключается одним концом в среднюю точку, между резистором и фоторезистором, другим концом в плату Arduino , в А0 (аналоговый пин).

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

Создадим новый проект, и приступим к написанию, объявим константы, несколько штук, пусть будет тип int , это будет количество выводов, поскольку светодиодов в схеме 8 штук. Так будет указано, сколько светодиодов использовали в схеме.

const int NbrLEDs = 8;

Сделаем массив с номерами пинов, задействуем 5 6 7 8 9 10 11 12 цифровые разъёмы, укажем номер пина на котором снимается уровень освещённости, объявим переменную для фоторезистора, значение сенсора и также объявим уровень освещённости, чтобы можно было делать разбивку их по пинам.

const int ledPins = { 5, 6, 7, 8, 9, 10, 11, 12}; const int photocellPin = A0; int sensorValue = 0; int ledLevel = 0;

В подпрограмме setup напишем цикл, в котором чтобы не присваивать каждому значению исходящего через pinMode , пройдём в цикле по всем пинам присвоим им значения в pinmode из массива и каждому пину присвоим значение OUTPUT .

void setup() { for (int led = 0; led < NbrLEDs; led++) { pinMode(ledPins, OUTPUT); } }

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

pinMode(5, OUTPUT); pinMode(6, OUTPUT);

В loop получим значение сенсора, считав через analogRead из пина A0 .

Далее, сделаем разбивку значение сенсор, используя функцию map получаем значение сенсора, и исходя из уровня освещенности, при чувствительности от 300 до максимального значения 1023 , будет распределяться по 8 пинам, которая объявлены выше.

Смотрите так же видео Фоторезистор и светодиоды на Arduino - (видео) , ссылка откроется в новой вкладке.

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

Если же нет, запишем в него отсутствие напряжения, и светодиод не будет гореть.

void loop() { sensorValue = analogRead(photocellPin); ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); for (int led = 0; led < NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Выравниваем код через комбинацию клавиш ctrl+T и давайте теперь посмотрим, что получится, запустим на проверку, сохраним скетч.

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


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


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


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

В скетче получается распределение освещенности от 300 до 1023 (максимального значения), попытка изменить начальный порог на 0 - никакого результатов не даёт.

Но если распределяем на 8 частей вот это вот всё значение, то тут пригодится калькулятор, получается, либо сопротивление на 10килоом даёт погрешность какую-то, нужно 1023 разделить на 8, получаем практически 128, если брать правильно, то 1024 разделить на 8, это и есть 128.

Теперь нужно от 1023 вычесть 128, поставить сюда значение 895, тогда по логике вещей должно быть всё нормально. Загрузим и посмотрим, что изменится.

void loop() { sensorValue = analogRead(photocellPin); ledLevel = map(sensorValue, 0, 895, 0, NbrLEDs); for (int led = 0; led < NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

Сейчас горят все светодиоды, попробуем перекрыть освещенность, или давайте отключим…

Стартовое значение всё равно надо вернуть 300, поскольку подается на эти три первых светодиода питания. Давайте изменим в скетче 0 на 300, как было, было это сделано не просто так, перезалью скетч и посмотрим, что изменится на этот раз…

void loop() { sensorValue = analogRead(photocellPin); ledLevel = map(sensorValue, 300, 895, 0, NbrLEDs); for (int led = 0; led < NbrLEDs; led++) { if (led < ledLevel) { digitalWrite(ledPins, HIGH); } else { digitalWrite(ledPins,LOW); } } }

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


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


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


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

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

Необходимые компоненты

  • Макетная плата;
  • Резистор на 220 Ом ;
  • Резистор на 10 кОм ;
  • Фоторезистор с номинальным сопротивлением 200кОм ;
  • Один красный светодиод;
  • Провода-перемычки;

Схема

Соедините 9 -ый цифровой вывод Arduino с одним из выводов 220 Ом -ного резистора, другой вывод этого резистора соедините с анодом светодиода(длинная ножка), а катод светодиода с землей(контакт GND на плате Arduino). Контакт 5V платы Arduino соедините с одним из выводов фоторезистора, а другой вывод соедините с 0 -ым аналоговым контактом Arduino и с одним из выводов 10кОм -го резистора, другой вывод резистора соедините с землей(контакт GND на плате Arduino).

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

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

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

Код

Загрузите скетч, показанный ниже, в плату Arduino .

    #define RLED 9 //Красный светодиод подключаем к 9-му цифровому контакту с поддержкой ШИМ

  1. int val = 0 ; //Переменная для хранения считываемого значения с датчика

  2. void setup()

    pinMode(RLED, OUTPUT) ; //Устанавливаем 9 вывод как выход

  3. void loop()

    val = analogRead(LIGHT) ; //считываем значение с аналогового входа

    val = map(val, MIN_LIGHT, MAX_LIGHT, 255 , 0 ) ; //преобразуем диапазон считываемых значений

    val = constrain(val, 0 , 255 ) ; //"определяем" области допустимых значений

    analogWrite(RLED, val) ; //управляем светодиодом

  • Примечание: В данном примере используется фоторезистор с номинальным сопротивлением в 200кОм . Если у вас фоторезистор на другой номинал, возможно вам придется изменить минимальное(MIN_LIGHT) и максимальное(MAX_LIGHT) значение освещенности.

Код для корректировки параметров

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

    #define RLED 9 //Красный светодиод подключаем к 9-му цифровым контактом с поддержкой ШИМ

    #define LIGHT 0 //Фоторезистор подключаем к 0-му аналоговому контакту

    #define MIN_LIGHT 200 //Минимальное значение освещенности

    #define MAX_LIGHT 900 //Максимальное значение освещенности

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

Фоторезисторы чаще всего используются для определения наличия или отсутствия света или для измерения интенсивности света. В темноте, их сопротивление очень высокое, иногда доходит до 1 МОм, но когда датчик LDR подвергается воздействию света, его сопротивление резко падает, вплоть до нескольких десятков ом в зависимости от интенсивности света.

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

Определение: Фоторезистор — светочувствительный элемент, чье сопротивление уменьшается при интенсивном освещении и увеличивается при его отсутствии.

Характеристики фоторезистора

Виды фоторезисторов и принцип работы

На основании материалов, используемых при производстве, фоторезисторы могут быть разделены на две группы: с внутренним и внешним фотоэффектом. В производстве фоторезисторов с внутренним фотоэффектом используют нелегированные материалы, такие как кремний или германий.

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

Фоторезисторы с внешним фотоэффектом производятся из материалов, с добавлением примеси, называемой легирующая добавка. Легирующая добавка создает новую энергетическую зону поверх существующей валентной зоной, заселенную электронами. Этим электронам требуется меньше энергии, чтобы совершить переход в зону проводимости благодаря меньшей энергетической щели. Результат этого – фоторезистор чувствителен к различным длинам волн света.

Несмотря на все это, оба типа демонстрируют уменьшение сопротивления при освещении. Чем выше интенсивность света, тем больше падает сопротивление. Следовательно, сопротивлением фоторезистора является обратная, нелинейная функция интенсивности света.

Фоторезистор на схемах обозначается следующим образом:

Чувствительность фоторезистора от длины волны

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

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

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

Чувствительность фоторезистора

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

Если интенсивность светового потока находиться на стабильном уровне, то сопротивление по-прежнему может существенно изменяться вследствие изменения температуры, поскольку LDR также чувствительны и к изменениям температуры. Это качество фоторезистора делает его непригодным для точного измерения интенсивности света.

Инертность фоторезистора

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

Для того чтобы сопротивление упало до минимума при полном освещении необходимо около 10 мс времени, и около 1 секунды для того, чтобы сопротивление фоторезистора возросло до максимума после его затемнения.

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

Конструкция и свойства фоторезистора

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

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

Спектральная кривая отклика сульфида кадмия совпадает с человеческим глазом. Длина волны пиковой чувствительности составляет около 560-600 нм, что соответствует видимой части спектра. Следует отметить, что устройства, содержащие свинец или кадмий не соответствуют RoHS и запрещены для использования в странах, которые придерживаются законов RoHS.

Примеры применения фоторезисторов

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

Фотореле для уличного освещения

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

При освещении фоторезистора (R1), его сопротивление уменьшается, падение напряжения на переменном резисторе R2 будет высоким, вследствие чего транзистор VT1 открывается. Коллектор VT1 (BC107) соединен с базой транзистора VT2 (SL100). Транзистор VT2 закрыт и реле обесточено. Когда наступает ночь, сопротивление LDR увеличивается, напряжение на переменном резисторе R2, падает, транзистор VT1 закрывается. В свою очередь, транзистор VT2 открывается и подает напряжение на реле, которое включает лампу.

Фоторезистор
ИМХО вымирающий вид. Последний раз я его видел еще в детстве. Обычно представляет собой такой металический кругляк со стеклянным окошком, в котором видна этакая . При освещении его сопротивление падает, правда незначительно, раза в три четыре.

Фототранзистор
Последнее время я на них натыкаюсь постоянно, неиссякаемый источник фототранзисторов — пятидюймовые дисководы. Последний раз я, по цене грязи, надыбал на радио барахолке штук 5 платок от дисковертов, там светотранзисторы стоят напротив дырок контроля записи и вращения дискеты. Еще сдвоенный фототранзистор (а может и фотодиод, как повезет) стоит в обычной шариковой мышке.
Выглядит как обычный светодиод, только корпус прозрачный. Впрочем, светодиоды тоже такие же бывают так что перепутать кто из них кто раз плюнуть. Но это не беда, партизан легко вычисляется обычным мультиметром. Достаточно включить омметр между его эмитером и коллектором (базы у него нет) и посветить на него, как его сопротивление рухнет просто катастрофически — с десятков килоом до считанных ом. Тот который у меня в детекторе вращения шестерен в роботе меняет свое сопротивление с 100кОм до 30 Ом. Работает фототранзистор подобно обычному — держит ток, но в качестве управляющего воздействия тут не ток базы, а световой поток.

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

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

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

Подключение
Теперь пора показать как это подключить к микроконтроллеру. С фоторезистором все понятно, тут заморочек нет никаких — берешь и подцепляешь как по схеме.
С фотодиодом и фототранзистором сложней. Надо определить где у него анод/катод или эмитер/коллектор. Делается это просто. Берешь мультиметр, ставишь его в режим прозвонки диодов и цепляешься на свой датчик. Мультиметр в этом режиме показывает падение напряжения на диоде/транзисторе, а падение напряжения тут в основном зависит от его сопротивления U=I*R. Берешь и засвечиваешь датчик, следя за показаниями. Если число резко уменьшилось, значит ты угадал и красный провод у тебя на катоде/коллекторе, а черный на аноде/эмитторе. Если не изменилось, поменяй выводы местами. Если не помогло, то либо детектор дохлый, либо ты пытаешься добиться реакции от светодиода (кстати, светодиоды тоже могут служить детекторами света, но там не все так просто. Впрочем, когда будет время я покажу вам это технологическое извращение).


Теперь о работе схемы, тут все элементарно. В затемненном состоянии фотодиод не пропускает ток в обратном направлении, фототранзистор тоже закрыт, а у фоторезистора сопротивление весьма высоко. Сопротивление входа близко к бесконечности, а значит на входе будет полное напряжение питания aka логическая единица. Стоит теперь засветить диод/транзистор/резистор как сопротивление резко падает, а вывод оказывается посажен наглухо на землю, ну или весьма близко к земле. Во всяком случае сопротивление будет куда ниже 10кОмного резистора, а значит напряжение резко пропадет и будет где то на уровне логического нуля. В AVR и PIC можно даже резистор не ставить, вполне хватит внутренней подтяжки. Так что DDRx=0 PORTx=1 и будет вам счастье. Ну а обратывать это как обычную кнопку. Единственная сложность может возникнуть с фоторезистором — у него не настолько резко падает сопротивление, поэтому до нуля может и не дотянуть. Но тут можно поиграть величиной подтягивающего резистора и сделать так, чтобы изменения сопротивления хватало на переход через логический уровень.

Если надо именно измерять освещенность, а не тупо ловить светло/темно, то тогда надо будет подцеплять все на АЦП и подтягивающий резистор делать переменным, для подстройки параметров.

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

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