Isi kandungan:

Satu lagi Penguji Kapasiti Bateri: 6 Langkah
Satu lagi Penguji Kapasiti Bateri: 6 Langkah

Video: Satu lagi Penguji Kapasiti Bateri: 6 Langkah

Video: Satu lagi Penguji Kapasiti Bateri: 6 Langkah
Video: Hati-hati beli Cell Baterai 18650!!! Cara tes Amper Baterai SONY VTC4 Ori Authentic atau Palsu kw 2024, November
Anonim
Satu lagi Penguji Kapasiti Bateri
Satu lagi Penguji Kapasiti Bateri
Satu lagi Penguji Kapasiti Bateri
Satu lagi Penguji Kapasiti Bateri

Mengapa satu lagi penguji kapasiti

Saya membaca banyak arahan membina penguji tetapi tidak ada yang sesuai dengan keperluan saya. Saya ingin dapat menguji lebih daripada sekadar sel NiCd / NiMH atau Singe singe. Saya ingin dapat menguji bateri alat kuasa tanpa membawanya ke bahagian pertama. Oleh itu, saya memutuskan untuk melihat lebih dekat mengenai perkara ini dan merancang sendiri. Satu perkara membawa kepada perkara lain dan akhirnya saya memutuskan untuk menulis sendiri arahan. Saya juga memutuskan untuk tidak memasukkan semua butiran bagaimana sebenarnya untuk membina penguji kerana semua orang dapat menentukan pilihan tertentu seperti ukuran resistor yang akan digunakan atau jika PCB diperlukan atau cukup Veroboard dan ada juga banyak petunjuk tentang bagaimana pasang helang atau cara membuat PCB. Dengan kata lain, saya akan menumpukan perhatian pada skema dan kod dan bagaimana menentukur penguji.

Langkah 1: Sejarah - Versi 1

Sejarah - Versi 1
Sejarah - Versi 1

Di atas adalah versi pertama dengan sokongan input input 10V di bawah yang ditambah (R12 & R17 & Q11 & Q12).

Versi pertama lebih kurang diambil dari instruksional oleh deba168 (malangnya saya tidak dapat mencari arahannya untuk memberikan pautan). Hanya beberapa perubahan kecil yang dibuat. Dalam versi ini saya mempunyai satu perintang beban 10 ohm yang dikendalikan oleh mosfet. Ini menimbulkan beberapa masalah. Semasa menguji satu sel NiCd atau NiMH, masa yang diperlukan dapat diukur dengan mudah dalam beberapa jam jika bukan hari. Bateri 1500mAh mengambil masa lebih dari 12 jam (arus hanya 120mA). Sebaliknya, versi pertama hanya boleh menguji bateri di bawah 10V. Dan bateri 9.6V yang diisi penuh sebenarnya boleh mencapai 11.2V yang tidak dapat diuji kerana had 10V. Sesuatu perlu dilakukan. Pertama, saya hanya menambah beberapa mosfet dan perintang untuk menjadikan pembahagi voltan dapat membenarkan lebih daripada 10V. Tetapi ini sebaliknya menimbulkan masalah lain. Bateri 14.4V yang dimuat sepenuhnya boleh mempunyai daya tambah sehingga 16.8V yang dengan perintang 10 ohm bermaksud arus 1.68A dan tentu saja pelesapan kuasa dari perintang beban hampir 30W. Jadi, dengan voltan rendah terlalu lama masa ujian dan dengan voltan tinggi arus terlalu tinggi. Jelas itu bukan penyelesaian yang mencukupi dan diperlukan pengembangan lebih lanjut.

Langkah 2: Versi 2

Saya mahukan penyelesaian di mana arus akan berada dalam had tertentu tanpa mengira voltan bateri. Salah satu penyelesaiannya ialah dengan menggunakan PWM dan hanya satu perintang, tetapi saya lebih suka mempunyai penyelesaian tanpa berdenyut arus atau mempunyai keperluan untuk menghilangkan haba mosfet. Oleh itu, saya membuat penyelesaian dengan 10 slot voltan, masing-masing selebar 2V, menggunakan 10 perintang 3.3ohm dan mosfet untuk setiap perintang.

Langkah 3: Inilah Cara Ternyata

Inilah Bagaimana Ia Ternyata
Inilah Bagaimana Ia Ternyata

Komen di litarSeseorang boleh berpendapat bahawa kehilangan voltan pada mosfet tidak dapat dielakkan kerana rintangan mosfet sangat rendah, tetapi saya telah meninggalkan pilihan mosfet kepada pembaca dan dengan itu rintangan dapat melebihi 1 ohm di mana ia bermula perkara. Pada versi satu memilih mosfet yang betul akan menghilangkan keperluan pengukuran titik yang lebih rendah tetapi pada versi 2 saya memutuskan untuk mengukur voltan di atas satu perintang sahaja yang kemudian menjadikannya penting untuk mempunyai dua titik pengukuran. Dan alasan di sebalik pilihan tersebut adalah kesederhanaan dalam memasang Veroboard. Ini menambah ralat ketepatan kerana voltan yang diukur pada satu perintang jauh lebih kecil daripada mengukur semua perintang. Pada pemilihan komponen, saya memutuskan untuk menggunakan apa yang sudah saya gunakan atau yang mudah diperoleh. Ini menyebabkan BOM mengikuti:

  • Arduino Pro Mini 5V! PENTING! Saya menggunakan versi 5V dan semuanya berdasarkannya
  • Paparan OLED 128x64 I2C
  • Perintang 10 x 5W 3.3 Ohm
  • 3 x 2n7000 mosfet
  • 10 x mosfet IRFZ34N
  • Perintang 6 x 10 kOhm
  • Perintang 2 x 5 kOhm
  • Kapasitor 16V 680uF
  • 1 kipas CPU lama

Saya belum menambah perkara berikut dalam skema

  • perintang penarik pada garis I2C, yang saya perhatikan menjadikan paparan lebih stabil
  • talian kuasa
  • kapasitor dalam barisan 5V yang juga menstabilkan paparan

Semasa menguji, saya dapati perintang beban akan menjadi sangat panas terutamanya jika semuanya digunakan. Suhu dinaikkan hingga lebih dari 100 darjah Celsius (yang melebihi 212 darjah Fahrenheit) dan jika keseluruhan sistem ditutup dalam kotak mesti ada semacam penyejukan yang disediakan. Perintang yang saya gunakan ialah 3.3 ohm / 5W dan arus maksimum harus berlaku dengan kira-kira 2V setiap perintang memberikan 2V / 3.3 = 0.61A yang menghasilkan 1.21W. Saya akhirnya menambah kipas sederhana di dalam kotak. Terutama kerana kebetulan saya mempunyai beberapa peminat CPU lama.

Fungsi skematik

Ia agak lurus ke depan dan jelas. Bateri yang akan diuji disambungkan ke rangkaian perintang dan arde. Titik pengukuran voltan adalah sambungan bateri dan perintang pertama. Pembahagi voltan digunakan kemudian untuk menurunkan voltan ke tahap yang lebih sesuai dengan Arduino. Satu output digital digunakan untuk memilih julat pembahagi 10V atau 20V. Setiap perintang dalam beban secara individu dapat dibumikan menggunakan mosfets, yang digerakkan secara langsung oleh Arduino. Dan akhirnya, paparan disambungkan ke pin Arduino I2C. Tidak banyak yang diperkatakan mengenai skema J

Langkah 4: Kodnya

Kod tersebut
Kod tersebut

Di atas dapat dilihat fungsi kod yang kasar. Mari kita perhatikan lebih dekat kodnya (fail arduino ino dilampirkan). Terdapat sebilangan fungsi dan kemudian gelung utama.

Gelung utama

Apabila pengukuran sudah siap, hasilnya ditunjukkan, dan pelaksanaannya berakhir di sana. Sekiranya pengukuran belum dilakukan, pertama-tama diperiksa jenis bateri mana yang dipilih dan kemudian voltan merentasi input. Sekiranya voltan melebihi 0.1V mesti ada sekurang-kurangnya sejenis bateri yang disambungkan. Dalam hal ini subrutin dipanggil untuk mengetahui berapa banyak sel yang ada di dalam bateri untuk memutuskan bagaimana menguji. Jumlah sel lebih kurang maklumat yang dapat digunakan dengan lebih baik tetapi, dalam versi ini, ia dilaporkan melalui antara muka bersiri sahaja. Sekiranya semuanya baik, proses pelepasan dimulakan dan pada setiap putaran gelung utama kapasiti bateri dikira. Di hujung gelung utama, paparan diisi dengan nilai yang diketahui.

Prosedur untuk menunjukkan hasil

Fungsi showResults hanya menetapkan garis yang akan ditunjukkan pada paparan dan juga tali yang akan dihantar ke antara muka bersiri.

Prosedur untuk mengukur voltan

Pada permulaan fungsi, Vcc Arduino diukur. Ia diperlukan untuk dapat mengira voltan yang diukur menggunakan input analog. Kemudian voltan bateri diukur menggunakan julat 20V untuk dapat menentukan julat mana yang akan digunakan. Kemudian voltan bateri dan voltan perintang dikira. Pengukuran voltan bateri memanfaatkan kelas DividerInput yang mempunyai kaedah membaca dan voltan untuk memberikan bacaan mentah atau voltan yang dikira dari input analog yang dimaksudkan.

Prosedur untuk memilih nilai terpakai

Dalam fungsi selectUsedValues jumlah sel ditebak dan had tinggi dan rendah untuk bateri ditetapkan untuk digunakan dengan prosedur pelepasan. Juga pengukuran ditandai sebagai dimulakan, Batas prosedur ini ditetapkan pada awal pemboleh ubah global. Walaupun mereka dapat tetap, dan mereka juga dapat ditentukan dalam prosedur kerana tidak digunakan secara global. Tapi hei selalu ada sesuatu untuk diperbaiki:)

Prosedur untuk mengira kapasiti bateri

Fungsi pelepasan menguruskan sebenarnya mengira kapasiti bateri. Ia mendapat had voltan rendah dan tinggi untuk bateri yang diuji sebagai parameter. Nilai tinggi tidak digunakan dalam versi ini, tetapi nilai rendah digunakan untuk memutuskan kapan harus menghentikan pengujian. Pada permulaan fungsi jumlah perintang yang akan digunakan diketahui dengan menggunakan fungsi yang dibuat untuk tujuan ini. Fungsi mengembalikan bilangan perintang dan pada masa yang sama memulakan pembuangan dan menetapkan semula kaunter. Kemudian voltan diukur dan digunakan bersama dengan nilai perintang yang diketahui untuk mengira arus. Sekarang kita mengetahui voltan dan arus dan masa dari itu sejak pengukuran terakhir, kita dapat mengira kapasiti. Pada akhir proses pelepasan voltan bateri dibandingkan dengan had rendah dan jika sudah turun di bawah had, fasa pelepasan berhenti, mosfet ditutup, dan pengukuran ditandai sebagai siap.

Prosedur untuk mencari bilangan perintang yang akan digunakan

Dalam fungsi selectNumOfResistors perbandingan sederhana voltan dengan nilai pratetap dilakukan dan hasilnya jumlah perintang yang akan digunakan diputuskan. Mosfet yang sesuai dibuka untuk melangkau beberapa perintang. Slot voltan dipilih supaya arus maksimum setiap saat semasa pelepasan akan tetap sedikit melebihi 600mA (2V / 3.3Ohm = 606mA). Fungsi mengembalikan bilangan perintang yang digunakan. Kerana kipas didorong dari garisan yang sama dengan mosfet pertama, ia mesti selalu dibuka ketika pelepasan sedang berlaku.

Langkah 5: Mengkalibrasi Meter

Mengkalibrasi Meter
Mengkalibrasi Meter

Untuk membuat pengukur dikalibrasi, saya membuat aplikasi lain (dilampirkan). Ia menggunakan perkakasan yang sama. Pada mulanya nilai pembahagi pembetulan ditetapkan ke 1000.

const int divCorrectionB10V = 1000; // pengganda pembetulan pembahagi dalam julat 10V const int divCorrectionR10V = 1000; // pengganda pembetulan pembahagi dalam julat 10V const int divCorrectionB20V = 1000; // pengganda pembetulan pembahagi dalam julat 20V const int divCorrectionR20V = 1000; // pengganda pembetulan pembahagi dalam julat 20V

dalam fungsi readVcc () voltan Vcc yang dihasilkan bergantung pada menetapkan nilai pada baris terakhir fungsi sebelum kembali. Biasanya anda dapat mencari di internet nilai 1126400L untuk digunakan dalam pengiraan. Saya perhatikan hasilnya tidak betul.

Proses penentukuran:

  1. Muatkan aplikasi pengukuran ke Arduino.
  2. Anda dapat melihat di Arduino (dan dalam output bersiri dan jika kipas berputar) jika beban dihidupkan. Sekiranya sudah bertukar suis pemilihan jenis bateri.
  3. Laraskan nilai dalam readuVCC () untuk mendapatkan hasil yang betul. Ambil nilai yang diberikan fungsi (dalam milivolt) dan bahagikan nilai panjang dengannya. Anda akan mendapat nilai mentah dari rujukan dalaman. Sekarang ukur voltan bekalan sebenar dalam milivol dengan multimeter dan kalikan dengan nilai yang dikira sebelumnya dan anda akan mendapat nilai panjang yang baru diperbetulkan. Dalam kes saya, fungsi kembali 5288mV ketika Vcc sebenarnya ialah 5.14V. Mengira 1126400/5288 * 5140 = 1094874 yang saya selesaikan dengan percubaan. Masukkan nilai baru dalam kod dan muat naik semula ke Arduino.
  4. Melaraskan nilai pembetulan pembahagi resistor input analog berlaku dengan menggunakan sumber kuasa laras yang digunakan untuk memberi makan input meter. Paling mudah ialah menggunakan voltan dari 1V hingga 20V dengan langkah 1V dan merekodkan hasilnya ke spreadsheet. Di spreadsheet rata-rata diambil. Nilai yang diperbetulkan dikira dengan formula berikut: “Raw_value * range * Vcc / Vin” di mana raw_value adalah nilai dalam 10VdivB, 10VdivR, 20VdivB atau 20VdivR bergantung pada pembetulan mana yang akan dikira.

Lihat hamparan seperti apa yang saya cari. Purata dikira hanya dari nilai yang berada pada julat dan nilai tersebut kemudian ditetapkan dalam aplikasi meter sebenar.

Seperti ini

const int divCorrectionB10V = 998; // pembahagi pembahagi pembahagi dalam julat 10V const int divCorrectionR10V = 1022; // pembahagi pembahagi pembahagi dalam julat 10V const int divCorrectionB20V = 1044; // pembahagi pembahagi pembahagi dalam julat 20V const int divCorrectionR20V = 1045; // pembahagi pembahagi pembahagi dalam julat 20V

Menyesuaikan nilai perintang dapat dilakukan dengan memberikan beberapa voltan ke input (iaitu 2V), menghidupkan suis jenis kelawar (untuk mendapatkan beban) dan mengukur arus masuk dan voltan melintasi perintang pertama dan membahagi voltan dengan arus. Bagi saya 2V memberikan 607mA yang memberikan 2 / 0.607 = 3.2948 ohm yang saya bulatkan menjadi 3.295 ohm. Jadi sekarang penentukuran selesai.

Langkah 6: CATATAN Terakhir

Satu catatan penting di sini. Sangat penting untuk mempunyai semua sambungan dalam keadaan prima dari bateri ke perintang. Saya mempunyai satu sambungan yang teruk dan tertanya-tanya mengapa saya mendapat voltan kurang 0.3V di grid perintang daripada pada bateri. Ini bermaksud bahawa proses pengukuran berakhir dengan segera dengan sel NiCd 1.2V kerana had bawah 0.95V dicapai dengan cepat.

Disyorkan: