Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Komponen dan Perlengkapan

KomponenKeteranganJumlah
Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus
Arduino Nano R3
×1
Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus
Modul Periferi Maxim Integrated DS3231MPMB1
×1

Tentang Proyek Ini

Musim dingin akan tiba, malam menjadi lebih panjang dari siang, dan ini adalah mimpi buruk bagi saya untuk bangun pukul 6 pagi dalam kamar yang gelap dan dingin. Bagaimana jika ada cara untuk menciptakan “matahari terbit” buatan untuk membuat kamar terasa jauh lebih hangat dan nyaman?

Ini adalah tugas yang mudah, saya akan menciptakan lampu pintar yang pas di lampu plafon saat ini. Ini akan mensimulasikan matahari terbit dengan perlahan menyala ruangan. Jika berhasil, saya akan menghubungkannya dengan ponsel saya untuk membuatnya menjadi jam alarm yang tepat.

Lampu

Untuk membuat lampu pintar Anda pertama-tama membutuhkan lampu “bodoh” karena soketnya yang diaturnya ke lampu dan menyediakan pasokan daya. Saya menghancurkannya dengan palu. Prosedur menyenangkan ini menghapus kaca dari soket aluminium dan setelah memolot kabel ke soket dan pin di bagian bawah, basis lampu pintar siap.

Selanjutnya, Anda membutuhkan pendukung untuk semua elektronika. Saya menggunakan papan perf dan memotongnya agar pas dengan mikrokontroler Arduino Nano, pasokan daya 5V, dan semua komponen elektronika.

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Sirkuit Tegangan Tinggi

Peringatan Keselamatan: Anda bekerja dengan tegangan lebih besar dari 50V. Kontak dengan tegangan tinggi dapat mengakibatkan cedera parah atau kematian.

Karena saya menggunakan lampu biasa yang diberi daya dari tegangan jaringan AC saya tidak dapat langsung menggunakan mikrokontroler untuk mengontrol daya yang pergi ke lampu. Saya membutuhkan TRIAC. Perangkat kecil ini bertindak sebagai relai yang dapat menyala dan mati dengan cukup cepat. Mikrokontroler akan menyala dan mati triac untuk mengubah gelombang sinus AC, sehingga mempergelapkan atau mempercerahkan lampu.

Namun, tegangan AC dikontrol berbeda dari tegangan DC. Gelombang sinus AC perlu dipotong dengan cara yang tepat dan jadi triac harus dihidupkan dan dimatikan pada momen yang tepat untuk mencapai itu (lihat gambar di bawah). Dengan kata lain, mikrokontroler perlu tahu ketika gelombang sinus tegangan jaringan melintasi nol untuk memotong setiap gelombang setengah dengan ukuran yang sama. Jika tidak, lampu akan berkedip.

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Untuk mendeteksi zero crossing tegangan jaringan ada optokopler 4N35 (U1) dengan transistor yang menyala ketika gelombang sinus melintasi nol. Mikrokontroler akan melihatnya sebagai sinyal tinggi pada pin inputnya. Optokopler memiliki fungsi lain, yaitu untuk mengisolasi tegangan rendah dari sirkuit tegangan jaringan.

Optokopler kedua - MOC3063 (U2) - dengan triac pada output digunakan untuk mengisolasi mikrokontroler dari triac tegangan tinggi (Q2). Pastikan Anda tidak menggunakan optokopler dengan fitur zero-cross karena itu hanya menyala ketika gelombang sinus melintasi nol.

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Sirkuit Tegangan Rendah

Sebagai mikrokontroler, saya menggunakan Arduino Nano. Tujuan utamanya adalah mengontrol triac dan mulai menyala lampu ketika waktu yang diatur tiba. Untuk menyediakan jam waktu nyata ada modul jam waktu nyata DS3231 yang akurat yang juga mempertahankan waktu saat daya hilang.

Untuk menyediakan 5V untuk chip, saya menggunakan pasokan daya step-down 5V 700mA yang murah yang terhubung ke tegangan jaringan dari soket lampu. Solusi yang bagus dan praktis!

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Kode

Programnya cukup sederhana. Ketika lampu dihidupkan oleh saklar itu akan menyala ruangan dan perlahan memudar ke malam sebagai verifikasi bahwa elektronika masih bekerja. Selama malam itu memeriksa jam waktu nyata yang disimpan dalam modul DS3231 dan akhirnya pukul 6 pagi ruangan perlahan menyala hingga “cahaya siang” penuh sampai lampu dimatikan oleh saklar.

Periksa kode yang dilampirkan di bawah ini saya pikir itu jelas sendiri. Jika tidak saya adalah pengembang yang buruk!

Apa Selanjutnya?

Sekarang saya akan bereksperimen selama beberapa hari atau minggu dan jika itu dapat membangun saya pada pagi hari saya akan mengembangkan proyek ini menjadi sesuatu yang lebih cerdas dan lebih kasar!

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Selamat malam!

Kode

lightalarm.inoArduino

Lampu pintar yang menyala saat waktunya bangun dari tempat tidur.

/* A smart light bulb that lights up when its time to get out of your bed. How it works: 1) when power is turned on, the light is switched on as a check that it works 2) it will slowly dim until turned off completelly 3) at 6 am in the morning light will slowly turn on until switched off at the evening 4) light will not turn on when room is not dark anymore (photocell) How to use: - turn on the light when going to bed and it will light up the room when you wake up in the morning, turn off light when leaving room to turn it off. - the time will be preserved due to the DS3231 module @author Jiri Praus (https://twitter.com/jipraus) AC Light control inspired by https://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html */ #include <TimerOne.h> // avaiable from https://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 // This is the delay-per-brightness step in microseconds for 50Hz (change the value in 65 for 60Hz) #define CHANGE_DIM_LEVEL_EVERY 1 // change dim level every N seconds, slowness of brightining/dimming #define MAX_DIM_LEVEL 128 // off #define MIN_DIM_LEVEL 0 // on #define DARK_THRESHOLD 300 // resistance of photocell when it is consider dark outside // triac control variables volatile byte triacCounter = 0; // triac control timer volatile boolean zeroCrossed = false; // AC phase zero-crossed flag // dim control byte dimLevel = MIN_DIM_LEVEL; // on power on, the light is on and will dim slowly as a check boolean lightOn = false; // alarm clock RTC_DS3231 rtc; void setup() { Serial.begin(115200); digitalWrite(TRIAC_PIN, LOW); pinMode(TRIAC_PIN, OUTPUT); pinMode(ZERO_CROSS_PIN, INPUT); pinMode(LIGHT_SENSOR_PIN, INPUT); // init real time clock if (!rtc.begin()) { Serial.println("Couldn't find RTC"); while(1); } if (rtc.lostPower()) { Serial.println("RTC lost power, lets set the time!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // following line sets the RTC to the date & time this sketch was compiled } // initialize interrupts and timers for triac control noInterrupts(); attachInterrupt(digitalPinToInterrupt(ZERO_CROSS_PIN), zeroCrossDetected, RISING); // Attach an Interupt to Pin 2 (interupt 0) for Zero Cross Detection interrupts(); Timer1.initialize(FREQUENCY_STEP); Timer1.attachInterrupt(triacTimerInterrupt, FREQUENCY_STEP); } void loop() { delay(CHANGE_DIM_LEVEL_EVERY * 1000); checkAlarmClock(); adjustDimLevel(); debugPrint(); } void zeroCrossDetected() { zeroCrossed = true; // set the boolean to true to tell our dimming function that a zero cross has occured triacCounter = 0; // start counting when triac should be opened digitalWrite(TRIAC_PIN, LOW); // turn off light } void triacTimerInterrupt() { if (dimLevel >= MAX_DIM_LEVEL) { // permanently off digitalWrite(TRIAC_PIN, LOW); } else if (dimLevel <= MIN_DIM_LEVEL) { // permanently on digitalWrite(TRIAC_PIN, HIGH); } else if (zeroCrossed) { if (triacCounter >= dimLevel) { digitalWrite(TRIAC_PIN, HIGH); // open triac zeroCrossed = false; // reset zero cross detection until next half vawe } else { triacCounter ++; // increment time step counter } } } void adjustDimLevel() { if (lightOn && dimLevel > MIN_DIM_LEVEL) { dimLevel--; } else if (!lightOn && dimLevel < MAX_DIM_LEVEL) { dimLevel++; } } void checkAlarmClock() { if (!lightOn && isRoomDark()) { // do not waste energy when room is already light up DateTime now = rtc.now(); if (now.hour() == 6 && now.minute() == 0) { lightOn = true; // start alarm clock at 6am } } } boolean isRoomDark() { return analogRead(LIGHT_SENSOR_PIN) < DARK_THRESHOLD; } void debugPrint() { Serial.print("lightOn="); Serial.println(lightOn); Serial.print("dimLevel="); Serial.println(dimLevel); DateTime now = rtc.now(); Serial.print("datetime="); Serial.print(now.year(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.day(), DEC); Serial.print(" "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.println(now.second(), DEC); Serial.print("lightLevel="); Serial.println(analogRead(LIGHT_SENSOR_PIN)); } 

Skema Sirkuit

Alarm Matahari Terbit Cerdas: Bangun dengan Cahaya HalusAlarm Matahari Terbit Cerdas: Bangun dengan Cahaya Halus

Proses manufaktur

  1. Menjelajahi Penjumlahan Tegangan dengan Koneksi Baterai Seri
  2. Lab Pembagi Tegangan: Desain, Pengukuran, dan Verifikasi Hukum Tegangan Kirchhoff
  3. Termoelektrik: Memahami Termokopel dan Efek Seebeck
  4. Voltmeter Potensiometrik: Pengukuran Tegangan Tepat dengan Beban Minimal
  5. Buat Baterai Kentang: Panduan Langkah demi Langkah untuk Daya Elektrokimia DIY
  6. Sumber Daya AC Tegangan Rendah: Komponen dan Praktik Terbaik Rangkaian Pergeseran Fase
  7. Eksperimen Pengatur Tegangan dengan Dioda Zener 12 Volt
  8. Penguat Voltage Follower: Panduan Desain, Pembuatan, dan Pengukuran
  9. Merancang Penguat Common-Emitter Multi-Tingkat Gain Tinggi dengan Feedback Negatif
  10. Dioda Khusus: Schottky, Tunnel, LED, Laser, Fotodioda, dan Inovasi Sel Surya