Apa yang saya kerjakan: Saya menjalankan papan Arduino buatan saya sendiri (dalam arti bahwa saya menggunakan bootloader dan editor kode Arduino) pada 3.3V, dan ditenagai oleh baterai Lithium ion, yang diisi daya USB oleh Microchip yang sesuai. pengisi daya IC.
Apa yang ingin saya capai: Saya ingin mengukur kapasitas baterai sekali setiap menit. Saya memiliki LCD yang terpasang, jadi idenya adalah bahwa pengaturan keseluruhan membuat saya tahu bagaimana baterai bekerja pada saat tertentu. Lembar data baterai memiliki kurva tegangan versus debit, dan dengan mengukur tegangan baterai, saya dapat memperkirakan kapasitas yang tersisa (sangat kasar tetapi cukup untuk saya!).
Apa yang saya lakukan:
(EDIT: Nilai-nilai resistor diperbarui dan saklar P-MOSFET ditambahkan berdasarkan saran @stevenvh dan @ Jonny).
Saya menghubungkan pembagi tegangan dari baterai V_plus, dengan "porsi" yang lebih besar menuju analog-read-pin (yaitu, ADC) pada chip Arduino / Atmega.
Pembagi adalah 33 KOhm-ke-10 KOhm, sehingga memungkinkan pengukuran hingga maksimum 4,1 Volts dari baterai Li-ion dari mikrokontroler level 3.3V saya.
Juga, menggunakan salah satu pin I / O yang terhubung ke n-channel MOSFET, saya bisa mengalihkan arus melalui pembagi hanya ketika saya membutuhkan pengukuran.
Berikut ini adalah skema kasar (diperbarui untuk kedua kalinya berdasarkan saran dari @stevenvh dan @Nick):
Pertanyaan saya:
Bagaimana pengaturan saya saat ini?
Satu-satunya kendala saya adalah: (1) Saya ingin melakukan pengukuran kasar kapasitas baterai berdasarkan pembacaan tegangan, seperti dijelaskan di atas. (2) Saya ingin mencegah pembagi tegangan mengganggu pembacaan IC pengisian daya baterai oleh saya (dalam pengaturan asli saya, pembagi kadang-kadang menyebabkan IC salah membaca keberadaan bahkan ketika baterai tidak ada).
Jawaban:
Ini tampaknya sangat mirip dengan skema Nick, mungkin sedang sibuk menggambar ketika dia memposting :-).
Pertama mengapa Anda tidak dapat menggunakan N-FET di sisi yang tinggi: ia membutuhkan tegangan gerbang beberapa volt lebih tinggi dari sumbernya, dan 4.2 V adalah semua yang Anda miliki, tidak ada yang lebih tinggi, sehingga tidak akan berfungsi.
Saya memiliki nilai yang lebih tinggi untuk pull-up, meskipun nilai 100 kΩ juga akan berlaku. 10 kΩ akan menyebabkan arus ekstra 400 μA yang tidak perlu saat Anda mengukur. Bukan akhir dunia, tapi ini adalah 1 resistor dalam kedua kasus, jadi mengapa tidak menggunakan nilai yang lebih tinggi.
Untuk MOSFET, ada berbagai bagian untuk dipilih karena persyaratannya tidak begitu ketat; Anda dapat mempertimbangkan yang murah seperti, misalnya, Si2303 untuk saluran-P dan BSS138 untuk saluran-N.
sumber
@Inga. Ini lebih merupakan komentar daripada jawaban. Tapi saya ingin memposting gambar, jadi saya mempostingnya sebagai jawaban.
Mikrokontroler Anda (UC) diaktifkan dengan + 3.3V. Tiriskan dari P-MOSFET yang diusulkan bisa setinggi + 4.1V. Seperti saat ini ditarik, sinyal logika + 3.3V tidak akan dapat mematikan P-MOSFET sepenuhnya. Q6 dalam skema di bawah ini membentuk output drain terbuka, yang toleran terhadap + 4.1V.
C14 menurunkan impedansi, yang akan dilihat A / D Anda.
Anda mungkin menemukan bahwa merasakan tegangan baterai bukanlah cara yang akurat untuk merasakan kapasitas yang tersisa. Dalam peralatan portabel (ponsel, laptop), kapasitas baterai diperkirakan dengan mengukur arus masuk dan keluar baterai. Ada puluhan IC pengukur bahan bakar baterai khusus ( bq27200 , misalnya), yang membantu tugas ini.
Saklar sisi rendah memiliki masalah ketika tegangan baterai (V bat ) lebih besar dari tegangan suplai mikrokontroler (V cc ). Ketika sakelar sisi rendah mati, ujung ground pembagi tegangan mengapung, pembagi tidak lagi membelah, tegangan baterai penuh muncul pada pin ADC mikrokontroler. Ini dapat merusak UC. Ini juga akan membuat jalur kebocoran yang akan digunakan baterai.
Sakelar sisi tinggi diperlukan saat V bat > V cc .
1 Saya akan menggunakan Vcc singkatnya, tetapi diskusi ini berlaku untuk Vdd , AV cc , AV dd juga. Jika ragu, cari dalam lembar data, tentu saja.
sumber
Iklan: Saya pikir cukup adil untuk menggunakan pembagi tegangan sederhana untuk mendeteksi tegangan baterai. Meskipun, Anda harus hati-hati memilih perlawanan. Impedansi internal input ADC Anda adalah 100 kΩ, menurut lembar data ATmega328 . Lihat "Gambar 23-8. Sirkuit Input Analog". Jika pembagi Anda memiliki impedansi yang sebanding dengan input ADC, sirkuit input ADC pada dasarnya akan berperilaku seperti simpul lain di pembagi. Mungkin memberi Anda offset dalam pembacaan ADC.
Menggunakan pembagi dengan hingga 10kΩ melintasi rel akan cukup rendah untuk mengabaikan impedansi input ADC, sementara hanya menggunakan 410μA. Jika itu terlalu banyak untuk aplikasi Anda, tentu saja Anda dapat memilih resistensi yang lebih besar, tetapi perlu diingat bahwa ADC ada dan terhubung ke Vcc / 2.
sumber