0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

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

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

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

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

Вариант 1

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

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

У нас будет два варианта исполнения. Теоретический и конкретный альтернативный, уж, простите, за аналогии.

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

Чтобы было удобнее подключать Аrduino симистор, потребуется несколько клемм, но можно обойтись и без них. А для сборки всей схемы необходимо спроектировать и сделать макетную плату. Удобнее всего использовать 3-Д принтер, но можно создать её и старым химическим способом.

В итоге у нас получится Аrduino диммер 220 В, который будет разрывать соответствующую сеть, а контролировать мы всё будем с помощью оптопары, для чего нам потребуется стандартная мигалка. Таким образом, выйдет, что сама плата останется развязанной с помощью сетевого напряжения, что поспособствует безопасности инженера и дальнейших пользователей.

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

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

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

Вариант 2

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

  • 0 для ВЫКЛЮЧЕНИЯ
  • 1 для яркости 25%
  • 2 для яркости 50%
  • 3 для яркости 75%
  • 4 для 100% яркости

Мы разработаем схему диммера с импульсной волной (PWM), которая будет использовать IRF830A в диодном мосте, который используется для управления напряжением на лампе с импульсной модуляцией (PWM). Напряжение источника питания для управления затвором подается с напряжением на полевом транзисторе с полевым эффектом из оксида металла (MOSFET).

Материалы

Вариант 1

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

  1. Детектор для отслеживания пересечений с нулем. Для этой части проекта потребуется H11AA11 с парой резисторов на 10кОм, а также мостовой выпрямитель на 400 Вольт и ещё пара резисторов на 30 кОм. Для удобства стоит прикупить и 1 разъем, а также стабилизатор на 5.1 Вольт.
  2. Драйвер для лампы. Здесь достаточно будет простого светодиода, а также MOC3021 с резистором 220 Ом (можно и больше), а еще резистором на 470 Ом и 1 кОм, и один симистор, подойдет версия TIC Также можете докупить ещё один разъем.
  3. Вспомогательные элементы. Конечно, при спайке не обойтись без проводов и куска текстолита 6 на 3 см.
Читайте так же:
Как регулировать параметры экрана

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

Вариант 2

Для нашего второго альтернативного варианта нам понадобятся:

1x — 330 Ом резистор
2x — 33К резистора
1x — 22К резистор
1x- 220 Ом резистор
4x — 1N4508 диоды
1x — 1N4007 диоды
1x — Диод Zener 10V.4W
1x — Конденсатор 2.2uF / 63V
1x — Конденсатор 220nF / 275V
1x — Arduino / Ардуино
1x — Оптрон: 4N35
1x — МОП-транзистор: IRF830A
1x — Лампа: 100 Вт
1x — Питание 230 В
1x — Розетка
1x — Паяльная плата и паяльный комплект

Создание платы

Мы рассмотрим самый бюджетный вариант – вытравку платы в соляном растворе, но прежде на неё необходимо будет наклеить проект, который вы можете создать в программе по желанию. Дальнейшая сборка не несёт никаких трудностей и секретов, необходимо будет воспользоваться панельками под оптроны и мостовые выпрямители. Также, при написании текста, для разметки элемента, его стоит делать зеркальным, так как при ЛУТе, отпечатавшийся рисунок примет правильный вид на меде, и перенесется так, что вы без проблем прочитаете все необходимые данные.

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

Также, при наличии оптрона H11AA11, мостовой выпрямитель можно не использовать, ведь в нем уже имеются два не параллельных диода, а также возможность работы с переменными токами. Совместимость с выводами 4N25 позволяет просто вставить его к припою с двумя перемычками, находящимися между 5 и 7 резистором, на нашей схеме.

Во втором варианте схема будет выглядеть так:

Какая программа необходима для устройства

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

Единственное, что стоит учесть – это использование переменной цикла, её стартовое значение стоит поставить не в 0, а в 1, а максимальный шаг варьируется от 1 до 5. Таким образом, нам будет подходить два вида диапазонов измерения – от 2 до 126, и от 0 до 128.

Код для альтернативного варианта у нас такой:

Технологический процесс сборки

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

Как это выглядит в реальном виде:

Настройка и тестирование устройства

Наш второй вариант работает таким образом (на видео видно как к устройству подносится фонарик):

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

Но напрямую подключать также нельзя, здесь пригодится делитель напряжения в соотношении 1 к 20; дабы не греть лишний раз резисторы, подойдет номинал двести и десять килоОм. После аккуратного подключения устройство можно подсоединить к сети и, наконец, увидеть результаты своих трудов.

Регулятор силы света (диммер) на Arduino и симисторе

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

Читайте так же:
Регулировка камеры на машине

Внешний вид регулятора силы света на Arduino и симисторе

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

На нашем сайте вы можете также посмотреть проекты, в которых использовалась регулировка силы света:

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Оптопара MCT2E (купить на AliExpress).
  3. Оптопара MOC3021 (купить на AliExpress).
  4. Симистор (TRIAC) BT136 (купить на AliExpress).
  5. Понижающий трансформатор (12-0V, 500mA) (купить на AliExpress).
  6. Резисторы 1 кОм, 10 кОм, 330 Ом (купить на AliExpress).
  7. Потенциометр 10 кОм (купить на AliExpress).
  8. Лампа переменного тока с держателем (патроном).
  9. Соединительные провода.

Методика обнаружения перехода через ноль

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

Момент перехода через ноль сигнала переменного тока

Принцип работы симистора

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

Внешний вид, обозначение на схемах и распиновка симистора BT136

Принцип управления симистора переменным током показан на следующем рисунке.

Принцип управления симистора переменным током

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

Частота сигнала переменного тока в нашей сети составляет 50 Гц, соответственно, период сигнала равен 1/f =20 миллисекунд. Значит, половина периода будет равна 10 мс. Поэтому мы можем изменять время t1 на приведенном графике для управления яркостью свечения лампы переменного тока в диапазоне от 0 до 10 мс (10000 мкс).

Оптопара

Внешний вид оптопары MOC3021

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

Схема проекта

Схема регулятора силы света (диммера) на Arduino и симисторе представлена на следующем рисунке.

Схема регулятора силы света (диммера) на Arduino и симисторе

Схема соединения симистора и оптопары показана на следующем рисунке.

Схема соединения симистора и оптопары

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

Соединение симистора и оптопары на перфорированной плате

Оптопару MCT2E и соединения с ней мы также разместили на перфорированной плате и подсоединили ее к понижающему трансформатору.

Оптопара MCT2E и соединения с ней на перфорированной плате

Конструкция всего проекта в сборе выглядит следующим образом:

Конструкция всего проекта в сборе

Объяснение программы для Arduino

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

В самом начале программы нам необходимо объявить используемые глобальные переменные. Симистор у нас подключен к контакту 4 платы Arduino. В переменной dim_val мы будем хранить значение шага диммирования (регулирования силы света), который мы далее будем использовать в программе.

Регулятор яркости системы освещения на трех светодиодных лентах (Arduino UNO)

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

Читайте так же:
Шнур с регулировкой яркости светильника

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

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

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

Для управления используется пульт дистанционного управления марки TOSHIBA SE-R0301 от неисправного DVD-плеера. Но, в принципе, можно использовать любой другой пульт, соответственно внеся изменения в программу.

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

Принципиальная схема

Как уже сказано, это кнопки одинакового размера, расположенные в верхней половине лицевой панели пульта, в три вертикальных ряда.

Соответственно, верхние кнопки («Open», «Display», «Оп/Off») отвечают за выключенное состояние соответствующих светодиодных лент (яркость нулевая), а нижние кнопки («+10», «О», «Search») отвечают за включение соответствующих светодиодных лент на максимальную яркость).

Принципиальная схема регулятора яркости системы освещения на Arduino UNO и трех светодиодных лентах

Рис. 1. Принципиальная схема регулятора яркости системы освещения на Arduino UNO и трех светодиодных лентах.

Промежуточные кнопки, отвечают за промежуточные величины яркости, которые, можно при программировании выбрать произвольно. В данном случае, это уровни 50, 100 и 170 (максимальный уровень 255). Как уже сказано, можно использовать и любые другие этого или другого пульта, или сделать больше ступеней изменения яркости, использовав больше кнопок пульта.

Все это можно сделать несложными изменениями в программе. Этот переключатель — регулятор яркости сделан на основе микроконтроллерной платы ARDUINO UNO.

Использование недорогой готовой платы ARDUINO UNO интересно тем, что это готовый модуль, — небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328. а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и стабилизатор напряжения питания.

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

У платы ARDUINO UNO имеется 14 цифровых портов, от D0 до D13. При этом шесть из них (D3, D5. D6. D9, D10, D11) могут работать как бы в аналоговом режиме, в котором на них присутствует не ноль или единица, а импульсы, широту которых можно задавать от 255-ю ступенями.

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

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

Импульсы с них подаются на затворы полевых транзисторов VT1, VT2, VT3 в стоковых цепях которых включены светодиодные ленты HL1, HL2, HL3, яркость которых и нужно регулировать.

Программа

Программа для ARDUINO UNO на языке C++ приводится в таблице 1, применительно для пульта TOSHIBA SE-R0301. Данная программа требует загрузки библиотеки IRremote.h которая нужна для распознавания команд пульта ДУ. Эта библиотека есть в стандартном наборе программного обеспечения для ARDUINO. у меня версия Arduino 1.6.11.

Далее идет назначение портов В строке:

входным назначен порт D2. На него подается сигнал с выхода интегрального фотоприемника А в строках:

выходными назначены порты D5. D9, D10.

В программе после «case Ох» записаны коды команд, которые формируется при нажатии соответствующей кнопки пульта дистанционного управления. Эти коды соответствуют пульту TOSHIBA SE-R0301 от неисправного DVD-плеера. Можно использовать и другой пульт, но тогда и коды будут другие.

Читайте так же:
Однорычажный смеситель плохо регулирует температуру воды

После поступления соответствующего кода указывается уровень скважности импульсов на соответствующем выходе, например, при нажатии кнопки «1» устанавливается на D5 порту 50-й уровень широты импульсов:

Соответственно, другим кнопкам присвоены другие уровни широты импульсов для управления соответствующими светодиодными лентами (НL1, HL2, HL3).

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

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

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

Таблица 1. Исходный код программы управления тремя светодиодными лентами (часть 1).

Исходный код программы управления тремя светодиодными лентами (часть 1)

регулятор трех лент */

IRrecv irrecv(2); // фотоприемник на порту D2

pinMode(5, OUTPUT); // задание порта D5 как выходного

pinMode(9, OUTPUT); // задание порта D9 как выходного

pinMode(10, OUTPUT); // задание порта D10 как выходного

irrecv.enableIRIn(); // запуск приема команд

analogWrite( 5, 0); // кнопкой OPEN выключено HL1

analogWrite( 5, 50); // кнопкой 1 включено HL1 на 50

analogWrite( 5, 100); // кнопкой 4 включено HL1 на 100

analogWrite( 5, 170); // кнопкой 7 включено HL1 на 170

analogWrite( 5, 255); // кнопкой +10 включено HL1 на все

analogWrite( 9, 0); // кнопкой DISPLAY выключено HL2

analogWrite( 9, 50); // кнопкой 2 включено HL2 на 50

analogHrite( 9, 100); // кнопкой 5 включено HL2 на 100

analogWrite( 9, 170); // кнопкой 8 включено HL2 на 170

analogWrite( 9, 255); // кнопкой 0 включено HL2 на все

analogWrite( 10, 0); // кнопкой ONOFF выключено HL3

Таблица 1 (продолжение). Исходный код программы управления тремя светодиодными лентами (часть 2).

Исходный код программы управления тремя светодиодными лентами (часть 2)

analogWrite( 10, 50); // кнопкой 3 включено HL3 на 50

analogWrite( 10, 100); // кнопкой 6 включено HL3 на 100

analogWrite( 10, 170); // кнопкой 9 включено HL3 на 170

analogWrite( 10, 255); // кнопкой SEARCH включено HL3 на все

Таблица 2. Исходные коды для определения команд пульта.

Исходные коды для определения команд пульта

определение кодов команд пульта */

IRrecv irrecv(2); // фотоприеиник на порту D2

Serial.begin(9600); // задание скорости порта COM

irrecv.enableIRIn(); // запуск приема команды

Serial.println(results.value, HEX); // вывод данных в COM

irrecv.resume(); // прием следующей команды

После загрузки данной программы в микроконтроллер платы ARDUINO UNO, нужно открыть монитор COM-порта, для этого в окне программы Arduino 1.6.11 выбираем «Инструменты» и из выпадающего меню «Монитор порта».

После того как откроется окошко Монитора порта, берем пульт ДУ и нажимаем интересные нам кнопки. В окне Монитора порта будет отображаться код, соответствующий каждой кнопке.

Следует заметить, что может быть такое, что при нажатии каждой кнопки приходит две команды, — сначала код команды, а затем код FFFFFFF. Или даже несколько строк кода FFFFFFF.

Так вот, первое это код команды, который нужно занести в программу в таблице 1 после «case 0х», а вторая строка или строки букв «F» это просто указатель на то, как долго кнопка удержана нажатой, в одном случае. В другом случае может показывать, что кнопку отпустили.

Для нашего случая это несущественно, — важен только код самой команды. А вот с пультами типа RC-5 (для старых телевизоров «Горизонт», «Витязь» и др ) вообще, каждой кнопке будет присваиваться по два кода, которые будут поочередно меняться при каждом нажатии кнопки.

В этом случае нужно будет прописать по две одинаковые команды для каждой из кнопок. Либо мириться с тем. что зачастую для исполнения команды нужно будет нажимать кнопку дважды.

Фоторезистор (Датчик освещённости)

Фоторезистор (LDR, Light Depender Resistor) — компонент, меняющий сопротивление в зависимости от количества света падающего на него. В полной темноте он имеет максимальное сопротивление в сотни килоОм, а по мере роста освещённости сопротивление уменьшается до десятков килоОм.

Читайте так же:
Чем регулировать яркость в lcd дисплеях

Фоторезистор

Обозначение и рисунок на схемах.

Обозначение

Различаются фоторезисторы по диапазону сопротивления. Например:

  • VT83N1 — 12-100кОм
  • VT93N2 — 48-500кОм

Photocell

Самый простой способ посмотреть на работу фоторезистора — подключить к нему мультиметр и смотреть за изменением сопротивления (1MΩ..1KΩ), закрывая фоторезистор рукой.

Photocell

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

На уроке, посвящённому потенциометру, я упомянул, что пример чтения аналоговых выводов (File | Examples | 01.Basics | AnalogReadSerial) является универсальным. Проверим пример на фоторезисторе.

Соберём конструкцию по схеме.

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

Схема на макетной плате.

Макетная плата с фоторезистором

Опишем конструкцию словами. Из порта 5V идёт питание на первую ножку фоторезистора. Ко второй ножке присоединяются резистор, который соединяется с GND и отдельный провод, идущий на порт A0. Получается классический делитель напряжения.

Если запустить скетч и открыть окно Serial Monitor, то мы можем наблюдать изменения значений в зависимости от степени освещённости. Показания будут зависеть от второго резистора. Можете попробовать заменить резистор с другой маркировкой и проверить результат. В моём случае использовался резистор на 1 кОм. При этом показания менялись от 4 до 158 зимним днём, когда уже начинало темнеть, а свет в комнате ещё не включал. Если посветить на фоторезистор фонариком, то значение увеличивалось до 918 единиц.

Используем светодиод

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

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

Плавная регулировка светодиода

Если мы хотим менять яркость светодиода плавно, то встроенный светодиод не подойдёт. Нам понадобится вывод с символом

. Мы уже проходили подобный урок 01.Basics: Fade (затухание светодиода), поэтому добавим свой светодиод с резистором на макетную плату.

Мы можем явно указать отслеживаемый диапазон, например, от 4 до 200. Но показания могут быть меньше или больше этих значений и нам нужно написать условия, которые учитывали бы эту ситуацию. К счастью, есть готовая функция constrain(), которая делает эту работу за нас. Далее эти значения нужно распределить между диапазоном от 0 до 255 с помощью функции map(), так как светодиод работает только в этом диапазоне. Но если мы оставим как есть, то 4 будет соответствовать 0, а 200 будет соответствовать 255. При таком решении светодиод будет гореть ярче при хорошем освещении и тусклее при плохом освещении. А нам нужна обратная ситуация. Поэтому в функции мы применяем обратный порядок от 255 до 0. Таким образом, код получится следующим.

Проверяем. У меня работает, а у вас?

03.Analog: Calibration (Калибровка)

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

Запустим скетч File | Examples | 03.Analog | Calibration.

В течение первых пяти секунд мы записываем данные с датчика. Наибольшее и наименьшее значения попадают в переменные. Затем работаем с полученными данными.

05.Control: switchCase

Теперь вы без труда поймёте код из примера File | Examples | 05.Control | switchCase. Опытным путём выясняется, что показания фоторезистора колеблются от 0 до 600 (у вас могут быть другие значения, тогда измените). Делим интервал на четыре части при помощи map(): темно, дымка, средне, ярко. С помощью оператора выбора switch выбираем нужное значение и выводим сообщение. Схема остаётся прежней.

Модуль KY-018

Может выпускаться в виде готового модуля. На рисунке пример от магазина «Амперка».

Датчик освещённости

Есть также популярный китайский модуль KY-018.

KY-018

У модуля между выводами «S» и выводом питания +5 В (средний вывод) впаян резистор 10 кОм, что вместе с самим фоторезистором образует делитель напряжения, который удобно подключить к аналоговому входу Arduino.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector