In my master’s research, I focused on the design and implementation of an energy management system for power lithium-ion battery packs. Power lithium-ion batteries are considered to be one of the most promising energy storage devices for modern applications, particularly in electric vehicles, portable devices and backup power systems. They offer high energy density, high operating voltage, long cycle life, low self-discharge, no memory effect and environmental friendliness. However, because a high-voltage battery pack is constructed by connecting many cells in series and parallel, maintaining its safety, reliability and charging balance remains a critical challenge. Therefore, an intelligent battery management system is necessary to monitor the state of the battery, estimate the remaining energy, protect the battery from abnormal conditions and extend its service life.
The system I designed in this work is based on a PIC18F452 microcontroller. The main functions include real-time acquisition of terminal voltage, charge and discharge current and temperature of each cell; estimation of the state-of-charge (SOC); protection against over-charge, over-discharge, over-current and short circuit; and charge equalization for the series-connected cells. In order to make the design suitable for a high-voltage battery pack with a voltage range up to nearly 30 V, I arranged seven lithium-ion cells in series. The nominal voltage of each cell is 3.7 V, the maximum charge voltage is 4.2 V, and the minimum discharge voltage is 3.0 V. The entire high-voltage battery pack has a nominal voltage of 25.9 V, a maximum charging voltage of 29.4 V and a discharge cut-off voltage of 21 V.
1. Motivation and State of the Art
The evolution of power batteries has been driven by the growing demand for clean energy and electric transportation. Traditional power sources such as lead-acid batteries, nickel-cadmium batteries and nickel-metal hydride batteries have various drawbacks, including low energy density, heavy weight, memory effect and environmental pollution. Lithium-ion batteries overcome many of these limitations and have become the preferred choice for high-voltage battery applications. Nevertheless, the high specific energy of lithium-ion chemistry also introduces potential hazards. When a high-voltage battery pack is overcharged, the electrolyte may decompose, gas may be generated and the internal pressure may increase, causing a risk of fire or explosion. Similarly, deep over-discharge can permanently damage the electrodes and reduce the number of useful cycles. Therefore, a reliable battery management system has to monitor every parameter that can affect the operation state and must react fast enough when dangerous conditions occur.
In recent years, many industrial ICs have been developed for low-power portable devices, but these chips are usually not sufficient for a large high-voltage battery pack used in power applications. An integrated approach with a microcontroller is necessary to perform more complex algorithms, such as accurate SOC determination, adaptive protection and communication with the charger or load. I chose to implement a modular management system with a centralized controller, because it gives me the flexibility to adjust the protection thresholds, equalization strategy and display functions without changing the hardware topology.
One of the central problems in managing a high-voltage battery is the accurate determination of its remaining capacity. The state-of-charge is a dimensionless quantity that indicates the residual energy of a battery with respect to its rated capacity. Since the SOC cannot be measured directly, it must be inferred from measurable parameters such as open-circuit voltage, current and temperature. Many estimation strategies exist, such as discharge test, Coulomb counting, open-circuit voltage lookup, impedance measurements and Kalman filtering. Each technique has its own advantages and limitations. In this work, I propose an improved method that combines the open-circuit voltage method and an Ah-integration method, while also considering the effects of charge-discharge efficiency, cycle life and temperature. Experimental verification was performed to demonstrate the effectiveness and feasibility of the proposed method for a high-voltage battery pack.
2. SOC Estimation for the High-Voltage Battery Pack
2.1 Definition of SOC
The state-of-charge is commonly defined as the ratio of the remaining capacity to the total available capacity. For a constant discharge current, the SOC can be expressed as:
$$
SOC = \frac{Q_{remaining}}{C_{I}}
$$
where \( Q_{remaining} \) is the amount of charge still available and \( C_{I} \) is the capacity that the battery can deliver at a constant discharge current \( I \). Alternatively, if \( Q_{discharged} \) is known, the definition becomes:
$$
SOC = 1 – \frac{Q_{discharged}}{C_{I}}
$$
Although this definition is widely used, it is only strictly valid under constant current conditions. In real operation, a high-voltage battery pack often experiences variable current, and the battery temperature and aging state change as well. Hence, the SOC must be defined more carefully in terms of charge quantity under a reference current, or by considering recovery effects. In my work, I treat voltage as the main input for defining the initial SOC layer and use current integration to update the SOC in real time. Temperature and cycle number are then used as correction factors to adjust the measurable estimate.
2.2 Factors influencing the remaining capacity
Lithium-ion batteries are electrochemical systems. Their accessible capacity depends not only on intrinsic design parameters but also on working conditions. Four major factors affect the remaining capacity I considered in this research are listed below.
| Factor | Impact on capacity | Explanation |
|---|---|---|
| Discharge current | Higher current reduces deliverable capacity | Ohmic losses increase and active material utilization decreases at high current |
| Temperature | Lower temperature reduces the available capacity | Chemical activity becomes sluggish at low temperature; high temperature increases activity but may accelerate aging |
| Self-discharge | Capacity is gradually lost during storage | In lithium-ion cells, self-discharge is usually 2 to 5 % per month at room temperature |
| Cycle life / aging | Capacity fades after repeated charge and discharge | Loss of lithium inventory and active material leads to irreversible degradation |
2.3 Comparison of common SOC estimation methods
Several methods have been studied in the literature. I compared five representative techniques in my investigation. Their main principles, advantages and drawbacks are shown in the following table.
| Method | Principle | Advantages | Disadvantages |
|---|---|---|---|
| Discharge test | Discharge the battery at a constant rate until cut-off voltage and integrate the current | Most reliable and accurate | Time-consuming, offline, not suitable for online monitoring |
| Ah counting | Integrate current over time and subtract from initial SOC | Simple, widely used, low computational burden | Requires accurate initial SOC; errors accumulate over time |
| Open-circuit voltage | Measure OCV and use a lookup table representing SOC-OCV curve | Good for initial SOC determination, simple to implement | Long rest time needed; not suitable for dynamic conditions |
| Impedance / internal resistance | Identify the relationship between SOC and internal AC/DC resistance | Can be used for monitoring the state-of-health | Resistance changes with temperature and current; measurement is difficult with high precision |
| Kalman filter | Build a dynamic electrical model and recursively estimate SOC as an internal state | Handles measurement noise well and is suitable for dynamic current | High computational effort; need an accurate battery model |
For my high-voltage battery management system, I determined that a direct combination of Ah counting and OCV measurement could satisfy the required accuracy while keeping the design affordable. The OCV method gives the initial SOC when the battery has been at rest long enough. The Ah method then provides real-time updates during charge and discharge. However, to overcome the drawbacks of these two methods, I added compensation terms to account for the actual Coulombic efficiency, temperature effect and cycle life. Moreover, I introduced a correction factor that indicates whether the battery is in the rest state or in the recovery state. This prevents the undesirable condition where polarized voltage is mistaken for a stable open-circuit voltage.
2.4 Proposed SOC estimation model
The total SOC at time \( t \) is considered as the sum of the initial SOC and the normalized amount of charge flowing in or out of the battery. The mathematical expression of my proposed model is:
$$
SOC(t) = K_{c} \left[ K_{0} SOC_{0} + (1 – K_{0}) SOC’_{0} \right] + K_{T} C_{I} \int_{0}^{t} \eta \, i(\tau) \, d\tau
$$
where:
| Symbol | Description |
|---|---|
| \( SOC_{0} \) | Initial SOC obtained from the open-circuit voltage curve when the battery is stable |
| \( SOC’_{0} \) | SOC value stored at the end of the previous operation |
| \( K_{0} \) | Stable-state indicator: \( K_0 = 1 \) if the open-circuit voltage has reached equilibrium, otherwise \( K_0 = 0 \) |
| \( K_{T} \) | Temperature correction factor; I used \( K_T = 1 \) at room temperature |
| \( K_{c} \) | Cycle life correction factor |
| \( \eta \) | Charge-discharge efficiency for the current rate |
| \( C_{I} \) | Rated capacity or reference capacity of the pack |
To compute the dynamic SOC, the battery current is measured at each sampling interval. For variable current discharge, the discharged charge is calculated by discretizing the current into small intervals and accumulating the product of current and time. The incremental charge in the \( k \)-th interval is:
$$
\Delta Q_{k} = i_{k} \cdot \Delta t
$$
and the total stored charge after \( n \) intervals is:
$$
Q_{k} = Q_{k-1} + \Delta Q_{k}
$$
In practice, I sample the current with a fixed period \( \Delta t = 0.5 \) s. The total processed charge is then converted to an equivalent value referred to the nominal discharge current, which avoids the need to model detailed internal chemical reactions.
2.5 Determination of the initial SOC
I experimentally established the relationship between the open-circuit voltage and SOC for the individual cell. The battery was discharged at a small constant current of 0.05C (100 mA) to incrementally remove a known amount of charge. After each step the battery was allowed to rest until the open-circuit voltage stabilized. Then I recorded the corresponding SOC. The data points were plotted to produce a monotonic lookup curve. During normal operation, if the high-voltage battery has been disconnected from the load for a sufficient time, the measured terminal voltage can be used as an open-circuit voltage to look up the initial SOC.
The rest time required to reach equilibrium is not fixed. In my implementation I considered the voltage to be stable when the rate of change of terminal voltage over a period was less than a small threshold. For practical purposes, I used a threshold of 5 mV per minute. If the battery has not yet reached this condition, I do not take the OCV-based initial value. Instead, I retain the last SOC value as the starting point.
3. Hardware Design of the Energy Management System

The hardware is the foundation of the complete management system. The overall architecture is based on the PIC18F452 microcontroller. I selected this device because it contains a 10-bit multi-channel analog-to-digital converter (ADC), 32 KB of flash program memory, 256 bytes of EEPROM and rich peripheral modules. The microcontroller receives analog signals from current, voltage and temperature sensors, processes the acquired data, estimates the SOC and controls the protection and equalization circuits. A block diagram of the system is shown in the hardware layout of the high-voltage battery pack above. The internal power supply is derived directly from the battery pack itself, eliminating the need for an auxiliary source in the field.
3.1 Power supply design
The microcontroller requires a stable 5 V supply. I used an LM7805 linear regulator to step down the high-voltage battery pack voltage to 5 V. The analog current sensor circuit requires +12 V and -12 V supplies. A positive 12 V voltage is generated with an LM7812 regulator, and a negative 12 V supply is produced by an ICL7662 DC-DC voltage converter. The resulting power supply architecture is simple and suitable for a portable management central unit.
A potential concern is that powering the electronic control board directly from the battery pack can contribute to an imbalance among cells if the load is unevenly distributed. To minimize this concern, I carefully designed the supply circuit with a very low quiescent current and placed the connection at the overall pack terminals, not at the midpoint of the series string. The high-voltage battery pack thus experiences a slightly different discharge current only when the monitoring board is active, but the current is in the microampere range in sleep mode.
3.2 Voltage acquisition circuit
3.2.1 Total voltage measurement
The total terminal voltage of the seven-cell pack ranges from 21 V to 29.4 V. Since the ADC input range of the PIC18F452 is 0 to 5 V, I used a precision resistive divider with two resistors of 0.1 % tolerance. The divided voltage is expressed by:
$$
V_{ADC} = V_{pack} \cdot \frac{R_2}{R_1 + R_2}
$$
I selected \( R_1 = 100 \, \mathrm{k\Omega} \) and \( R_2 = 20 \, \mathrm{k\Omega} \) to reduce the voltage by a factor of 5. The maximum ADC voltage is then approximately 5.88 V, which slightly exceeds 5 V when the pack is fully charged. To avoid this issue I set the total resistance ratio such that at 29.4 V the scaled voltage is around 4.9 V. By choosing \( R_2 / (R_1 + R_2) = 1/6 \), I obtained a maximum ADC input of about 4.9 V. A small capacitor is placed in parallel with \( R_2 \) to suppress high-frequency noise.
3.2.2 Individual cell voltage measurement
Because all cells are in series, their positive terminals are floating with respect to the common ground of the microcontroller. Directly measuring individual cell voltages using an ordinary ADC is not possible unless a multiplexing method is used. I designed an analog switch based circuit using an LM358 operational amplifier and a P-channel MOSFET transistor F9630. The circuit operates in a closed loop so that the voltage across the sensing resistor is equal to the cell voltage. The topology enables the measurement of one individual cell at a time without requiring a separate ground reference. This method is feasible for high-voltage battery packs with at least two series cells, and in this work you can connect the cell-under-test to the high-side or low-side of the stack.
During the measurement, the op amp drives the MOSFET so that the source-to-drain current creates a voltage drop across a known resistor. A second resistor of equal resistance follows the input voltage, and its output is passed to the ADC. The measured voltage is then proportional to the cell voltage. The circuit presents a high input impedance and draws only a small current from the measured cell.
3.3 Current acquisition circuit
For current sensing, I decided to use a direct shunt method because the normal discharge current is only up to about 2 A. A precision resistor \( R_s = 1 \, \mathrm{\Omega} \) with a power rating of 5 W is inserted in the main current path. The voltage drop across the shunt resistor is:
$$
V_s = I_{battery} \cdot R_s
$$
If a positive current represents charging and a negative current represents discharging, the polarity of the voltage across the shunt changes accordingly. Since the microcontroller ADC can accept only unipolar positive voltages, I designed an absolute-value amplifier circuit based on an LM324 operational amplifier. The circuit rectifies the bipolar input signal and scales its magnitude by a factor of 5. The relation between the ADC input voltage \( V_o \) and the shunt voltage \( V_s \) is then:
$$
V_o = 5 | V_s |
$$
The absolute-value circuit uses two unity-gain stages and three equal resistors. The positive and negative operation modes of the circuit are selected by two diodes. Because operational amplifiers with high open-loop gain are used, the inherent diode voltage drops do not affect the accuracy considerably. The overall current measurement precision can reach 10 mV, which corresponds to 10 mA through the shunt after considering the amplification factor.
For safety, a fuse is placed in series with the battery pack. Whenever an abnormal condition is detected, the protection MOSFET is opened, and the fuse can also break the circuit in case of a severe fault.
3.4 Temperature detection circuit
Temperature is crucial for battery safety and SOC estimation. I used the digital temperature sensor DS18B20, which communicates over a single wire and requires no calibration. The measurement range is -55 °C to +125 °C and the maximum resolution can be set to 0.0625 °C with 12-bit conversion. The sensor can be powered from the same 5 V supply; a 4.7 kΩ pull-up resistor is required on the data line. I connected the data line of the DS18B20 to pin RC6 of the PIC18F452. The sensor has a unique 64-bit ROM code, and if more than one sensor is needed, they can be connected in parallel to the same wire. This simplifies the wiring of a distributed temperature monitoring system for the high-voltage battery pack.
The DS18B20 operates according to the one-wire protocol. The controller sends a reset pulse, then a ROM command, and afterwards a function command. For example, to read temperature, the controller issues “Skip ROM” and “Convert T” commands, then waits for at least 750 ms for 12-bit conversion. After conversion, the temperature value is stored in two registers and can be read by sending a read scratchpad command. Software timing delays must be managed carefully because a one-wire bus uses only a single data line for both signaling and data transfer.
3.5 Display and keyboard circuits
I used an LED numeric display composed of four seven-segment digits to show the measured battery voltage, current, temperature and SOC. The display driver is a MAX7219, which is an 8-digit serial LED driver. It contains a 8×8 static RAM that stores the values of each digit. Communication with the microcontroller is implemented with three signals: DIN, CLK and LOAD. The serial data word has 16 bits, where the lower 8 bits carry data and the next 4 bits carry the internal register address. By programming the MAX7219 control registers, I configured the display to operate in BCD decode mode, with no-decode mode also available for bar graph displays. The brightness is set through an internal current-limiting resistor connected to pin ISET. The display interface uses 22 pF ceramic capacitors on the control lines to suppress electromagnetic interference. The MAX7219 requires a 10 µF electrolytic capacitor between V+ and GND to smooth the transient currents caused by LED switching.
A separate group of LEDs is used to indicate the cell capacity state in an abstract form. The total battery capacity is divided into four segments: 25 %, 50 %, 75 %, and 100 %. An LED bar graph is activated by a push switch. When the user presses the button, the circuit turns on and lights the corresponding number of LEDs. The circuit uses a TL431 precision shunt regulator and several comparators to set the threshold voltages. In addition to the four green capacity LEDs, a red LED indicates that the display circuit is active, and a yellow LED warns when the battery voltage is too low. The LED display remains active for approximately 2 seconds after the push button is released, owing to a capacitor that keeps the transistor on during the delay.
The keyboard has three independent keys connected to pins RB4 to RB7. They are used to select the parameter to be shown:
- Key K1: show battery total voltage.
- Key K2: show charge/discharge current.
- Key K3: show temperature.
At power-up or after a few seconds of key inactivity, the display automatically returns to the SOC value. Keys are read by a software polling method with a 10 ms debounce delay to avoid erroneous operation caused by contact bouncing.
3.6 Protection circuit design for high-voltage battery packs
The safe operation of lithium-ion batteries requires protection against over-charge, over-discharge, over-current and short circuit. I designed a protection board for four series-connected cells using the S-8261 protection IC from Seiko Instruments. The S-8261 is a single-cell protection IC with high-precision voltage detection and an internal delay circuit. It contains a charge control terminal (CO), a discharge control terminal (DO) and a current-sensing terminal (VM). A single-cell protection IC cannot directly handle the high common-mode voltage of a series pack. Therefore I expanded the design by placing one S-8261 on each cell and using optocouplers to combine the charge and discharge control signals.
The protection circuit uses two main control MOSFETs: one in the charge path and one in the discharge path. For normal operation, the CO pins of all protection ICs are high, and the corresponding optocouplers are off. This keeps the charge MOSFET off. The charge MOSFET is actually a P-channel MOSFET that is turned on when its gate is at a lower voltage. The DO pins of all protection ICs are also high, and their optocouplers are on, so that the discharge MOSFET can be turned on. The protection logic is implemented with a MC14011 NAND gate, which provides a latching effect for under-voltage cutoff.
3.6.1 Overcharge protection
When a cell voltage reaches the upper threshold, for example 4.28 V, the corresponding S-8261 CO pin changes from a high level to a low level. This turns on the charge-control optocoupler and pulls the gate of the charge MOSFET low. Consequently, the charge MOSFET is switched off and the charger cannot continue to pump current into the battery pack. The discharge body diode of the charge MOSFET remains available, so the battery can still deliver energy to the load through the MOSFET body diode.
3.6.2 Overdischarge protection
During discharge, if any cell voltage drops below 2.3 V, the corresponding DO pin changes from a high level to a low level. The first column of optocouplers is shut off, and the NAND gate output goes low. This removes the gate drive from the discharge MOSFET, turning it off and disconnecting the load. Since the discharge MOSFET itself has a body diode, the charger is still able to charge the battery through that diode.
3.6.3 Overcurrent and short-circuit protection
The current protection is realized by sensing the voltage drop across a resistor placed in the discharge current path. If the discharge current is large enough to create a voltage drop greater than 1.2 V across the sensing resistor, the protection IC interprets this as an overcurrent or short circuit. The DO output is driven low, and the discharge MOSFET is turned off. The delay is very short, typically below 320 µs for a short circuit. The threshold of the current can be adjusted by changing the sense resistor value. The protection board used in this work has the following technical parameters.
| Parameter | Value |
|---|---|
| Overcharge protection voltage | 4.28 V ± 0.025 V |
| Overcharge release delay | < 1.3 s |
| Overdischarge protection voltage | 2.3 V ± 0.050 V |
| Overdischarge protection delay | < 150 ms |
| Maximum charging voltage | < 17 V (for a four-cell module) |
| Continuous charge/discharge current | < 2 A |
| Overcurrent protection threshold | 5 A ± 10 % |
| Overcurrent delay | < 10 ms |
| Short-circuit protection delay | < 3 ms |
| Quiescent power consumption in normal mode | < 200 µA |
| Quiescent power consumption after undervoltage lockout | < 20 µA |
3.7 Charge equalization circuit
The performance of series-connected lithium-ion batteries is limited by the weakest cell. Small differences in capacity, internal resistance and self-discharge become larger after each charging and discharging cycle. Without equalization, one cell may be overcharged before the others reach full charge, while another may be deeply discharged. I therefore implemented a passive equalization method based on bypass resistors. When the voltage of a cell reaches the upper limit, a controlled switch connects a bypass resistor in parallel with that cell. The charging current then flows mainly through the resistor, and the excess energy is converted into heat. This prevents the voltage of the cell from rising further so that other cells can catch up.
The equalization control signal for each cell comes from the CO terminal of the S-8261 protection IC. When this terminal is low, a P-channel MOSFET in the equalization module is turned on. The bypass resistor \( R_{eq} \) was chosen as 68 Ω with 2 W power handling. When a cell voltage reaches 4.275 V, the cell voltage appears across the bypass network. The bypass current can be calculated as:
$$
I_{eq} = \frac{4.275}{68} \approx 62.9 \, \mathrm{mA}
$$
The power dissipated in the resistor is then:
$$
P_{eq} = I_{eq}^{2} R_{eq} \approx 0.27 \, \mathrm{W}
$$
This amount of power is acceptable for an SMD resistor on a printed circuit board with moderate ventilation. The equalization current is relatively small, so it is mainly suitable for standby or float charging. Because this passive method is simple and cheap, it is acceptable for small and medium-power high-voltage battery packs where the charging current is not too large.
4. Software Design of the Energy Management System
The software was written in PIC18 assembly language. I used a modular structure to simplify debugging and maintenance. The system software consists of four main blocks: initialization, data acquisition, SOC calculation, and display/keyboard processing. The main program first initializes all peripheral modules. It then enters an infinite loop in which it scans the keyboard and updates the display. Interrupt service routines are scheduled by two timers: Timer0 is used for regular data acquisition intervals, and Timer1 is used for processing time-based calculations and display refresh.
4.1 Initialization module
The initialization process sets the I/O port directions. The PORTA pins RA0, RA1 and RA2 are configured as analog inputs for total voltage, current and individual cell voltage respectively. The UART pins RC6 and RC7 are set for serial communication, although the actual communication test was not included in this version of the board. The timer registers and interrupt priority registers are configured according to the desired sampling intervals. The MAX7219 is initialized by writing a sequence of configuration commands, such as shutdown mode off, code B decode, scan limit four digits, and intensity level. The ADC is set to select channel 0 at first, with conversion clock selected from the system clock.
4.2 Data acquisition module
The voltage and current analog signals are sampled by the on-chip ADC. I programmed the ADC to operate in a polling mode. For each conversion request, the module selects the correct channel, starts the conversion and stores the result in two registers. To improve the stability, I adopted an average filter. For each physical quantity, eight successive samples are taken; then their average is calculated. The average result is used for further computations and display. This filter removes high-frequency noise caused by the switching load and power supply fluctuations.
The temperature reading requires a longer time because the DS18B20 has its own conversion delay. The temperature subroutine first initializes the sensor, sends a “Skip ROM” command, then sends a “Convert Temperature” command. After a 1 second waiting period, the subroutine sends a reset, a “Skip ROM” command again and a “Read Scratchpad” command. The data bytes are then transmitted from the sensor to the controller. The resulting temperature is stored in memory and later used for SOC correction.
4.3 SOC calculation module
The SOC estimation routine starts by fetching the initial SOC from the calibrated OCV table. The battery current is integrated by the main controller using a timer interrupt every 500 ms. The accumulated charge is then divided by the nominal capacity and subtracted from the initial value during discharge, or added during charge. In each step, the code checks whether the cell voltages have reached the overcharge threshold or the overdischarge cutoff. The measured temperature is used to compensate the SOC value in low-temperature operation. The final SOC value is sent to the display driver. The flowchart of the SOC estimation process is summarized as follows.
| Step | Action | Equation or function |
|---|---|---|
| 1 | Read initial SOC value | From OCV table or stored value |
| 2 | Acquire current and voltage | A/D conversion with averaging filter |
| 3 | Integrate current | \( Q_{k} = Q_{k-1} + i_k \Delta t \) |
| 4 | Compute normalized charge | \( \mathrm{SOC}_{work} = Q_k / C_N \) |
| 5 | Apply correction factors | \( SOC = K_0 SOC_0 + (1-K_0) SOC’_0 + K_T K_c \eta \ \mathrm{SOC}_{work} \) |
| 6 | Update display and memory | Store SOC in EEPROM |
4.4 Keyboard and display module
The keyboard scanning is done in a polling loop. Each key corresponds to a bit on the microcontroller port. If a key is detected as pressed, a 10 ms delay is inserted to debounce the contact. After the key is released, the associated action is performed. The LED display routine writes the 16-bit serial data streams to the MAX7219. The microcontroller generates the clock pulses and data signals. For a four-digit display, I only use the first four digits. The data to be displayed are placed in an internal buffer as packed binary-coded-decimal (BCD) values. The software then formats the value with a decimal point where necessary.
When the key is not pressed, the display resumes to the SOC value after a timeout. This feature offers a user-friendly interface and reduces unnecessary current consumption. The MCU sleep mode may be entered after a longer period of inactivity, further decreasing the average power drawn from the battery pack.
5. Experimental Results and Analysis
To verify the proposed energy management system, I performed a series of experiments with a seven-cell high-voltage battery pack. The pack was assembled with commercial lithium-ion cells having a nominal capacity of 2 Ah and a nominal voltage of 25.9 V. The battery pack parameters are summarized in the table below.
| Parameter | Specification |
|---|---|
| Cell type | Lithium-ion polymer (LP) |
| Standard capacity | 2 Ah |
| Nominal voltage of the pack | 25.9 V |
| Maximum charging voltage | 29.4 V |
| Discharge cutoff voltage | 21.0 V |
| Maximum continuous charge current | 2 A |
| Maximum continuous discharge current | 2 A |
| Operating temperature | Charge: 0 °C to +45 °C; Discharge: -20 °C to +45 °C |
5.1 Open-circuit voltage versus SOC
The initial SOC of a rested battery can be obtained directly from its open-circuit voltage. I measured the OCV curve by discharging the battery with a very low current of 100 mA (0.05C). After each discharge step, the cell was allowed to rest until the voltage no longer changed significantly. The measured OCV data are shown in the following table. By using such a table, the SOC of a rested cell can be read out from the measured open-circuit voltage.
| OCV / V | SOC |
|---|---|
| 3.02 | 0.00 |
| 3.25 | 0.05 |
| 3.45 | 0.10 |
| 3.60 | 0.20 |
| 3.70 | 0.35 |
| 3.80 | 0.55 |
| 3.90 | 0.75 |
| 4.00 | 0.90 |
| 4.10 | 1.00 |
During experiments at a room temperature of 23 °C, the OCV curve was monotonic and thus suitable for initial SOC extraction. I found that in the middle SOC range the OCV slope is relatively flat, which means a small voltage measurement error can cause a relatively large SOC error. Therefore, high voltage precision and stable operating conditions are important for an OCV-based SOC reading.
5.2 Charge curve
I adopted the constant-current constant-voltage (CC-CV) charging method, which is typical for lithium-ion batteries. The charging current in the constant-current stage was set to 0.3C, which equals 600 mA. When the total pack voltage reached 29.4 V, the charger switched to a constant-voltage mode and the current decayed gradually. The charging process was terminated when the current fell below 50 mA. The initial battery voltage represented a SOC of about 0.08; the lowest cell voltage was 3.35 V. The measured battery voltage and current during charging are reported in the table below.
| Parameter | Value |
|---|---|
| Charging current (constant-current stage) | 600 mA |
| Full charge voltage | 29.4 V |
| Termination current | 50 mA |
| Total charging time | Approximately 4 hours |
| Initial SOC | 0.08 |
| Final SOC | 1.00 |
The charging voltage curve showed a relatively rapid increase in the first few minutes, followed by an almost linear increase until the upper voltage limit. After the operation changed to constant voltage, the current decreased quasi-exponentially. The SOC curve rose almost linearly during the constant-current stage and approached saturation during the constant-voltage stage. This behavior is consistent with the lithium-ion chemistry and confirms that the CC-CV method is effective for a high-voltage battery pack.
5.3 Discharge at different constant rates
I carried out constant-current discharge experiments at rates of 0.2C, 0.4C and 0.5C, corresponding to currents of 400 mA, 800 mA and 1000 mA, respectively. The ambient temperature was 25 °C. The high-voltage battery pack was fully charged before each discharge. The measured voltage as a function of time is presented for three cases. The results show that a higher discharge current causes a faster voltage drop and a shorter discharge duration. The delivered capacities at the three rates are summarized in the table below.
| Discharge current | Discharge time | Delivered capacity |
|---|---|---|
| 0.2C (400 mA) | 3.6 hours | 1420 mAh |
| 0.4C (800 mA) | 2.2 hours | 1380 mAh |
| 0.5C (1000 mA) | 1.3 hours | 1229 mAh |
From the above results, the accessible capacity decreases when the discharge current increases. The effect is reversible in the sense that if the battery is discharged at a lower current afterwards, additional capacity can be recovered. This observation proves that an accurate SOC method must take the current rate into consideration. The proposed method uses the measured current and the Coulombic efficiency factor to convert the actual discharged capacity into an equivalent capacity at the nominal current.
Another important observation is the self-recovery effect. When the battery was disconnected from the load after a discharge experiment, the terminal voltage gradually rose to a stable open-circuit value. The amount of voltage recovery is larger after a higher discharge current. For a discharged battery, the recovered open-circuit voltage can be interpreted correctly only after the battery has rested sufficiently. If the battery is immediately restarted, using the recovered voltage as the open-circuit value would overestimate the initial SOC. My proposed model therefore includes the state-of-stability factor \( K_0 \). If the battery is not stable, I take the previous SOC as the initial value instead of a lookup from the OCV table.
5.4 Discharge with variable load
I also tested the high-voltage battery pack under a fixed load resistance of 40 Ω. In this experiment the discharge current was approximately 0.2 A, which is close to a constant-current discharge because the voltage declines gradually. The discharge voltage curve decreased slowly in the first part and then dropped more sharply near the end. The current was slightly decreasing, and the SOC followed an approximately linear trend. This confirms that for stable loads the battery can be modelled as a constant-current discharge with a slowly varying current.
In more realistic scenarios, the load current may vary strongly. The current sensor and data-acquisition system are capable of sampling the current at a sufficiently high rate to follow quick changes. The software integrates the current sample-by-sample. The resulting SOC value is smooth even when the current has small ripples. In the experiments, the estimated SOC at the end of discharge matched the curve obtained by the discharge test within roughly 5 % error, which is acceptable for the proposed management system.
6. Conclusions and Future Work
In this thesis I designed and tested an energy management system for a power lithium-ion battery pack with seven series-connected cells. The following conclusions can be drawn from the work:
- The developed system successfully measures key parameters of the high-voltage battery pack, including total voltage, individual cell voltage, current and temperature.
- The SOC estimation method based on the combination of the open-circuit voltage and Ah-counting with compensation for temperature, cycle life and rest-state efficiency yields reasonable accuracy. The error remains below the accepted level for practical monitoring.
- The protection circuit composed of the S-8261 protection ICs and optocouplers effectively prevents overcharge, overdischarge, overcurrent and short circuit conditions. The addition of a NAND-gate latch prevents the undesirable repeated switching of the discharge MOSFET after undervoltage lockout.
- The passive charge equalization circuit can reduce the spread of cell voltages during charging. It is a low-cost solution suitable for small and medium power high-voltage battery packs.
- The software architecture is modular and can be easily modified for different battery configurations or additional communication protocols.
There are still several aspects to improve in future work. The power supply for the microcontroller should be optimized to avoid drawing current from only a part of the high-voltage battery string. A DC-DC converter with galvanic isolation might be used to reduce the impact of the management electronics on state-of-charge balance. The equalization method can be improved to a bi-directional active balancing system if higher equalization currents are required. The SOC algorithm can also be enhanced by incorporating a Kalman filter or a model-based estimator for more extreme temperatures and dynamic charge/discharge patterns. Nevertheless, the overall structure and experimental results demonstrate that the proposed energy management system is both effective and reliable for a power lithium-ion battery pack.
This research has shown that a high-voltage battery pack requires not only robust hardware protection but also an intelligent estimation strategy to ensure safe operation and complete utilization of the stored energy. The management system I developed represents a step toward a more complex and efficient high-voltage battery management unit that can be integrated into electric vehicles and stationary energy storage systems.
