Apakah memeriksa tegangan cadangan pada RTC menguras baterai cadangan itu?

8

Saya sedang mengerjakan proyek ATMega yang akan menjaga waktu dan saya mencoba membuatnya sehingga Anda memiliki pilihan untuk waktu perangkat lunak (berbasis millis ()), DS1307, atau DS3231 (ChronoDot) RTC.

Yang paling mendasar, yang ingin saya lakukan adalah memiliki header untuk ChronoDot yang tersedia untuk disolder dan entah bagaimana dalam perangkat lunak mendeteksi apakah ChronoDot terpasang dan beralih untuk menggunakannya. Biasanya cukup mudah untuk memeriksa apakah DS1307 atau DS3231 hadir karena mereka menggunakan register I2C yang sama, tetapi setelah pemeriksaan awal mereka sedikit menyimpang satu sama lain dan yang terakhir memiliki lebih banyak fitur. Jadi saya masih ingin menentukan yang terhubung. Secara umum, saya berencana memiliki tempat langsung untuk menyolder di DS1307 sebagai opsi default dan dukungan DS3231 akan dengan ChronoDot lengkap hanya melalui header 4 pin ganda. ChronoDot pada dasarnya akan sesuai dengan tempat di mana DS1307 biasanya pergi (tidak akan dihuni dalam kasus ini). Alasan utama saya berfokus pada ChronoDot secara khusus adalah karena ' populer, mudah didapat dan tidak memerlukan solder SMD untuk pengguna akhir (ini jika untuk kit). Jadi, inilah yang saya pikirkan ...

Baik DS1307 dan DS3231 memiliki garis Vbat pada chip, tetapi tidak benar-benar diperlukan untuk apa pun. Namun, ChronoDot memiliki pin VBat yang sebenarnya di papan breakout. Saya mungkin hanya bisa menghubungkan Vbat dari header ChronoDot dan bukan DS1307 dan menghubungkannya ke pin input digital pada ATMega saya. Tetapi apakah pin input ditarik ke tanah oleh resistor (tidak benar-benar yakin apa nilai ... mungkin 4.7k?). Jika teori EE saya benar maka saya dapat membaca pin itu dan jika saya mendapatkan rendah, tidak ada chronodot tetapi jika saya mendapatkan tinggi, ada.

Sesuatu seperti ini:

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Pertanyaan utama saya di sini adalah apakah melakukan ini hanya akan menghabiskan baterai cadangan pada RTC? Biasanya tidak akan ada arus yang diambil dari baterai cadangan sementara daya utama, 5V, disediakan tetapi apakah menghubungkan ini ke input digital membuatnya menarik daya dari baterai sepanjang waktu? Atau, apakah ada mode yang perlu saya masukkan pin setelah membaca darinya untuk "memutuskan", jadi untuk berbicara? Saya tahu saya bisa mengubahnya ke output, tapi saya percaya bahwa jika itu ditetapkan sebagai output dan rendah saya pada dasarnya akan membumikan baterai.

Bagaimanapun, kursus EE saya sudah lama sekali. Setiap bantuan teori di sini akan dihargai.

Adam Haile
sumber

Jawaban:

8

Anda pasti akan menguras baterai melalui resistor. Jumlah arus yang akan Anda tarik akan diatur oleh hukum Ohm: I = V / R. Katakanlah tegangan baterai Anda adalah 3V (yaitu Vbat chronodot yang biasa). Dengan resistor 4,7 kOhm Anda akan menggambar 3/4700 = 638 mikrogram terus menerus. Jika Anda menjadikannya sebagai resistor 1 MOhm, Anda akan menggambar 3/1000000 = 3 microamps. Dan Jika Anda membuat itu resistor 10 MOhm, Anda akan menggambar 3 / 1e7 = 300 nanoamps.

Semakin besar nilai resistor yang Anda pilih, semakin sedikit arus yang akan Anda tarik terus-menerus, tetapi semakin lama waktu yang diperlukan untuk pin digital Anda untuk transisi (bayangkan R * C konstanta waktu diatur oleh resistansi dan kapasitansi pin dan jejak). Selama Anda menunggu cukup lama (atau memeriksa kembali secara berkala) setelah startup, Anda harus OK dengan resistor 10 MOhm. Secara teoritis, Anda dapat mengambil lebih banyak noise dengan nilai yang lebih besar juga (karena mulai terlihat lebih dan lebih seperti sirkuit terbuka), tapi saya pikir Anda akan baik-baik saja. Saya bahkan mungkin mempertimbangkan untuk mencapai 100 MOhm.

CR1632 tipikal memiliki 130 miliamp-jam (mAh) energi yang tersimpan di dalamnya, dan mungkin 80% dari itu adalah masa manfaat, jadi mari kita sebut saja 100 mAh untuk kemudahan perhitungan. Perkiraan kasar usia baterai Anda adalah imbang miliamp-jam / miliamp.

  • Dengan resistor 4,7 kOhm Anda, 100 / .638 = 156 jam = 6,5 hari
  • Dengan resistor 1 MOhm itu 100 / 0,003 = 33333 jam = 3,8 tahun
  • Dengan 10 MOhm resistor itu 100 / 0,0003 = 333333 jam = 38 tahun

Ini adalah angka-angka batas atas yang menganggap bahwa sisa sistem Anda tidak memiliki daya. Mereka mewakili masa hidup sistem Anda ketika dimatikan dan baterai hanya dikuras melalui perlawanan. Ada juga banyak efek urutan kedua yang tidak diperhitungkan (pembusukan tegangan, kimia kebocoran baterai internal, dll). Resistor tidak mungkin menjadi masalah terbesar Anda tergantung pada masa hidup yang ingin Anda capai.

vicatcu
sumber
Duh ... tidak percaya saya lupa memperhatikan fakta bahwa saya menghubungkan baterai secara langsung: P Ada saran tentang cara yang berbeda untuk melakukan ini?
Adam Haile
Saya pikir pendekatan Anda baik-baik saja, mengingat resistor yang cukup besar arus bocor tidak akan secara signifikan mempengaruhi masa pakai baterai Anda, saya akan memperbarui dengan lebih banyak matematika.
vicatcu
1
Suara positif: Menjawab pertanyaan utama. @ AdamHaile teknik yang mungkin berguna bagi Anda: voltmeter digital menggunakan FET yang menyajikan drainase setara yang tidak berarti dari resistor dalam pesanan atau MOhms.
shimofuri
1
@AdamHaile satu hal cepat ... Saya perhatikan komentar Anda bahwa sistem Anda adalah 5V di komentar lain. Perhatikan bahwa Tegangan Input digital Anda Batas tinggi cukup tinggi untuk mendaftar dengan baterai yang terkuras (mungkin turun hingga sekitar 2V untuk CR1632) - periksa lembar data mikrokontroler Anda
vicatcu
1

Hampir semua skema pengukuran yang melibatkan resistor, jika dibiarkan terhubung secara permanen, akan menyebabkan penarikan arus yang tidak dapat diterima dan pengurangan masa pakai baterai lithium kecil yang memberi daya pada perangkat ini.

Solusinya kemudian, adalah dengan hanya menarik rangkaian pengukur arus selama sebentar pada interval yang jarang, ketika Anda benar-benar melakukan pengukuran.

Untuk tes digital, ini bisa semudah menggunakan pull-down internal yang dapat dikonfigurasi perangkat lunak, dan hanya mengonfigurasikannya sebagai pull-down untuk periode waktu singkat di sekitar tes. Namun, Anda perlu melihat kemungkinan komplikasi karena memiliki tegangan pada pin ketika MCU yang melakukan pengukuran tidak diaktifkan / dalam mode tidur.

Pengukuran analog akan menjadi lebih rumit, tetapi ide serupa dapat diterapkan. Sebagai contoh, Anda dapat menghubungkan resistor yang lebih rendah dari pembagi tegangan (impedansi tinggi ke I / Os) ke pin keluaran, dan hanya mengendarainya rendah untuk waktu yang mengelilingi pengukuran. Atau Anda bahkan mungkin dapat membangun sirkuit RC dengan kapasitor rendah kebocoran kecil dan satu pin I / O yang dapat Anda kendarai sebagai output, kemudian konfigurasikan sebagai input analog dan ukur voltase setelah beberapa periode waktu. Jika tegangan ambang digital perangkat konsisten (perhatikan suhu!) Anda bahkan dapat melakukan pengukuran analog dengan input digital dengan cara ini, dengan mengukur waktu yang diperlukan kapasitor untuk mengisi daya ke tegangan ambang.

Chris Stratton
sumber
Hmmm ... Saya berharap bisa melakukan hal pull-down internal, tetapi sayangnya hanya ada resistor pull-up internal. Saya mungkin mencoba untuk memperumit hal. Pad solder yang harus dijembatani untuk menggunakan satu mode atau yang lain mungkin akan diterima.
Adam Haile
Anda dapat membuat pulldown yang dapat dikonfigurasi oleh perangkat lunak Anda sendiri dengan resistor ke pin I / O lainnya. Atau Anda dapat menggunakan ide rangkaian sirkuit RC, menggerakkan pin yang sama yang akan Anda konfigurasi ulang sebagai input untuk diukur.
Chris Stratton
Sebenarnya, menggunakan pull-down internal adalah ide yang sangat buruk. Pin I / O umumnya terhubung ke Vdd dan GND dengan dioda untuk mencegah tegangan pin menyimpang di luar tegangan suplai. Ketika chip tidak diberi daya, pin pada dasarnya akan diikat ke GND dengan dua dioda paralel dan menerapkan tegangan di atas ambang batas tegangan dioda akan menghasilkan aliran arus yang sangat besar. Ide yang lebih baik adalah dengan menggunakan transistor PMOS seri yang gerbangnya dikontrol oleh transistor NMOS ke ground. Ini akan meminimalkan kebocoran ketika mikrokontroler tidak diaktifkan.
alex.forencich
1

DS3231 memiliki suhu internal yang dapat Anda baca. Anda bisa mengeluarkan perintah melalui I2C untuk membaca suhu, jika Anda mendapat respons Anda memiliki DS3231, jika tidak Anda memiliki DS1307.

Scott Goldthwaite
sumber
1
Saya tidak berpikir ini menjawab pertanyaan dengan cara apa pun.
shimofuri
Saya kira begitu. Adam di OP ingin menentukan apakah DS3231 atau DS1307 terhubung ke sirkuitnya. Dia berpikir untuk mencoba melakukan ini dengan pin vbat. Saya menyarankan dia melakukannya dengan melihat apakah perangkat akan mengembalikan suhu. Menurut saya itu seharusnya bekerja dengan baik.
Scott Goldthwaite
Saya pikir ini memang menjawab pertanyaan: Bukan pertanyaan yang diajukan, tetapi pernyataan masalah yang mendasarinya. Menarik. Itu akan membuat saya merasa tersanjung jika sedikit menyempurnakan, dan dengan referensi yang ditambahkan.
Anindo Ghosh
Dalam lembar data Maxim, lihat Gambar 1 di halaman 11. Ini menunjukkan register (11 & 12) untuk suhu internal.
Scott Goldthwaite