Pengembangan bank daya untuk laptop. Dari tata letak hingga produk jadi. Bagian kedua

Di bagian terakhir artikel tentang mengembangkan PowerBank untuk laptop, kami menentukan tata letak buatan pabrik, mengukur efisiensi, dan memahami apa yang harus dilakukan selanjutnya. Dan kemudian perlu untuk menghidupkan kembali potongan besi. Oleh karena itu, saya hadir untuk perhatian Anda bagian dua: tata letak perangkat lunak.



Pemutusan antara bagian-bagian ternyata cukup besar - semua kekuatan dilemparkan pada proyek baterai eksternal pengisian cepat, yang sekarang mengumpulkan dukungan di boomstarter . Ayo lanjutkan. Untuk memahami sirkuit mikro mana yang harus kita program, kita akan melihat diagram blok tata letak.Dari sini jelas bahwa kita harus menulis perangkat lunak untuk kontrol MK (STM32F042), serta mengkonfigurasi sistem kontrol baterai Li-ion + charger (BQ40Z60). Saya mulai dengan yang kedua, karena saya menganggap bagian ini yang paling sulit. Untuk memprogram pengontrol BQ40Z60, kita perlu: - Adaptor EV2400 dan EV2300 ( siap pakai atau buatan sendiri). Saya telah meninggalkan EV2300 dari proyek sebelumnya, jadi saya menggunakannya. - Program







Studio Manajemen Baterai (bqStudio) .
Adaptor terhubung melalui SMBus, untuk koneksi saya meninggalkan titik solder pada jalur SMBD dan SMBC (Bukan solusi yang paling praktis - maka saya menyadari bahwa saya harus menginstal konektor).

Setelah menari dengan rebana, BQ40Z60 memutuskan pada Battery Management Studio. Alasan untuk ini adalah mode tidur di mana controller masuk ketika tidak ada pull-up di bus SMBus dan tidak ada akses ke sana. Dia bangun ketika menghubungkan memori.
Selanjutnya, kita akan langsung menyetel chip BQ40Z60. Mengatakan bahwa ia memiliki banyak register berarti tidak mengatakan apa-apa. Satu juta pengaturan. Karena konfigurasi adalah proses yang panjang dan rumit (artikel terpisah diperlukan untuk deskripsi) saya akan menjelaskannya secara singkat.

Setelah memulai, jendela utama Battery Management Studio muncul.

Tab Memori data berisi sejumlah besar bidang di mana kita harus memasukkan parameter baterai dan mode operasi pengontrol.

Pada tab Kimia, Anda dapat mencoba menemukan kalibrasi yang sudah jadi untuk sel yang digunakan.


Untuk YOKU LP 5558115 3500mAh saya, tidak ada kalibrasi yang sudah jadi (omong-omong, kalibrasi terus diperbarui ). Ditemukan YOKU LP 656193 4000mAh serupa. Setelah menyadari bahwa saya masih tidak tahu apa-apa tentang paket yang tersedia, saya memilih profil ini.

Kemudian, di tab Memori data, saya mengonfigurasi:
Kalibrasi: nilai kalibrasi untuk voltmeters (sel, baterai, dan adaptor eksternal), resistansi sensor saat ini, nilai kalibrasi untuk sensor suhu.
Pengaturan:termasuk perlindungan, termistor, LED, mode tidur, konfigurasi baterai.
Perlindungan: pengaturan ambang perlindungan (tegangan, waktu, suhu), pengaturan ambang tegangan adaptor eksternal.
Kegagalan Permanen: menetapkan ambang batas untuk kesalahan yang tidak dapat diperbaiki (sehingga operasi baterai lebih lanjut tidak dimungkinkan).
Algoritma Pengisian Lanjut: mengatur pengisi daya (arus, tegangan untuk rentang suhu yang berbeda, tanda akhir pengisian, penyeimbangan).
Gas Gauging: mengatur unit untuk menentukan tingkat muatan (kapasitas pelat nama / voltase sel, resistansi kawat, statistik).
Power: mengatur mode operasi pengontrol.
Status PF:Status bit status Gagal Permanen
Data Sistem: bidang untuk data pabrikan.
Konfigurasi SBS: menetapkan ambang batas pemicu untuk pemicu Alarm, informasi baterai dasar (nomor seri, tanggal produksi, pabrikan, nama, kimia).
Dukungan LED: mengatur mode lampu indikator LED.
Black Box: black box (riwayat perubahan bit status perlindungan).
Masa hidup: statistik baterai.
Ra Table: tabel resistansi sel internal.

Selama proses pengaturan, saya tidak mengubah semua bidang, tetapi ini sudah cukup untuk memulai.

Dengan bagian sirkuit ini, hanya ada satu perangkat keras yang terhubung ke output dari sirkuit mikro 21-AFEFUSE. Itu terjadi seperti ini:
Saya merobek sirkuit dari papan debug kecuali untuk microcircuit perlindungan sekunder dan sekering meledak. BQ40Z60 memiliki 21 pin AFEFUSE untuk membakar sekering (seperti yang saya duga). Jadi saya melihat halaman ke-5 dari lembar data BQ40Z60. Saya melihat

jenis Output Output di tabel dan, dengan hati nurani yang jelas, membuatnya menggantung di udara. Masalah muncul setelah menyolder papan: Saya menyortir semua pengaturan (dan pada saat itu ada banyak keraguan), tetapi tidak berhasil - transistor pengisian dan pengosongan tidak menyala. Setelah 2 hari ragu / refleksi / coba-coba, saya perhatikan bahwa bit FUSE_EN tidak ditetapkan dan memutuskan untuk "bertanya kepada orang-orang" dan ketika saya memposting pertanyaan, sebuah wawasan datang kepada saya

Melihat papan sirkuit papan debug, saya menyarankan bahwa pin AFEFUSE juga bisa menjadi input, yang dikonfirmasi oleh bagian 9.3.2.4 hal.24, yang mengatakan bahwa jika pin tidak digunakan, itu harus terhubung ke ground. Saya melakukannya dengan pinset dan berhasil. Setelah 5 menit, mereka menjawab saya di e2e.com - jawabannya jelas dan benar, saya menyatakan "phi" saya tentang kesalahan pada tabel output - mereka berjanji untuk memperbaikinya dalam versi dokumentasi yang akan datang.
Untuk mengakhiri pengaturan pengontrol, saya menjalankan 2 siklus pelatihan muatan penuh / pelepasan + relaksasi (total 30 jam).

Sekarang mari kita beralih ke pemrograman STM32F042. Pada tahap tiruan, prosesor ini tidak memerlukan banyak:
- Kontrol konverter tegangan, proses tombol.
- Tidur sejauh mungkin agar tidak mengisi baterai.
- Baca parameter baterai utama dari pengontrol (tegangan, arus, tingkat pengisian daya, suhu, keadaan saat ini, jumlah siklus, waktu hingga pengisian / pengosongan penuh) dan output ke PC melalui USART (karena konverter CP2102 sudah ada di papan). Meskipun prosesor tersebut berisi USB on board, saya tidak menggunakannya dalam tata letak, dan tata letak dibuat untuk 051 MK, tetapi saya tidak bisa membelinya.

Kontrol konverter dikurangi menjadi pengaturan dua kesimpulan (mengaktifkan dan mode operasi), memasok PWM (dengan penyaringan RC berikutnya) ke output pengaturan frekuensi konversi chip LTC3780 (sebagai hasilnya, mengatur frekuensi ke maksimum 400 kHz), dan input pemantauan sinyal PowerGood. Tetapi bahkan di sini saya berhasil menginjak menyapu. Bug itu mengambang dan terjadi ketika Power Bank berbaring untuk waktu yang lama, mengungkapkan fakta bahwa itu tidak menyala. Masalahnya adalah bahwa saya pertama kali menyalakan interupsi ke sinyal PowerGood dari LTC3780, dan kemudian menyalakan chip itu sendiri (EN). Ternyata interupsi itu memicu bahkan sebelum dimulainya konverter dan mematikannya. Mengatur ulang peristiwa di beberapa tempat dan menambahkan penundaan - masalahnya hilang. Kalau tidak, fungsi ini mudah.

Diputuskan untuk membuat antarmuka pengguna dengan 1 tombol dan 5 (6) LED (meskipun ada 2 tombol dan 10 LED pada papan tata letak). Ini berfungsi sebagai berikut:
Perangkat dimatikan -> tekan singkat (<500 ms) - animasi tingkat pengisian daya pada 4 LED.
Perangkat dimatikan -> tekan lama (> 500 ms) - nyalakan perangkat (LED ke-5 menyala).
Perangkat dimatikan -> menghubungkan memori -> animasi tingkat pengisian pada 4 LED sampai akhir proses pengisian.
Perangkat aktif -> tekan singkat - animasi tingkat pengisian daya pada 4 LED.
Perangkat aktif -> tekan lama - matikan perangkat.
Perangkat mati -> konsumsi saat ini kurang dari 50 mA selama lebih dari 3 menit. - matikan perangkat.
Ini memungkinkan untuk menghapus 27 elemen dari perangkat.

Saya sudah memiliki pengalaman menerapkan mode tidur di STM32F0xx, jadi saya tidak mengandalkan penggaruk besar di sini. Untuk mengoptimalkan konsumsi, saya pertama-tama mengganti 3.3V LDO dengan mcp1703 dengan arus konsumsi saya sendiri yang rendah (perlu untuk tidak merobek dari debugging, tetapi untuk menginstalnya segera). Ukuran, harga, konsumsi, body kit - semuanya kurang dari LP2951.
Terima kasih kepada Hardegor untuk mengedit LDO untuk Li-ion 4s. Mcp1703 tidak dapat digunakan karena tegangan input rendah. Saya menggunakan LiFePo4 untuk kimia - tidak ada masalah seperti itu. Hati-hati!!!
-Ketika perangkat dimatikan, MK dalam mode STANDBY dan hanya menanggapi dengan menekan tombol atau koneksi memori. Konsumsi dalam mode ini adalah 108 μA (100 dari mereka mengkonsumsi BQ40Z60).
- Ketika perangkat dihidupkan, prosesor sebagian besar waktu (kecuali untuk saat-saat indikasi dan polling dari BQ40Z60) dalam mode STOP dengan konsumsi 1,5 mA (1 mA adalah LED). Pada saat interogasi dan indikasi, konsumsi saat ini berkisar 4,5 hingga 9 mA.
- Ketika USB MK terhubung dalam mode RUN 48 MHz, konsumsinya 15 mA. Di masa depan saya akan menyalakan MK dalam mode ini dari USB.

Masalah potensial terbesar adalah survei BQ40Z60. Saya tidak bekerja dengan SMBus dan sampai yang terakhir berharap SMBus adalah I2C 1v1 (ini sebagian karena level fisiknya sama untuk mereka), tetapi ternyata level salurannya sangat berbeda dan ini menciptakan sejumlah kesulitan. Di sini saya tidak akan menjelaskan perbedaan antara SMBus dan I2C, tetapi saya akan memberikan tautan ke artikel yang lebih kompeten . Pada tahap tata letak, saya tidak terlibat dalam perang melawan SMBus (omong-omong, sebagai programmer, saya jauh lebih lemah daripada perancang sirkuit) dan karena mengirim dan menerima perintah byte di SMBus dan I2C benar-benar identik, saya hanya menggunakan mereka. Akibatnya, saya membaca SOC, SOH, Current, CellVolt, TimeToFull, TimeToEmpty dari BQ40Z60. Bergantung pada nilai register, mode operasi berubah (peringatan dikeluarkan, setiap shutdown terjadi).

Nah, di sisi PC, tentu saja, diperlukan program yang dapat menampilkan data yang dibaca dari baterai dalam bentuk yang mudah. Karena saya hanya bisa menggunakan GUI di Borland C ++ Builder dan melakukannya untuk waktu yang lama, saya meminta programmer untuk membuat sketsa debugging sederhana untuk saya. Untuk cambuk cepat, berikut ini keluar:


Ini semua pekerjaan yang dilakukan pada tahap tata letak. Lebih lanjut dalam rencana (dan karena saya menggambarkan operasi yang telah selesai, bagian dari pekerjaan telah dilakukan), transfer spesifikasi teknis kepada perancang untuk pengembangan / pembuatan paket PowerBank, koreksi / revisi kesalahan pada sirkuit, perubahan papan untuk case, revisi perangkat lunak. Setelah itu, perangkat akan mirip dengan produk dan, setelah selesai, akan menjadi produk dalam arti kata yang sebenarnya. Pada bagian artikel berikut ini, kami akan mempertimbangkan tahapan dan kesulitan utama transisi dari tata letak ke produk jadi, mengerjakan pengemasan, mempertimbangkan biaya berbagai solusi dan operasi, pengoptimalan, dan juga melihat hasil akhir.

Source: https://habr.com/ru/post/id386899/


All Articles