Daftar Isi:

Penguji Kapasitas Baterai Lain: 6 Langkah
Penguji Kapasitas Baterai Lain: 6 Langkah

Video: Penguji Kapasitas Baterai Lain: 6 Langkah

Video: Penguji Kapasitas Baterai Lain: 6 Langkah
Video: TEST KAPASITAS BATRAI 18650 2024, Juli
Anonim
Penguji Kapasitas Baterai Lain
Penguji Kapasitas Baterai Lain
Penguji Kapasitas Baterai Lain
Penguji Kapasitas Baterai Lain

Mengapa satu lagi penguji kapasitas

Saya membaca banyak instruksi pembuatan tester yang berbeda tetapi sepertinya tidak ada yang sesuai dengan kebutuhan saya. Saya ingin dapat menguji juga lebih dari sekadar menghanguskan sel NiCd/NiMH atau Lion. Saya ingin dapat menguji baterai perkakas listrik tanpa membongkarnya terlebih dahulu. Jadi, saya memutuskan untuk melihat lebih dekat pada masalah ini dan merancang salah satu dari saya sendiri. Satu hal mengarah ke yang lain dan saya akhirnya memutuskan untuk menulis sendiri instruksi. Saya juga memutuskan untuk tidak membahas semua detail tentang bagaimana sebenarnya membangun tester karena setiap orang dapat memutuskan pilihan tertentu seperti resistor ukuran apa yang akan digunakan atau jika PCB diperlukan atau cukup Veroboard dan ada juga banyak instruksi tentang cara install eagle atau cara membuat PCB. Dengan kata lain, saya akan berkonsentrasi pada skema dan kode dan cara mengkalibrasi tester.

Langkah 1: Sejarah - Versi 1

Sejarah - Versi 1
Sejarah - Versi 1

Di atas adalah versi pertama dengan dukungan input lebih dari 10V yang disebutkan di bawah ditambahkan (R12&R17&Q11&Q12).

Versi pertama kurang lebih diambil dari instruksi oleh deba168 (sayangnya saya tidak dapat menemukan instruksinya untuk memberikan tautan). Hanya beberapa perubahan kecil yang dilakukan. Dalam versi ini saya memiliki satu resistor beban 10 ohm yang dikendalikan oleh MOSFET. Ini membawa beberapa masalah. Saat menguji satu sel NiCd atau NiMH, waktu yang dibutuhkan dengan mudah diukur dalam hitungan jam jika bukan hari. Baterai 1500mAh membutuhkan waktu lebih dari 12 jam (arusnya hanya 120mA). Di sisi lain, versi pertama hanya dapat menguji baterai di bawah 10V. Dan baterai 9.6V yang terisi penuh sebenarnya dapat mencapai 11,2V yang tidak dapat diuji karena batas 10V. Sesuatu perlu dilakukan. Pertama, saya baru saja menambahkan beberapa MOSFET dan resistor untuk membuat pembagi tegangan dapat memungkinkan lebih dari 10V. Tapi ini di sisi lain memunculkan masalah lain. Baterai 14.4V yang terisi penuh dapat memiliki hingga 16.8V yang dengan resistor 10 ohm berarti arus 1,68A dan tentu saja disipasi daya dari resistor beban hampir 30W. Jadi, dengan tegangan rendah terlalu lama waktu pengujian dan dengan tegangan tinggi terlalu tinggi arus. Jelas itu bukan solusi yang memadai dan pengembangan lebih lanjut diperlukan.

Langkah 2: Versi 2

Saya menginginkan solusi di mana arus akan tetap dalam batas tertentu terlepas dari tegangan baterai. Salah satu solusinya adalah menggunakan PWM dan hanya satu resistor, tetapi saya lebih suka memiliki solusi tanpa arus berdenyut atau memiliki kebutuhan untuk menghilangkan panas MOSFET. Jadi, saya membuat solusi dengan 10 slot tegangan, masing-masing lebar 2V, menggunakan 10 resistor 3,3ohm dan MOSFET untuk setiap resistor.

Langkah 3: Beginilah Ternyata

Begini Ternyata
Begini Ternyata

Komentar di sirkuitSeseorang dapat berargumen bahwa kehilangan tegangan pada mosfet dapat diabaikan karena resistansi mosfet sangat rendah, tetapi saya telah menyerahkan pilihan mosfet kepada pembaca dan dengan demikian resistansi dapat melampaui 1 ohm di mana ia mulai urusan. Dalam versi satu memilih MOSFET yang benar akan menghilangkan kebutuhan pengukuran titik yang lebih rendah tetapi pada versi 2 saya memutuskan untuk mengukur tegangan lebih dari satu resistor saja yang kemudian membuatnya penting untuk benar-benar memiliki dua titik pengukuran. Dan alasan di balik pilihan itu adalah kesederhanaan dalam memasang kabel Veroboard. Ini menambah beberapa kesalahan akurasi karena tegangan terukur pada satu resistor secara signifikan lebih kecil daripada mengukur semua resistor. Pada pemilihan komponen, saya memutuskan untuk menggunakan apa yang sudah saya miliki atau apa yang bisa saya dapatkan dengan mudah. Ini menyebabkan BOM berikut:

  • Arduino Pro Mini 5V! PENTING! Saya menggunakan versi 5V dan semuanya didasarkan pada itu
  • Layar OLED 128x64 I2C
  • 10 x 5W 3,3 Ohm resistor
  • 3 x 2n7000 MOSFET
  • 10 x MOSFET IRFZ34N
  • 6 x 10 kOhm resistor
  • 2 x 5 kOhm resistor
  • Kapasitor 16V 680uF
  • 1 kipas CPU lama

Saya belum menambahkan yang berikut dalam skema

  • resistor pullup pada jalur I2C, yang saya perhatikan membuat tampilan lebih stabil
  • saluran listrik
  • kapasitor di jalur 5V yang juga menstabilkan tampilan

Saat pengujian saya perhatikan resistor beban akan menjadi sangat panas terutama jika semuanya digunakan. Suhu dinaikkan menjadi lebih dari 100 derajat Celcius (yang lebih dari 212 derajat Fahrenheit) dan jika seluruh sistem akan ditutup dalam sebuah kotak harus ada semacam pendingin yang disediakan. Resistor yang saya gunakan adalah 3,3 ohm / 5W dan arus maksimum harus terjadi dengan sekitar 2V per resistor memberikan 2V / 3,3 = 0,61A yang menghasilkan 1,21W. Saya akhirnya menambahkan kipas sederhana di dalam kotak. Sebagian besar karena saya kebetulan memiliki beberapa kipas CPU lama.

Fungsionalitas skema

Ini cukup lurus ke depan dan cukup jelas. Baterai yang akan diuji dihubungkan ke rangkaian resistor dan ground. Titik pengukuran tegangan adalah sambungan baterai dan resistor pertama. Pembagi tegangan digunakan kemudian untuk menurunkan tegangan ke tingkat yang lebih sesuai dengan Arduino. Satu output digital digunakan untuk memilih rentang pembagi 10V atau 20V. Setiap resistor dalam beban dapat di-ground secara individual menggunakan MOSFET, yang digerakkan langsung oleh Arduino. Dan terakhir, layar terhubung ke pin Arduino I2C. Tidak banyak yang bisa dikatakan tentang skema J

Langkah 4: Kode

Kode
Kode

Di atas dapat dilihat fungsionalitas kasar dari kode. Mari kita lihat lebih dekat kodenya (file arduino ino terlampir). Ada sejumlah fungsi dan kemudian loop utama.

lingkaran utama

Saat pengukuran siap hasilnya ditampilkan, dan eksekusi berakhir di sana. Jika pengukuran belum dilakukan, maka terlebih dahulu diperiksa jenis baterai mana yang dipilih dan kemudian tegangan yang melintasi input. Jika tegangan melebihi 0,1V, setidaknya harus ada beberapa jenis baterai yang terhubung. Dalam hal ini subrutin dipanggil untuk mencoba mencari tahu berapa banyak sel yang ada di baterai untuk memutuskan bagaimana mengujinya. Jumlah sel kurang lebih merupakan informasi yang dapat dimanfaatkan dengan lebih baik tetapi, dalam versi ini, dilaporkan melalui antarmuka serial saja. Jika semuanya baik-baik saja, proses pengosongan dimulai dan pada setiap putaran putaran utama, kapasitas baterai dihitung. Di akhir loop utama, tampilan diisi dengan nilai yang diketahui.

Prosedur untuk menampilkan hasil

Fungsi showResults hanya mengatur garis yang akan ditampilkan di layar dan juga string yang akan dikirim ke antarmuka serial.

Prosedur untuk mengukur tegangan

Pada awal fungsi Vcc Arduino diukur. Diperlukan untuk dapat menghitung tegangan yang diukur menggunakan input analog. Kemudian tegangan baterai diukur menggunakan rentang 20V untuk dapat memutuskan rentang mana yang akan digunakan. Kemudian tegangan baterai dan tegangan resistor dihitung. Pengukuran tegangan baterai memanfaatkan kelas DividerInput yang memiliki metode pembacaan dan tegangan untuk memberikan pembacaan mentah atau tegangan yang dihitung dari input analog yang bersangkutan.

Prosedur untuk memilih nilai yang digunakan

Dalam fungsi selectUsedValues jumlah sel ditebak dan batas tinggi dan rendah baterai diatur untuk digunakan dengan prosedur pengosongan. Juga pengukuran ditandai sebagai dimulai, Batas untuk prosedur ini ditetapkan di awal sebagai variabel global. Meskipun mereka bisa konstan, dan mereka juga dapat didefinisikan di dalam prosedur karena mereka tidak digunakan secara global. Tapi hei selalu ada sesuatu untuk ditingkatkan:)

Prosedur untuk menghitung kapasitas baterai

Fungsi pengosongan benar-benar menangani penghitungan kapasitas baterai. Itu mendapat batas rendah dan tinggi dari tegangan untuk baterai yang sedang diuji sebagai parameter. Nilai tinggi tidak digunakan dalam versi ini, tetapi nilai rendah digunakan untuk memutuskan kapan harus menghentikan pengujian. Pada awal fungsi, jumlah resistor yang digunakan ditemukan dengan menggunakan fungsi yang dibuat untuk tujuan ini. Fungsi mengembalikan jumlah resistor dan pada saat yang sama memulai pengosongan dan mengatur ulang penghitung. Kemudian tegangan diukur dan digunakan bersama dengan nilai resistor yang diketahui untuk menghitung arus. Sekarang kita mengetahui tegangan dan arus dan waktu sejak pengukuran terakhir, kita dapat menghitung kapasitas. Pada akhir proses pengosongan tegangan baterai dibandingkan dengan batas bawah dan jika sudah di bawah batas fase pengosongan berhenti, MOSFET ditutup, dan pengukuran ditandai sebagai siap.

Prosedur untuk menemukan jumlah resistor yang akan digunakan

Dalam fungsi selectNumOfResistors, perbandingan sederhana tegangan dengan nilai preset dilakukan dan setelah itu jumlah resistor yang akan digunakan diputuskan. MOSFET yang sesuai dibuka untuk melewatkan beberapa resistor. Slot tegangan dipilih sehingga arus maksimum setiap saat selama pengosongan akan tetap sedikit di atas 600mA (2V/3.3Ohm=606mA). Fungsi mengembalikan jumlah resistor yang digunakan. Karena kipas digerakkan dari jalur yang sama dengan mosfet pertama, kipas harus selalu dibuka saat pelepasan sedang berlangsung.

Langkah 5: Mengkalibrasi Meter

Mengkalibrasi Meteran
Mengkalibrasi Meteran

Agar pengukur dikalibrasi, saya membuat aplikasi lain (terlampir). Ini menggunakan perangkat keras yang sama. Pada awalnya nilai pembagi koreksi semuanya diatur ke 1000.

const int divCorrectionB10V = 1000; // pengganda koreksi pembagi dalam rentang 10V const int divCorrectionR10V = 1000; // pengganda koreksi pembagi dalam rentang 10V const int divCorrectionB20V = 1000; // pengganda koreksi pembagi dalam rentang 20V const int divCorrectionR20V = 1000; // pengganda koreksi pembagi dalam kisaran 20V

dalam fungsi readVcc(), tegangan Vcc yang dihasilkan tergantung pada pengaturan nilai pada baris terakhir fungsi sebelum kembali. Biasanya Anda dapat menemukan di internet nilai 1126400L untuk digunakan dalam perhitungan. Saya perhatikan hasilnya tidak benar.

Proses kalibrasi:

  1. Muat aplikasi pengukuran ke Arduino.
  2. Anda dapat melihat di Arduino (dan di output serial dan jika kipas berputar) jika beban menyala. Jika sudah, putar sakelar pemilihan jenis baterai.
  3. Sesuaikan nilai dalam readuVCC() untuk mendapatkan hasil yang benar. Ambil nilai yang diberikan fungsi (dalam milivolt) dan bagi nilai panjangnya. Anda akan mendapatkan nilai mentah dari referensi internal. Sekarang ukur tegangan suplai aktual dalam milivolt dengan multimeter dan kalikan dengan nilai yang dihitung sebelumnya dan Anda mendapatkan nilai panjang baru yang dikoreksi. Dalam kasus saya, fungsi mengembalikan 5288mV ketika Vcc sebenarnya adalah 5.14V. Menghitung 1126400/5288*5140=1094874 yang saya perbaiki dengan percobaan. Masukkan nilai baru ke dalam kode dan unggah lagi ke Arduino.
  4. Menyesuaikan nilai koreksi pembagi resistor input analog terjadi dengan menggunakan sumber daya yang dapat disesuaikan yang digunakan untuk memberi makan input meteran. Paling sederhana adalah menggunakan tegangan dari 1V hingga 20V dengan langkah 1V dan mencatat hasilnya ke spreadsheet. Dalam rata-rata spreadsheet diambil. Nilai yang dikoreksi dihitung dengan rumus berikut: “raw_value*range*Vcc/Vin” di mana raw_value adalah nilai dalam 10VdivB, 10VdivR, 20VdivB atau 20VdivR tergantung pada koreksi mana yang akan dihitung.

Lihat spreadsheet bagaimana tampilannya bagi saya. Rata-rata dihitung hanya dari nilai yang berada pada rentang dan nilai tersebut kemudian ditetapkan di aplikasi meteran yang sebenarnya.

Seperti ini

const int divCorrectionB10V = 998; // pembagi koreksi pembagi dalam kisaran 10V const int divCorrectionR10V = 1022; // pembagi koreksi pembagi dalam rentang 10V const int divCorrectionB20V = 1044; // pembagi koreksi pembagi dalam kisaran 20V const int divCorrectionR20V = 1045; // pembagi koreksi pembagi dalam kisaran 20V

Menyesuaikan nilai resistor dapat dilakukan dengan memberikan beberapa tegangan ke input (yaitu 2V), mengganti sakelar tipe bat (untuk mendapatkan beban) dan mengukur arus yang masuk dan tegangan melintasi resistor pertama dan membagi tegangan dengan arus. Bagi saya 2V memberi 607mA yang memberikan 2/0.607=3.2948 ohm yang saya bulatkan menjadi 3,295 ohm. Jadi sekarang kalibrasi selesai.

Langkah 6: CATATAN Terakhir

Satu catatan penting di sini. Sangat penting untuk memiliki semua koneksi dalam kondisi prima dari baterai ke resistor. Saya memiliki satu koneksi yang buruk dan bertanya-tanya mengapa saya mendapatkan 0,3V volt lebih sedikit di grid resistor daripada di baterai. Ini berarti proses pengukuran segera berakhir dengan sel NiCd 1.2V karena batas bawah 0,95V tercapai dengan cepat.

Direkomendasikan: