Aktifkan Arduino dengan timer setiap 24 jam

9

Saat ini saya sedang mengerjakan proyek Arduino yang mengirimkan muatan baterai mobil saya sekali sehari melalui ESP8266 kepada saya. Selama musim dingin saya tidak mengendarai mobil saya, dan saya ingin mendapat informasi ketika baterai jatuh melebihi nilai kritis, sehingga saya dapat mengisi daya dan mencegah kerusakan.

Jadi efisiensi energi penting untuk proyek ini, sehingga tidak membuang baterai itu sendiri. Saya membaca banyak tentang mode tidur, regulator drop down yang efisien dll. Ini semua memiliki kesamaan bahwa regulator tegangan selalu berjalan, yang bukan yang saya inginkan.

Saya mencari semacam "sirkuit swich-on-timer". Itu harus menghitung mundur 24 jam dan kemudian menghidupkan relay atau MOSFET, yang menghubungkan regulator tegangan ke daya dan dengan yang menyalakan Arduino dan ESP8266. Ketika Arduino selesai dengan transmisi, itu mengatur ulang timer, yang memutuskan regulator tegangan dari daya, dan sebagainya. Tentu saja, rangkaian timer harus menggunakan daya yang sangat kecil.

Adakah yang tahu sirkuit seperti itu? Saya mencari di AliExpress dengan semua variasi kata yang muncul di pikiran saya, tanpa hasil. Atau mungkin IC yang dapat digunakan (dengan mudah) untuk membuat sirkuit seperti itu?

Dirk Pitt
sumber
1
Tidak semua regulator tegangan sama. Beberapa hanya akan menggunakan beberapa mikro-amp.
Gerben
Berpikir di luar kotak ... Bukankah pengatur waktu standar sudah cukup?
user31208

Jawaban:

5

Salah satu pendekatan akan menggunakan modul DS3231 (Precision Real Time Clock). Modul semacam itu dijual di Ebay dengan harga di bawah $ 1. Cari ds3231 arduino.

Biasanya, modul-modul ini memiliki konektor enam-pin, dengan pin berlabel 32K, SQW, SCL, SDA, VCC, dan GND. Seperti disebutkan dalam spesifikasi DS3231, pin INT / SQW digunakan untuk output gelombang persegi atau untuk output interupsi. Pada halaman 13 dari spesifikasi, di bagian Daftar Kontrol, dikatakan:

Bit 2: Kontrol Interupsi (INTCN). Bit ini mengontrol sinyal INT / SQW. Ketika bit INTCN diatur ke logika 0, gelombang persegi dihasilkan pada pin INT / SQW. Ketika bit INTCN diatur ke logika 1, maka kecocokan antara register yang menjaga waktu dan salah satu register alarm mengaktifkan output INT / SQW (jika alarm juga diaktifkan).

Awalnya, Anda akan menjalankan sketsa untuk mengatur DS3231: nyalakan alarm harian, aktifkan interupsi daripada gelombang persegi, atur waktu saat ini, dll. Kemudian, muat program operasional yang membaca tegangan aki mobil setiap kali dijalankan , dan bertindak dengan tepat.

Pin DS3231 INT / SQW akan ditransfer ke gerbang M-channel MOSFET yang mengalihkan daya 12V ke Arduino. P-fet akan menyala ketika pin keluaran tiriskan terbuka INT / SQW menyala. Program operasional menjalankan bisnisnya dan kemudian membersihkan tanda interupsi DS3231, untuk mematikan daya hingga alarm berikutnya terjadi. (Untuk debugging, atur interval yang lebih singkat dari satu hari; misalnya, satu menit sekali, seperti dijelaskan dalam Tabel 2, Alarm Mask Bits, pada halaman 12 dari spesifikasi.)

Biasanya, DS3231 menarik 0,84 μA saat dijalankan dari baterai 3.3V, atau 1 μA dari 5V. Lihat Karakteristik Listrik, halaman 3 dari spesifikasi.

James Waldby - jwpat7
sumber
1
Gerbang P-fet mungkin harus ditarik hingga +12 melalui sesuatu seperti resistor 1 megohm; jika tidak maka akan terbuka secara efektif ketika pin INT / SQW dimatikan, dan dapat melayang ke level yang sewenang-wenang
James Waldby - jwpat7
3

Timer atau rangkaian waktu itu sendiri harus menarik beberapa arus. Salah satu chip AVR pico-power menarik arus sangat sedikit dalam mode sleep - dalam 10-an micro-amp untuk 328, jika saya ingat dengan benar. Tidur AVR untuk undian saat ini paling tidak perlu hampir semuanya ditutup tetapi pengawas waktu, dan periode WDT maksimum adalah 8 detik. Perpustakaan seperti Narcoleptic akan mengatur periode yang lebih lama untuk Anda. Yang perlu Anda lakukan adalah menyediakan catu daya teregulasi yang jauh lebih efisien daripada yang dibangun di papan Arduino (jika itu yang akan Anda gunakan). Setelah itu, beban Arduino pada baterai mobil Anda harus mikroskopis.

Salah satu desain yang memungkinkan untuk pasokan yang efisien adalah serangkaian baterai alkaline, katakanlah 3 seri untuk output 4,5 (sementara segar) kali 2 atau lebih string secara paralel, terhubung langsung ke bus 5v.

Saya belum melakukan penganggaran daya untuk mengetahui kapasitas yang Anda butuhkan dan apakah Anda akan membutuhkan sel D atau dapat membuat array praktis dari yang lebih kecil, katakanlah AAS, tetapi itu adalah cara untuk mencapai nol beban pada baterai mobil (diskon persyaratan sensor tegangan baterai mobil). Anda mungkin ingin memasukkan kesehatan array baterai Arduino dalam laporan harian, atau, untuk harga beberapa Alkaline, Anda mungkin mendesain baterai Arduino secara berlebihan sehingga pemantauannya tidak diperlukan.

Beberapa titik data menunjukkan baterai yang terpisah merupakan pendekatan yang layak:

  • Alkaline 9v tunggal menjalankan detektor asap selama lebih dari setahun termasuk musim dingin yang berlebihan di loteng yang tidak dipanaskan (menurut pengalaman saya sendiri), dan Alkaline 9v tidak dikenal karena kapasitasnya.
  • Thermostat kemunduran digital saya telah berjalan selama beberapa tahun pada 2 sel AA, sebelum a) mereka mati, dan b) Saya bangun dan mulai mengubahnya setiap tahun. :)
JRobert
sumber
Saya memiliki ATmega48 (sangat mirip dengan 328P) yang menjalankan beberapa sel AA sejak Juni 2012. Ini terjaga selama lebih dari 4 menit per hari, tidur sisa waktu. Tidak mengganti baterai sejauh ini.
Edgar Bonet
Itu waktu berjalan yang mengesankan - terima kasih untuk titik data tambahan, @EdgarBonet! Saya berharap Arduino yang sedang tidur dan baterai Alkaline bisa menjadi sistem "set-it-and-forget-it" tetapi tanpa menghitung konsumsi energinya, saya tidak mengira itu akan bekerja dengan baik. Jadi, @DirkPitt, ada beberapa data dukungan dunia nyata.
JRobert
Ini bukan Arduino lengkap: Saya tidak bisa mengatur di bawah ~ 40 mA dengan Uno saya, sedangkan ATmega telanjang SLEEP_MODE_PWR_SAVE, dengan hanya timer async yang aktif, mengambil sekitar 2 μA.
Edgar Bonet