Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Разбуди меня!

Компоненты и расходные материалы

Arduino Nano R3
× 1
Периферийный модуль Maxim Integrated DS3231MPMB1
× 1

Об этом проекте

Приближается зима, ночи становятся длиннее дней, и для меня просто кошмар просыпаться в 6 утра в темной и холодной комнате. Что, если бы существовал способ создать искусственный «восход солнца», чтобы сделать комнату намного теплее и приятнее?

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

Лампочка

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

Далее вам понадобится подставка для всей электроники. Я использовал перфорированную плату и вырезал ее, чтобы она соответствовала микроконтроллеру Arduino Nano, источнику питания 5 В и всем электронным компонентам.

Цепь высокого напряжения

Предупреждение о безопасности: Вы работаете с напряжением более 50 В. Контакт с высоким напряжением может привести к серьезным травмам или смерти.

Поскольку я использую обычную лампочку, которая питается от сети переменного тока, я не могу напрямую использовать микроконтроллер для управления мощностью, поступающей на лампочку. Мне нужен ТРИАК. Это маленькое устройство действует как реле, которое может очень быстро включаться и выключаться. Микроконтроллер будет включать и выключать симистор, чтобы изменять синусоидальную волну переменного тока, тем самым затемняя или увеличивая яркость света.

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

Для обнаружения перехода сетевого напряжения через нуль используется оптрон 4N35 (U1) с транзистором, который включается, когда синусоидальная волна пересекает ноль. Микроконтроллер увидит это как высокий сигнал на своем входном контакте. У оптопары есть еще одна функция - изолировать низкое напряжение от цепи сетевого напряжения.

Второй оптопара - MOC3063 (U2) - с симистором на выходе используется для изоляции микроконтроллера от высоковольтного симистора (Q2). Убедитесь, что вы не используете оптопару с функцией пересечения нуля, потому что она включается только тогда, когда синусоида пересекает ноль.

Цепь низкого напряжения

В качестве микроконтроллера я использую Arduino Nano. Его основное предназначение - управлять симистором и включать свет в установленное время. Для обеспечения часов реального времени имеется модуль точных часов реального времени DS3231, который также сохраняет время при отключении питания.

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

Код

Программа довольно простая. Когда лампа включается выключателем, она освещает комнату и медленно тускнеет в ночи, что является подтверждением того, что электроника все еще работает. Ночью он проверяет часы реального времени, хранящиеся в модуле DS3231, и, наконец, в 6 часов утра комната медленно освещается до полного «дневного света», пока лампа не будет выключена выключателем.

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

Что дальше?

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

Спокойной ночи!

Код

  • lightalarm.ino
lightalarm.ino Arduino
Умная лампочка, которая загорается, когда пора вставать с кровати.
 / * Умная лампочка, которая загорается, когда пора вставать с кровати. Как она работает:1) при включении питания , свет включается для проверки его работы 2) он будет медленно тускнеть, пока не выключится полностью 3) в 6 часов утра свет будет медленно включаться, пока не выключится вечером 4) свет не будет включаться, когда в комнате не темно anymore (фотоэлемент) Как использовать:- включите свет перед сном, и он осветит комнату, когда вы проснетесь утром, выключите свет, выходя из комнаты, чтобы выключить его. - время будет сохранено должным образом в модуль DS3231 @ автор Jiri Praus (https://twitter.com/jipraus) AC Управление освещением, вдохновленное http://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html* / # include  // доступно с http://www.arduino.cc/playground/Code/#include "RTClib.h" #define TRIAC_PIN 2 # define ZERO_CROSS_PIN 3 # define LIGHT_SENSOR_PIN A6 #define FREQUENCY_STEP 75 // Это шаг задержки на яркость в микросекундах для 50 Гц (измените значение в 65 на 60 Гц) #define CHANGE_DIM_LEVEL_EVERY 1 // изменение уровня яркости каждые N секунд, медленность яркости / затемнения # define MAX_DIM_LEVEL 128 // выкл # define MIN_DIM_LEVEL 0 // on #define DARK_THRESHOLD 300 // сопротивление фотоэлемента, когда на улице темно // переменные управления симистором энергозависимый байт triacCounter =0; // энергонезависимый таймер управления симистором boolean zeroCrossed =false; // Флаг пересечения нуля фазы переменного тока // dim controlbyte dimLevel =MIN_DIM_LEVEL; // при включении свет горит и медленно гаснет как контрольный логический индикатор lightOn =false; // будильник RTC_DS3231 rtc; void setup () {Serial.begin (115200); digitalWrite (TRIAC_PIN, LOW); pinMode (TRIAC_PIN, ВЫХОД); pinMode (ZERO_CROSS_PIN, ВХОД); pinMode (LIGHT_SENSOR_PIN, INPUT); // запускаем часы реального времени if (! rtc.begin ()) {Serial.println ("Не удалось найти RTC"); в то время как (1); } if (rtc.lostPower ()) {Serial.println («RTC потерял питание, давайте установим время!»); rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); // следующая строка устанавливает RTC на дату и время компиляции этого скетча} // инициализируем прерывания и таймеры для управления симистором noInterrupts (); attachInterrupt (digitalPinToInterrupt (ZERO_CROSS_PIN), zeroCrossDetected, RISING); // Присоединяем прерывание к выводу 2 (прерывание 0) для прерываний с обнаружением нулевого пересечения (); Timer1.initialize (FREQUENCY_STEP); Timer1.attachInterrupt (triacTimerInterrupt, FREQUENCY_STEP);} void loop () {delay (CHANGE_DIM_LEVEL_EVERY * 1000); checkAlarmClock (); AdjustDimLevel (); debugPrint ();} void zeroCrossDetected () {zeroCrossed =true; // устанавливаем логическое значение true, чтобы сообщить нашей функции затемнения, что произошло пересечение нуля triacCounter =0; // начинаем отсчет, когда должен быть открыт симистор digitalWrite (TRIAC_PIN, LOW); // выключить свет} void triacTimerInterrupt () {if (dimLevel> =MAX_DIM_LEVEL) {// навсегда выключить digitalWrite (TRIAC_PIN, LOW); } else if (dimLevel <=MIN_DIM_LEVEL) {// постоянно на digitalWrite (TRIAC_PIN, HIGH); } else if (zeroCrossed) {if (triacCounter> =dimLevel) {digitalWrite (TRIAC_PIN, HIGH); // размыкаем симистор zeroCrossed =false; // сбрасываем обнаружение пересечения нуля до следующей половины} else {triacCounter ++; // увеличиваем счетчик шагов времени}}} void adjustDimLevel () {if (lightOn &&dimLevel> MIN_DIM_LEVEL) {dimLevel--; } иначе, если (! lightOn &&dimLevel  

Схема


Производственный процесс

  1. Батареи серии
  2. Делитель напряжения
  3. Термоэлектричество
  4. Потенциометрический вольтметр
  5. Картофельная батарея
  6. Фазовый сдвиг
  7. Регулятор напряжения
  8. Повторитель напряжения
  9. Многокаскадный усилитель
  10. Диоды специального назначения