https://github.com/jchristensen/poweroutagemonitor_sw
File readme
Jack Christensen
2012
Arduino Power Outage Logger Hak Cipta (C) 2012-2019 Oleh Jack Christensen GNU GPL v3.0
Program ini adalah perangkat lunak gratis: Anda dapat mendistribusikan ulang dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU v3.0 seperti yang diterbitkan oleh Yayasan Perangkat Lunak Gratis.
Program ini didistribusikan dengan harapan akan bermanfaat, tetapi tanpa jaminan apa pun; bahkan tanpa jaminan tersirat dari dapat diperjualbelikan atau kebugaran untuk tujuan tertentu. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya.
Anda seharusnya menerima salinan Lisensi Publik Umum GNU bersama dengan program ini. Jika tidak, lihat https://www.gnu.org/licenses/gpl.html
Sketsa Arduino untuk mengimplementasikan logger pemadaman listrik menggunakan Microchip MCP79411 atau MCP79412 RTC. Hingga tujuh pemadaman (waktu power down/up) dapat dicatat di SRAM RTC.
Layar normal adalah jam yang menunjukkan waktu, tanggal, dan jumlah pemadaman listrik yang masuk ke dalam kurung sudut, misalnya <4>. Setelah pemadaman listrik baru, LED peringatan pemadaman baru diterangi. Melihat log pemadaman mematikan LED. Jam menyesuaikan secara otomatis untuk waktu penghematan siang hari.
Empat tombol mengontrol logger dan diberi label:
SET / CLEAR / CANCEL(+) / FIRST / NEXT(-) / LAST / PREVRESET Dari tampilan jam:
Tekan (+) atau (-) untuk melihat log pemadaman. Menekan (+) akan menunjukkan pemadaman pertama (paling awal), menekan (+) lagi akan menunjukkan pemadaman berikutnya. Menekan (-) akan menunjukkan pemadaman terakhir (terbaru), menekan (-) lagi akan menunjukkan pemadaman sebelumnya. Tekan Set untuk kembali ke mode jam, atau secara otomatis akan kembali setelah 30 detik.
Tekan Set untuk memulai urutan set. Tekan (+) dan (-) untuk menyesuaikan setiap parameter, tahan untuk menyesuaikan dengan cepat. Tekan Set untuk maju ke parameter berikutnya. Tahan Set untuk Membatalkan Urutan Set. Menekan (+) dan (-) secara bersamaan saat mengatur detik atau kalibrasi RTC akan nol nilai.
Dari mode jam atau saat melihat log pemadaman, tahan diatur untuk menghapus log pemadaman.
Saat dalam mode tampilan jam normal, tekan dan menahan tombol (-) akan beralih mode matahari terbit/matahari terbenam, di mana waktu matahari terbit dan matahari terbenam bergantian dengan tanggal.
Setelah menekan dan melepaskan reset, pesan sinkronisasi RTC (dengan ID RTC) dan pesan kalibrasi yang ditunjukkan selama startup dapat dipegang dengan menekan dan menahan tombol yang ditetapkan.
Mode uji Photocell menampilkan pembacaan photocell menggantikan zona waktu. Ini bisa berguna untuk membantu mengkalibrasi kecerahan tampilan. Untuk meminta:
Pengaturan sekering sama dengan Arduino uno kecuali 4.3V BOD, misalnya:
avrdude -p m328p -U lfuse:w:0xff:m -U hfuse:w:0xde:m -U efuse:w:0x04:m -v
Sensor suhu MCP9800/1/2/3 opsional dapat dimasukkan pada bus I2C. Jika ada, itu akan terdeteksi secara otomatis, dan suhu akan ditampilkan pada LCD dengan waktu.
Sirkuit skema dan papan PC untuk proyek ini tersedia di https://github.com/jchristensen/poweroutagemonitor_hw
Alih -alih menggunakan fungsi (mungkin lebih umum) setSyncProvider() di perpustakaan waktu, kode saat ini menggunakan interupsi 1Hz dari RTC untuk menjaga waktu. Ini telah menjadi metode yang saya sukai, tetapi bukan itu masalahnya ketika saya merancang papan logger pemadaman listrik.
Oleh karena itu diperlukan kawat di bagian belakang papan untuk memberikan sinyal interupsi ke MCU. Hubungkan kawat dari pin "MFP" RTC ke pin atmega328p 6 (alias PD4 atau pin Arduino D4) seperti yang ditunjukkan pada foto di bawah ini. (Versi papan 1.2 termasuk koneksi ini; oleh karena itu kawat tidak diperlukan.)