Files
2026-07-21 16:01:06 +02:00

44 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ⚡ TLE9018 Master BMS - Production-Grade Dual Scope Control
An advanced multi-node desktop monitoring, cell balancing, and telemetry control interface built in Python for the **Infineon TLE9018DQK** 18-channel Li-ion Battery Monitoring and Balancing IC.
The software connects to daisy-chained Cell Supervision Circuits (CSCs) via high-speed isoUART (2 MBaud) through a **TLE9015DQU** transceiver bridge. It features an interactive CLI setup stage for dynamic COM port selection and NTC thermistor profiling, real-time 18-cell PCVM voltage acquisition, individual cell balancing control, and live 5-channel temperature tracking using a PyQt5/PyQtGraph dashboard.
---
## 📸 Interface Preview & Key Features
* **Dynamic COM Port Detection:** Automatically scans available system serial ports during CLI startup, eliminating hardcoded port dependencies (`COM9`, etc.).
* **Multi-Node Auto-Enumeration:** Supports daisy-chained setups of 1 to 8 TLE9018 sensing ICs with automated `IF_CFG` (`0xC0`) final-node (`FN`) assignment.
* **Dynamic NTC Hardware Footprint Configuration:** Interactive terminal setup allowing on-the-fly bias current mapping (`INTC`) for mixed 10 kΩ and 100 kΩ thermistor channels.
* **Synchronous 18-Cell PCVM Monitoring:** 16-bit high-resolution cell voltage scanning using official partition masks (`PART_CFG_0`/`1`).
* **Interactive Passive Balancing Engine:** Instant bitmask translation for registers `BAL_CTRL_0` (`0xE6`) and `BAL_CTRL_1` (`0xE7`) across individual board targets.
* **Hardware-Calculated NTC Telemetry:** Direct decoding of `EXT_TEMP_0..4` (`0x5E``0x62`) combining 10-bit ADC codes with 3-bit exponential current scaling indices (`INTC`).
* **Non-Blocking Multi-Threaded GUI:** Asynchronous serial I/O running in an independent background worker thread using queues (`_PLOT_QUEUE`, `_COMMAND_QUEUE`) to prevent PyQt UI freezes.
---
## 📐 System Hardware & Electrical Specifications
| Parameter | Value / Configuration |
| :--- | :--- |
| **Sensing Transceiver** | Infineon TLE9015DQU (UART to isoUART Bridge) |
| **Sensing IC** | Infineon TLE9018DQK |
| **Communication Interface** | Serial Port |
| **Supported Daisy-Chain Nodes** | 1 to 8 Stacked Boards |
| **NTC Channel 0** | Fixed 100 kΩ NTC in 10 µA Bias Mode |
| **NTC Channels 14** | User-selected: 10 kΩ or 100 kΩ |
| **Series Reference Resistor ($R_{\text{TMP}}$)** | $100\ \Omega$ |
| **Full-Scale ADC Range ($FSR_{\text{TMP}}$)** | $2.0\text{ V}$ |
---
## 📁 Project Structure
```text
.
├── tle9018dqk/ # Official Infineon Driver Package
│ ├── control.py # Low-level UART frame builder & J1850 CRC calculation
│ └── registers.py # Complete TLE9018 register address mapping dictionary
├── monitoring_CMBs.py # Master Application (CLI Setup + Threaded PyQt5 GUI)
└── README.md # System Documentation