Управление светом на ардуино

Управление светом на ардуино

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

Вариант 1:

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

Описание работы:

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

Нам понадобится:
  • Arduino Uno х 1шт.
  • Trema Set Shield х 1шт.
  • Trema-модуль реле х 1шт.
  • Trema-модуль потенциометр х 1шт.
  • Trema-модуль датчик освещённости х 1шт.
  • Проводков для пайки. (в ассортименте: 5 см, 10 см, 20 см)
Схема сборки:
  • Устанавливаем Trema Set Shield в Arduino Uno.
  • Устанавливаем Trema-модуль потенциометр во 2 посадочную площадку.
  • Устанавливаем Trema-модуль реле в 4 посадочную площадку.
  • Устанавливаем Trema-модуль датчик освещённости в 6 посадочную площадку.
  • Подключаем лампочку через реле, как показано на рисунке.
Код программы:
Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinRele для реле в режим выхода.

В коде loop выполняются следующие действия:

  • Считываем показания потенциометра.
  • Считываем показания датчика освещенности.
  • Если показания потенциометра + 5 меньше показаний датчика освещенности, то включаем реле.
  • Если показания потенциометра — 5 больше показаний датчика освещенности, то выключаем реле.

Вариант 2:

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

Описание работы:

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

Нам понадобится:
  • Arduino Uno х 1шт.
  • Trema Set Shield х 1шт.
  • Trema-модуль cиловой ключ х 1шт.
  • Trema-модуль потенциометр х 1шт.
  • Trema-модуль датчик освещённости х 1шт.
  • Источник питания на 12В. 1А. для Arduino х 1шт.
  • Коннектор power jack Мама с клемником для Arduino х 1шт.
  • Проводков для пайки. (в ассортименте: 5 см, 10 см, 20 см)
Схема сборки:
  • Устанавливаем Trema Set Shield в Arduino Uno.
  • Устанавливаем Trema-модуль потенциометр во 2 посадочную площадку.
  • Устанавливаем Trema-модуль cиловой ключ в 4 посадочную площадку.
  • Устанавливаем Trema-модуль датчик освещённости в 6 посадочную площадку.
  • Подключить светодиодную ленту к Источник питания на 12В, через Коннектор с помощью Проводков, как показано на рисунке ниже.
Код программы:
Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinPowerKey для силового ключа в режим выхода.

В коде loop выполняются следующие действия:

  • Проверяем показания с датчика освещенности, если показания больше максимального значения, то подаем ноль на силовой ключ.
  • Считываем показания датчика освещенности и присваиваем его значения силовому ключу в диапазоне от 255 до 0.
  • Проверяем показания с датчика освещенности, если показания меньше минимального значения, то подаем 100% напряжения на силовой ключ.
Особенности:

В скетче присутствуют переменные "minL" — минимальная граница и "maxL" — максимальная граница. Это переменные между которыми датчик освещенности плавно переходит из яркого состояния в темное. И так как датчик освещенности в зависимости от помещения не может достигнуть своего максимального или минимального значения, вводятся константы, для того чтобы, при значениях датчика освещенности которые вышли за пределы диапазона от "minL " до "maxL", источнику света принудительно подается максимальное либо минимальное напряжение. Эти константы регулируются в скетче в начале программы.

freebsd команды, настройка, установка сервера и не только

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

  • Включение/выключение света с кнопки
  • Включение/выключение света в браузере (а значит любым смартфоном/планшетом/компьютером/ноутбуком и т.д. в сети)
  • Включение/выключение света с ПДУ

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

Если кому-то лень читать, то можно посмотреть видео:

Остальные читаем дальше.
Для реализации функционала мне понадобились следующие элементы.

Необходимые элементы для управления освещением

  • Arduino — Плата с микроконтроллером. Я использовал версию Arduino UNO, в которой заменил разъём usb на mini usb, потому что при старом разъёме, контакты прилегали не плотно друг к другу.
  • Arduino Ethernet Shield W5100. Это плата расширения для Arduino, необходимая для подключения UNO к локальной сети. На чип W5100 одел радиатор, ниже по тексту про нагрев этого чипа будет несколько слов. Ещё подправил разъём под ICSP, чтобы шилд ложился плотнее на Arduino.
  • Реле, для управления нагрузкой. Почитав публикации, заметил, что обыкновенные реле служат не долго из-за наличия подвижных элементов в нём. Я использовал твердотельное реле Fotek SSR-40 DA. Оно дороже, но надёжнее
  • ИК-приемник. Я использовал приёмник VS1838B с частотой 38 кгц. В теории хотелось бы располагать приёмник возле самого выключателя в комнате, по аналогии с управлением телевизором. Чтобы включить телевизор, надо на него направить пульт, но вот как их расположить в выключателе, чтобы это было эстетически не противно, я пока не придумал. Подумываю о том, чтобы располагать ИК-приёмники в центре комнаты на потолке. Ещё, пока только теоретический вариант — это использовать дополнительную плату Arduino, которая и будет с помощью GET запросов по локальной сети включать или выключать свет в любой из комнат. Но это пока теория и я остановился на том, чтобы расположить ИК-приёмник возле самого выключателя. В случае каких-то модификаций, ИК-приёмники можно будет убрать в чашку с выключателем, благо занимает он мало места.
    Чтобы подключить ИК-приёмник, желательно будет спаять небольшую обвязку, состоящую из:
    1 резистора на 100 Ом (не перепутайте с 100 кОМ. При 100 кОМ работать не будет)
    1 Конденсатора электролитического с номиналом 10мкф 50в , вотльтаж можно и меньше взять.
    1 Конденсатора керамического с номиналом 0.1мкф (взял с маркировкой S104).
    Либо божно взять уже готовый модуль на плате с напаянными элементами, включая сам ИК-приёмник.
  • Пульт дистанционного управления. Я использовал от телевизора LG, исходя из тех соображений, что телевизор или любое другое устройство LG я не куплю, то есть нажимая на кнопку пульта, я не буду думать о том, чтобы сработало именно выключение света, а не телевизор или другое устройство LG. Да, пульт выбран довольно большой, но в перспективе многие кнопки будут задействованы, ведь управлять будем не только светом. Сильно специфического производителя пультов, я тоже решил не брать.
  • Светодиод. Для одного блока я использую всего 1 светодиод и объясню почему. Он мне нужен лишь для индикации состояния реле, а как следствие и состояния света, включен или выключен. Этот элемент блока управления светом будет располагаться в коридоре, то есть в коридоре, стоя в обуви я смогу перед выходом увидеть в какой комнате свет был по забывчивости не выключен. Можно конечно для индикации и «красивостей» использовать дисплей, на котором выводить текст о состоянии света, но это физически занимает больше места. А так будет красным горит светодиод — значит свет включен, не горит — не включен.
  • Кнопка без фиксации настенная. Визуально она похожа на обычный выключатель, который стоит в большинстве квартир нашей родины, но работает она несколько иначе. Она всегда физически находится в одном положении, при нажатии на неё, она отщёлкивается обратно, по типу тактовой кнопки.
  • Тактовая кнопка. Примерно такая, как используется в кнопках reset или power на системном блоке ПК. Эта кнопка тоже нужна будет для выключения света, но в коридоре, чтобы не проходить в комнату, где забыли выключить свет.
  • Блок питания Arduino. «Запитать» Arduino можно как по USB, так и подав напряжение в выведенный для этого на плате разъём. Заметил такую особенность модуля локальной сети Ethernet Shield W5100. При питании от usb, чип w5100 начинает сильно греться. При этом перебоев в его работе я не наблюдал, даже при высокой его температуре и длительном испльзовании. Но при питании Arduino через отдельный разъём, чип w5100 грелся значительно меньше. Поэтому решено было питать Arduino НЕ через USB. Я использовал зарядку для телефона на 5v 2A с элементом для понижения с 5V до 3.3V
  • Сервер управления всеми элементами умного дома. На данном этапе сервер не нужен, НО надо заложить фундамент для дальнейшего централизованного управления автономными модулями умного дома. Это, конечно же отдельная история, то как интерфейс управления должен выглядеть. На первое время я, наверно, напишу простейшую самописку для управления через браузер с «резиновым» интерфейсом, несколькими вкладками и кнопками. Но произойдёт это уже по окончании установки всех модулей на своё место и ввода их в эксплуатацию.
  • ПК или ноутбук с USB разъёмом для загрузки кода в Arduino.
  • Arduino IDE — среда разработки для Arduino, которую можно бесплатно скачать с офф. сайта Arduino.
  • Резисторы для подключения кнопок(настенной и тактовой). Я использовал 1 кОм. И ещё резистор для подключения светодиода. Я использовал 220 Ом.
  • Провода, само собой.
  • Breadboard мне нужен был на момент разработки прототипа, очень удобно без пайки собрать схемку.
Читайте также:  Теплый пол кабельный установка

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

Модуль локальной сети Ethernet Shield W5100 по задумке производителя, думаю, должен одеваться поверх Arduino, но в моём случаем мешал разъём USB самой Arduino и контакты прилегали не плотно. До сих пор не понимаю, почему не использовать более маленький форм фактор разъёма, например mini usb. Я пробовал перепаять разъёмы и скажу, что с mini usb работает так же хорошо, тем более этот разъём, в моём случае, нужен только для заливки скетча (скетч = прошивка микроконтроллера у Arduino), питание буду подавать через другой разъём. Итого решил отпаять «родной» разъём USB от Arduino и припаивать кабель с разъёмом на конце, чтобы Ethernet Shield W5100 ложился на Arduino хорошо, все контакты соединялись.

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

комнаты кол-во зон
освещения
комната 1 2
комната 2 2
кухня 2
туалет+ванная 2
балкон 1
коридор/прихожая 1
итого надо блоков 10

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

    • Вариант управления №1. Нажимаем кнопку на стене -> Arduino обрабатывает это нажатие -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
    • Вариант управления №2. Отправляем в браузере GET запрос -> Arduino обрабатывает запрос -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
    • Вариант управления №3. Нажимаем кнопку на ПДУ, таким образом отправляем команду на ИК приёмник -> Arduino обрабатывает команду -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.

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

    Arduino и управление светом : Один комментарий

    Добавить комментарий Отменить ответ

    Для отправки комментария вам необходимо авторизоваться.

    Читайте также:  Когда появилось электричество в мире

    Вадим Колесник, г. Тирасполь

    Общие сведения

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

    Рисунок 1. Подсветка рабочей зоны на кухне с автоматическим управлением.

    Мы рассмотрим два варианта устройства, выполняющих автоматическое управление локальным освещением рабочего стола (рабочей зоны) на кухне, но отличающихся элементной базой и дополнительным функционалом. Автоматическое управление освещением подразумевает плавное поэтапное включение и выключение подсветки на основе данных о текущей освещенности в помещении (и ее изменении) и наличии движения человека. Первый вариант устройства выполнен на Arduino Nano и после простой настройки работает полностью в автоматическом режиме (Рисунок 2). Второй вариант выполнен на Wi-Fi модуле типа NodeMCU (СнК ESP8266, ESP-12E) и, помимо выполнения основной функции, имеет дополнительные возможности онлайн контроля и управления. В последнем случае пользователь может со смартфона или из браузера включить/выключить подсветку, а также получать данные о текущем уровне освещенности и режиме работы контроллера.

    Рисунок 2. Контроллер управления подсветкой рабочей зоны на кухне
    (версия на Arduino Nano).

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

    В общем случае оба варианта устройства имеют одинаковую структурную схему: микроконтроллер, датчик освещенности (фоторезистор), датчик движения, схема питания, силовой транзистор для управления светодиодами или, как в моем случае, светодиодной лентой. Отличия в схемотехнике двух устройств обусловлены спецификацией СнК ESP8266 (напряжение питания 3.3 В), а также расширенным функционалом устройства на NodeMCU. Идея создания второго варианта контроллера пришла после того, как я узнал об облачном сервисе myDevices Cayenne и оценил его работу на платформе Arduino, принимая во внимание поддержку чипа ESP8266 в интегрированной среде разработки Arduino IDE.

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

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

    Рисунок 3. Принципиальная схема контроллера подсветки на Arduino.

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

    Для обнаружения присутствия человека в помещении я использовал ИК датчик движения Фотон-9 от охранной сигнализации. (Важный момент, не путайте с датчиками движения для управления осветительными приборами). Без изменения схемы и прошивки возможно применение любого аналогичного датчика движения с нормально замкнутыми контактами реле и напряжением питания 12 В. Датчик подключается к контроллеру посредством совмещенного разъема TB1-TB2 (клеммники с винтовым зажимом). Сигнальная линия датчика движения (клемма С, см. описание датчика [1]) подключается к порту D2, который настроен как вход с внутренним подтягивающим резистором. К клемме NC датчика подключена «земля». В нормальном состоянии контакты реле датчика движения (NC и С) замкнуты, следовательно, на входе D2 присутствует низкий логический уровень. При обнаружении движения контакты реле датчика размыкаются и, благодаря подтягивающему резистору, на входе D2 появляется высокий логический уровень.

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

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

    Рисунок 5. Расположение контроллера подсветки, ИК датчика движения и источников
    основного освещения в помещении.

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

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

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

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

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

    п/п
    Обозначение
    в схеме
    Количество Корпус в EasyEDA Примечание
    1 DC1, DC2 2 DC-5020 Разъем питания DC
    2 U1 1 ARDUINO NANO
    3 R1, R2, R3 3 1206 Резисторы SMD 1206
    4 Q1 1 DPAK-3 MOSFET
    5 C1 1 CAP-D5.0XF2.0
    6 P2,P4 2 HDR-8X1/2.54 Штыревые разъемы
    7 P3 1 HDR-1X2/2.54 Штыревой разъем
    8 TB1, TB2 2 DG126-02P Клеммник винтовой
    9 J1 1 M1X2 Штыревой разъем или
    отверстия для установки
    фоторезистора

    Скетч Arduino

    Исходный код программы микроконтроллера (скетч) прост в понимании и снабжен комментариями. Скетч предоставляется «как есть»; не исключена возможность его дальнейшей оптимизации или внедрения дополнительных функций и режимов работы контроллера. Здесь все зависит от вашей фантазии и желания.

    Читайте также:  Реле температуры для теплицы

    Данные о текущей освещенности и ее изменении микроконтроллер получает с фоторезистора. Интегрированный АЦП преобразует значение напряжения на входе A7 в цифровой код, который без каких-либо преобразований в неизменном виде используется в программе. В последующем описании цифровой код АЦП для простоты будем считать некими условными единицами.

    Как отмечалось в начале статьи, контроллер работает в ночном и дневном режимах. Это основные режимы работы, которые выполняются поэтапно:

    • Дневной режим работы активен при недостаточной освещенности помещения (15 – 110 единиц):
    • Этап 1:
      При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 20%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
    • Этап 2:
      Яркость подсветки плавно увеличивается до 100%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
    • Этап 3:
      По истечении 7-минутного интервала яркость плавно снижается до 20% и происходит переход на этап 1;
  • Ночной режим работы активен при низкой освещенности (менее 15 единиц):
    • Этап 1:
      При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 10%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
    • Этап 2:
      Яркость подсветки плавно увеличивается до 50%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
    • Этап 3:
      По истечении 7-минутного интервала яркость плавно снижается до нуля.
    • Описание и выбор соответствующих режимов работы в программе микроконтроллера я пояснил комментариями.

      Резкое изменение уровня освещенности (включили основной свет) контроллер определяет по разности двух последовательных измерений освещенности, выполняемых каждую секунду. Для этого используется функция LightingChange_Det() . Если выявлено резкое увеличение освещенности (разность более 40 в коде АЦП), то контроллер, в соответствии с текущим основным режимом работы, перейдет на следующий этап, включив подсветку или увеличив ее яркость (Листинг 1).

      Листинг 1. Функция контроля освещенности.

      void LightingChange_Det () <
      current_luminosity = analogRead(Light_Sensor);
      if ((current_luminosity — previus_luminosity > 40) && (Light_On == false)) <
      mode = 1; //включили основной свет, подсветка была выключена;
      Mode_Set(); //включаем подсветку (дневной режим, этап 1)
      >
      if ((current_luminosity — previus_luminosity > 40) && (Light_On == true) && (mode == 1)) <
      mode = 2; //включили основной свет, подсветка активна (дневной режим);
      Mode_Set(); //увеличиваем яркость (дневной режим, этап 2)
      >
      else if ((current_luminosity — previus_luminosity > 40) && (Light_On == true) && (mode == 4)) <
      mode = 5; //включили основной свет, подсветка активна (ночной режим);
      Mode_Set(); //увеличиваем яркость (ночной режим, этап 2)
      >
      previus_luminosity = current_luminosity;
      if ((current_luminosity > 110) && (Light_On == true)) <
      mode = 0; //уровень освещения стал достаточным
      Mode_Set(); //выключаем подсветку
      >
      >

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

      В программе микроконтроллера все временные задержки формируются без использования функции delay() . Используется конструкция на основе функции millis() (Листинг 2).

      Листинг 2. Формирование временных интервалов с помощью функции millis() .

      if (millis() — timeout_1 >= interval_1) < //формируем интервал 1 с
      timeout_1 = millis(); //каждую секунду проверяем уровень освещенности
      LightingChange_Det(); //и его изменение
      >

      Проверка всех условий и установка необходимого режима работы выполняется с помощью операторов «if…else» , непосредственное управление ШИМ выходом с учетом установленного режима работы выполняется в отдельной функции Mode_Set() , в которой используется конструкция «switch… case» .

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

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

      Печатная плата

      Печатная плата контроллера также проектировалась в онлайн редакторе EasyEDA по принципиальной схеме. Размещение корпусов элементов, указанных в схеме, и их группировка в пределах контура будущей платы осуществляются автоматически по нажатию одной кнопки в редакторе. Корпуса элементов размещаются последовательно и компактно, но не накладываются друг на друга. Также как и создание принципиальных схем, проектирование печатной платы в EasyEDA не вызвало затруднений (Рисунок 6).

      Рисунок 6. Проектирование печатной платы в EasyEDA.

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

      Печатная плата двухсторонняя, без межслойных переходов, с заливкой на верхнем и нижнем слое (GND, земля) и шелкографией на верхнем слое (Рисунок 7). Заказ на производство плат оформил непосредственно из редактора, при этом автоматически были сгенерированы Gerber-файлы моего проекта (архив доступен для скачивания в секции загрузок). Кроме того, в EasyEDA встроен очень полезный инструмент для просмотра Gerber-файлов – GerberViewer. Минимальный заказ (5 штук) был выполнен в течение трех рабочих дней и отправлен почтой.

      Рисунок 7. Фото-вид печатной платы в редакторе EasyEDA.

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

      Рисунок 8. Комплект печатных плат, изготовленных в EasyEDA.

      Вид платы с установленными компонентами показан на Рисунке 9.

      Ссылка на основную публикацию
      Adblock detector