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:
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.
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.
sumber
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.
sumber