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

Bangunkan Aku!

Komponen dan persediaan

Arduino Nano R3
× 1
Modul Periferal DS3231MPMB1 Terintegrasi Maxim
× 1

Tentang proyek ini

Musim dingin akan datang, malam menjadi lebih panjang dari siang, dan itu adalah mimpi buruk bagi saya untuk bangun jam 6 pagi di ruangan yang gelap dan dingin. Bagaimana jika ada cara untuk membuat "matahari terbit" buatan untuk membuat ruangan terasa lebih hangat dan menyenangkan?

Ini adalah tugas yang mudah, saya akan membuat bola lampu pintar yang cocok dengan lampu langit-langit saya saat ini. Ini akan mensimulasikan matahari terbit dengan perlahan menerangi ruangan. Jika berhasil, saya akan menghubungkannya dengan ponsel saya untuk menjadikannya jam alarm yang tepat.

Bola lampu

Untuk membuat bohlam pintar, pertama-tama Anda membutuhkan bohlam "bodoh" karena soketnya yang disekrup ke lampu dan menyediakan catu daya. Aku menghancurkannya dengan palu. Prosedur kegembiraan ini melepaskan kaca dari soket aluminium dan setelah menyolder kabel ke soket dan pin di bagian bawah, dasar bohlam lampu pintar sudah siap.

Selanjutnya, Anda memerlukan dukungan untuk semua elektronik. Saya menggunakan papan kinerja dan memotongnya agar sesuai dengan mikrokontroler Arduino Nano, catu daya 5V, dan semua komponen elektronik.

Sirkuit tegangan tinggi

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

Karena saya menggunakan bola lampu biasa yang ditenagai dari tegangan listrik AC, saya tidak dapat langsung menggunakan mikrokontroler untuk mengontrol daya yang masuk ke bola lampu. Saya membutuhkan TRIAC. Perangkat kecil ini bertindak sebagai relai yang dapat dinyalakan dan dimatikan dengan cukup cepat. Mikrokontroler akan menghidupkan dan mematikan triac untuk mengubah gelombang sinus AC, sehingga meredupkan atau mencerahkan cahaya.

Namun, tegangan AC dikendalikan secara berbeda dari tegangan DC. Gelombang sinus AC perlu dipotong dengan cara yang tepat sehingga triac harus dihidupkan dan dimatikan pada saat yang tepat untuk mencapainya (lihat gambar di bawah). Dengan kata lain, mikrokontroler perlu mengetahui kapan gelombang sinus tegangan listrik memotong nol untuk memotong masing-masing setengah gelombang dengan ukuran yang sama. Jika tidak, lampu akan berkedip.

Untuk mendeteksi persilangan nol tegangan listrik ada optocoupler 4N35 (U1) dengan transistor yang menyala ketika gelombang sinus melintasi nol. Mikrokontroler akan melihatnya sebagai sinyal tinggi pada pin inputnya. Optocoupler memiliki fungsi lain, yaitu mengisolasi tegangan rendah dari rangkaian tegangan listrik.

Optocoupler kedua - MOC3063 (U2) - dengan triac pada output digunakan untuk mengisolasi mikrokontroler dari triac tegangan tinggi (Q2). Pastikan Anda tidak menggunakan optocoupler dengan fitur zero-cross karena hanya aktif saat gelombang sinus melewati nol.

Sirkuit tegangan rendah

Sebagai mikrokontroler, saya menggunakan Arduino Nano. Tujuan utamanya adalah untuk mengontrol triac dan mulai menyalakan lampu ketika waktu yang ditentukan tiba. Untuk menyediakan jam waktu-nyata, terdapat modul jam waktu-nyata akurat DS3231 yang juga menghemat waktu saat listrik padam.

Untuk penyedia 5V untuk chip, saya menggunakan catu daya step-down 5V 700mA murah yang terhubung ke tegangan listrik dari soket bohlam. Solusi yang bagus dan praktis!

Kode

Programnya cukup sederhana. Saat lampu dinyalakan oleh sakelar, lampu akan menerangi ruangan dan meredupkannya perlahan hingga malam sebagai verifikasi bahwa elektronik masih berfungsi. Pada malam hari ia memeriksa jam waktu nyata yang disimpan dalam modul DS3231 dan akhirnya pada pukul 6 pagi ruangan perlahan-lahan menyala hingga "siang hari" penuh sampai lampu dimatikan oleh sakelar.

Lihat kode terlampir di bawah ini, saya pikir itu cukup jelas. Jika bukan, saya adalah pengembang yang buruk!

Apa selanjutnya?

Sekarang saya akan bereksperimen selama beberapa hari atau minggu dan jika itu dapat membangunkan saya di pagi hari, saya akan mengembangkan proyek ini menjadi sesuatu yang lebih cerdas dan tidak terlalu kasar!

Selamat malam!

Kode

  • lightalarm.ino
lightalarm.inoArduino
Bola lampu pintar yang menyala saat bangun tidur.
/*Bola lampu pintar yang menyala saat bangun tidur.Cara kerjanya:1) saat listrik dinyalakan , lampu di nyalakan sebagai cek berfungsi2) perlahan redup sampai mati total3) jam 6 pagi lampu pagi perlahan nyala sampai mati malam4) lampu tidak nyala saat ruangan tidak gelap lagi (photocell)Cara menggunakan:- nyalakan lampu saat akan tidur dan itu akan menerangi kamar ketika Anda bangun di pagi hari, matikan lampu saat meninggalkan kamar untuk mematikannya.- waktu akan dipertahankan karena ke modul DS3231@penulis Jiri Praus (https://twitter.com/jipraus)Kontrol lampu AC yang terinspirasi oleh http://arduinotehniq.blogspot.com/2014/10/ac-light-dimmer-with-arduino.html* /#include  // tersedia dari 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 // Ini adalah langkah delay-per-brightness dalam mikrodetik untuk 50Hz (ubah nilainya dalam 65 untuk 60Hz)#define CHANGE_DIM_LEVEL_EVERY 1 // ubah level redup setiap N detik, slowness of brightining/dimming#define MAX_DIM_LEVEL 128 // mati# define MIN_DIM_LEVEL 0 // on#define DARK_THRESHOLD 300 // resistensi fotosel ketika dianggap di luar gelap// variabel kontrol triac volatil byte triacCounter =0; // pengatur waktu triac control volatil boolean zeroCrossed =false; // fase AC zero-crossed flag// redup controlbyte dimLevel =MIN_DIM_LEVEL; // saat dihidupkan, lampu menyala dan akan meredup perlahan seperti lampu checkbooleanOn =false;// jam alarmRTC_DS3231 rtc;void setup() { Serial.begin(115200); digitalWrite(TRIAC_PIN, RENDAH); pinMode(TRIAC_PIN, OUTPUT); pinMode(ZERO_CROSS_PIN, INPUT); pinMode(LIGHT_SENSOR_PIN, INPUT); // init jam waktu nyata if (!rtc.begin()) { Serial.println("Tidak dapat menemukan RTC"); sementara(1); } if (rtc.lostPower()) { Serial.println("RTC kehilangan daya, ayo atur waktunya!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // baris berikut menyetel RTC ke tanggal &waktu sketsa ini dikompilasi } // menginisialisasi interupsi dan timer untuk kontrol triac noInterrupts(); attachInterrupt(digitalPinToInterrupt(ZERO_CROSS_PIN), zeroCrossDetected, RISING); // Pasang Interupt ke Pin 2 (interupt 0) untuk interupsi Zero Cross Detection(); Timer1.initialize(FREQUENCY_STEP); Timer1.attachInterrupt(triacTimerInterrupt, FREQUENCY_STEP);}void loop() { delay(CHANGE_DIM_LEVEL_EVERY * 1000); periksaAlarmClock(); adjustDimLevel(); debugPrint();}void zeroCrossDetected() { zeroCrossed =true; // setel boolean ke true untuk memberi tahu fungsi peredupan kita bahwa telah terjadi persilangan nol triacCounter =0; // mulai menghitung kapan triac harus dibuka digitalWrite(TRIAC_PIN, LOW); // matikan lampu}void triacTimerInterrupt() { if (dimLevel>=MAX_DIM_LEVEL) { // matikan secara permanen digitalWrite(TRIAC_PIN, LOW); } else if (dimLevel <=MIN_DIM_LEVEL) { // secara permanen di digitalWrite(TRIAC_PIN, HIGH); } else if (zeroCross) { if (triacCounter>=dimLevel) { digitalWrite(TRIAC_PIN, HIGH); // buka triac zeroCross =false; // reset zero cross detection sampai setengah vawe berikutnya } else { triacCounter ++; // penambahan waktu penghitung langkah } }}void adjustDimLevel() { if (lightOn &&dimLevel> MIN_DIM_LEVEL) { dimLevel--; } else if (!lightOn &&dimLevel  

Skema


Proses manufaktur

  1. Baterai Seri
  2. Pembagi Tegangan
  3. Termoelektrik
  4. Voltmeter Potensiometri
  5. Baterai Kentang
  6. Pergeseran Fase
  7. Pengatur Tegangan
  8. Pengikut Tegangan
  9. Penguat Multi-Tahap
  10. Dioda Tujuan Khusus