Mengukur tegangan baterai Lithium ion (dengan demikian kapasitas yang tersisa)

14

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):

masukkan deskripsi gambar di sini

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).

boardbite
sumber
1
"Saya menggunakan nilai resistor besar". Pin input mungkin memiliki arus bocor, nilai kasus terburuk yang khas adalah 1 uA. Dengan arus rendah melalui pembagi, ini dapat merusak pembacaan.
stevenvh
Jadi saya ingin arus rendah melalui pembagi tetapi cukup tinggi sehingga setidaknya urutan besarnya di atas arus bocor maksimum.
boardbite
Atau gunakan FET untuk menghidupkan dan mematikan pembagi, seperti yang saya sarankan dalam jawaban untuk pertanyaan serupa.
stevenvh
Dengan FET di tempatnya, dalam "keadaan" pembagi, apakah Anda pikir ini juga dapat memecahkan masalah IC pembacaan yang salah tentang keberadaan baterai? (BTW, sungguh kebetulan bahwa orang itu memposting pertanyaan hari ini juga!)
boardbite
1
Anda mendapatkan FET yang salah di sisi yang salah. Jika Anda mematikan yang satu ini tegangan penuh akan berada di pin input, karena R1 tidak akan menarik arus. Anda memerlukan P-MOSFET pada sisi yang tinggi, sehingga mematikannya akan menarik pin I / O ke ground.
stevenvh

Jawaban:

12

masukkan deskripsi gambar di sini

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.

stevenvh
sumber
Terima kasih atas jawaban resmi! Saya pikir saya bisa memikirkan beberapa kegunaan untuk kombinasi khusus ini. Saya telah memperbarui skema saya di Pertanyaan, berdasarkan ini. Dan hargai penjelasan N-FET.
boardbite
Apa yang akan Anda rekomendasikan sebagai contoh MOSFET N-Channel yang pas (tipe SMD ideal) untuk digunakan di sini? IRF530 juga terlihat besar dan tidak terlalu murah. (Untuk P-Channel, saya melihat Si2303 datang dalam SMD, sehingga seseorang sudah diurus.)
boardbite
1
@ Inga - Anda tidak perlu arus, jadi on-resistance tidak begitu penting. Lihat saja voltase ambang gerbang: seharusnya menyala pada 3,3 V, tetapi meskipun itu tidak harus menenggelamkan arus, dan kemudian ada banyak pilihan. The BSS138 adalah salah satu yang termurah saya bisa menemukan, dan akan melakukan dengan baik.
stevenvh
7

@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.

masukkan deskripsi gambar di sini

[...] tegangan baterai (dengan demikian kapasitas yang tersisa)

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.

Mengapa bukan MOSFET N-channel tunggal di sisi bawah dan dua pembagi resistor di sisi atas?
[dari komentar di bawah 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.

Nick Alexeev
sumber
Nick terima kasih! Itu masuk akal, dan saya telah memperbarui skema (Pengukur bahan bakar adalah sebuah pilihan, tetapi saya juga mencoba untuk mempelajari beberapa elektronik dasar dan bereksperimen, maka ide pembagi tegangan)
boardbite
Mengapa tidak ada Mosfet N tunggal di sisi rendah dan pembagi dua resistor di sisi atas? Tidak dapat melihat mengapa perlu menggunakan N Mosfet untuk menggerakkan P Mosfet
Luis Carlos
1
@Luis Saya sudah mengedit jawaban dan menambahkan respons ke komentar Anda.
Nick Alexeev
4

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.

Jonny B Bagus
sumber
Penjelasan itu masuk akal. Pasti 0,4 mA tidak sebanyak itu! Saya hanya berusaha untuk seideistis mungkin :) Apakah Anda punya dugaan mengapa memiliki pembagi ini mungkin mempengaruhi pembacaan IC pengisi daya saya apakah ada baterai?
boardbite
Dugaan saya adalah bahwa masih ada koneksi antara pin baterai positif di mana pembagi berada, dan + 5V dari usb. Saya tidak tahu sirkuit khusus Anda, tetapi saya yakin Anda dapat menyimpulkan apa yang terjadi di mana jika Anda melihat skema Arduino .
Jonny B Bagus
Saya yakin bahwa jika Anda mengikuti gagasan stephenh menggunakan FET untuk menghubungkan / memutuskan pembagi bila perlu, semuanya akan keren. MOSFET memiliki resistensi yang sepenuhnya dapat diabaikan untuk pembagi Anda. Anda mungkin perlu ADC lain untuk memantau apakah USB terpasang atau tidak.
Jonny B Bagus
Terima kasih; Saya telah memperbarui pertanyaan berdasarkan dua saran, dan menambahkan skema. Sejauh USB-supply-monitoring, IC pengisian sudah memiliki status output untuk ini juga!
boardbite