1. Introduction
Battery energy storage systems (BESSs) are gaining popularity in Poland, particularly in residential and small-scale commercial applications. These systems are increasingly integrated with micro renewable energy sources (MRESs), such as photovoltaic panels, not only for backup power purposes but also to enhance self-consumption and manage energy costs. The growing interest in BESSs is closely associated with the implementation of the net billing system and the introduction of variable pricing for electricity fed back into the grid from MRES installations with a capacity of up to 50 kW [
1].
According to Directive (EU) 2019/944 of the European Parliament [
2], EU member states are required to ensure that electricity suppliers offer end users contracts based on dynamic pricing. In accordance with this regulation, new Polish legislation [
3] mandates that, starting from 24 August 2024, energy providers serving more than 200,000 end customers must offer dynamic tariffs indexed to real-time market conditions.
Electricity prices in the wholesale market fluctuate depending on the share of electricity generated from renewable energy sources (RESs). This pricing structure creates a strong economic incentive for MRES owners to install BESSs, allowing them to store energy when wholesale prices are low—typically during peak PV or wind generation—and use it or export it when prices rise in the evening hours. Previous studies have analyzed the impact of RESs on energy price dynamics in Germany [
4], Spain [
5], and other OECD countries [
6], consistently showing that solar and wind power generation contributes to a decline in average market prices but increases price volatility. Current pricing trends can be tracked on the Polish Power Exchange website [
7].
Although this article does not focus on economic modeling of electricity markets, the practical motivation for deploying BESSs under dynamic tariffs provides important context for the presented technical research [
8]. A key engineering challenge in the deployment of such systems lies in the reliable estimation of the state of charge (SOC) of lithium-ion battery packs.
1.1. Context of Research Conducted on the State of Charge (SOC) Estimation Algorithm
The SOC estimation tests presented in this study were conducted within a larger research project aimed at designing an autonomous power supply system for railway signal boxes. This system integrates renewable sources, hydrogen-based energy storage, and a BESS component. As shown in [
9], the BESS plays a critical role in (1) balancing energy produced by the fuel cell and RES and (2) providing uninterrupted power to safety-critical railway infrastructure.
Because the system operates with a single battery pack, precise SOC estimation is essential. In this context, three SOC estimation methods—voltage-based, coulomb counting, and charge balancing—were implemented in an external telemetry module and evaluated against SOC values reported by the integrated Orion BMS2 system. While the battery under test was equipped with a commercial BMS, such systems are not always present in field applications, and their parameters may not be accessible. Therefore, an independent SOC monitoring solution was designed to ensure broad applicability across different battery systems.
The implemented algorithms rely exclusively on pack-level measurements of voltage, current, and temperature, without accessing individual cell data or proprietary BMS outputs. This design approach increases the versatility of the system, especially in retrofit or low-infrastructure scenarios.
1.2. Challenges in SOC Estimation
The estimation of a lithium-ion battery’s state of charge (SOC) remains a widely discussed and technically complex problem. Numerous estimation methods have been proposed in the literature, ranging from classical observers and model-based filters to data-driven and hybrid techniques with deep learning models. For instance, proportional-integral (PI) observers and Kalman filters (KF) have been analyzed for SOC estimation accuracy, with emphasis on their dependency on precise cell characterization [
10]. An adaptive observer based on the super-twisting algorithm was proposed in [
11] to achieve finite-time convergence without high gains, although it also requires model parameters. A broader review of estimation methods for battery packs is presented in [
12], which emphasizes the trade-off between cell-level precision and pack-level observability.
Hybrid and machine-learning methods have also been developed to improve SOC estimation. In [
13], a combination of the Unscented Kalman Filter (UKF) with a Long Short-Term Memory (LSTM) network demonstrated high accuracy across varying current and temperature profiles. A co-estimation framework incorporating battery aging effects was described in [
14]. Reconstruction of the open-circuit voltage (OCV)–SOC relationship based on cells with the lowest available capacity was proposed in [
15], while [
16] introduced an extended Kalman filter with SOC-dependent parameters. In [
17], an LSTM model was trained to predict SOC using current, voltage, and temperature data without requiring cell specifications, though performance relied heavily on the training dataset. SOC estimation using a simplified electrochemical model was presented in [
18], and thermal dependency was addressed in satellite applications in [
19].
Deep learning-based techniques have also gained popularity. Studies [
20,
21] reported SOC estimation errors below 1% using large multi-source datasets that include OCV–SOC mappings, environmental conditions, vehicle dynamics, and cycle histories. However, these approaches require significant data acquisition resources and model calibration. Our setup differs significantly: we only have access to basic manufacturer data—internal resistance, nominal capacity—and pack-level measurements of voltage, current, and temperature. Compared to the conditions in [
20,
21], the available dataset is considerably limited.
Despite the availability of advanced techniques, practical constraints such as lack of access to internal battery structure and cost limitations often prevent their deployment. In scenarios where only aggregate measurements are available and battery cell composition is unknown, simplified estimation methods remain highly relevant. This motivates the development and evaluation of SOC algorithms that are robust to limited observability.
SOC estimation based solely on voltage remains problematic, particularly during charging. Manufacturer documentation for Boston Power Swing 5300 (Boston-Power, Inc., Westborough, MA, USA) [
22] and LG Chem INR18650 MJ1 (LG Chem, Seul, Korea) [
23] cells illustrates that during constant current (CC) charging, terminal voltage reaches 4.2 V while the SOC is only 70% or even 50%, respectively. The remaining charge is stored during the constant voltage (CV) phase, during which terminal voltage does not change. Consequently, using voltage alone during charging leads to large estimation errors. During discharging, especially under constant current, the voltage–SOC relationship is more predictable but still non-linear and affected by internal resistance and load dynamics.
Figure 1 [
24] presents the discharge characteristic of an INR18650 cell. Voltage decreases throughout the cycle, which permits approximate SOC estimation if the discharge current is constant and voltage is measured without significant noise. However, this approach is laboratory-oriented. In practical applications, SOC values of 0% or 100% are rarely achieved due to BMS protection limits [
25,
26,
27]. More accurate SOC tracking requires integrating current measurements (Ah), as discussed in [
28,
29].
High coulombic efficiency of lithium-ion cells [
30,
31] justifies the use of integration-based algorithms, provided periodic calibration is performed. These algorithms are more effective when full charging cycles are frequent. In the context of our test setup, this paper analyzes and compares these methods under conditions replicating real-world BESS operations.
1.3. The Structure of the Manuscript
The structure of the manuscript is organized as follows:
Section 1 introduces the background and motivation for SOC estimation in lithium-ion battery systems, along with a review of relevant literature.
Section 2, Materials and Methods, outlines the experimental setup, including the battery pack configuration, measurement equipment, and testing conditions.
Section 3, Results, describes the implementation details of the three SOC estimation methods: voltage-based, coulomb counting, and charge balance.
Section 4, Discussion, presents a comparative analysis of the experimental results, highlighting the accuracy, limitations, and practical considerations of each method. Finally,
Section 5, Conclusions, summarizes the main conclusions and proposes potential directions for further research and algorithm improvement.
As part of tests, measurements were conducted for several charging and discharging current values, as well as for several current profiles with changing flow directions. The obtained results showed that the coulomb counting and charge balancing methods are quite effective, considering that only the nominal data of the battery, as well as the current and voltage of the entire battery, are used for SOC calculations.
Unlike many recent studies relying on cell-level modeling or machine learning approaches, this study explores simple, low-cost SOC estimation techniques based on pack-level measurements only. The proposed solution is particularly suited for applications with limited access to internal battery data, such as modular retrofits or field-deployed systems.
2. Materials and Methods
The section outlines the components and methodologies employed in our study to evaluate battery SOC estimation algorithms. The primary focus is on the tested battery system, implemented SOC estimation algorithms, battery configuration, experimental setup, telemetry system, and measurement instruments. Additionally, we analyzed the SOC estimation derived from the Orion BMS 2’s (Orion BMS, Carol Stream, IL, USA) internal algorithm to assess its performance relative to the aforementioned methods.
2.1. Parameters of Tested BESS
The tests were carried out on a BESS manufactured by NRG Project (NRG Project, Ksawerów, Poland), designed for use in high-power applications. The nominal electrical parameters of the complete battery system are presented below:
cell type: lithium-ion (Li-ion);
battery cell configuration: P15S26 (15 cells in parallel, 26 strings in series);
nominal voltage: 94.9 V;
capacity: 79.5 Ah;
maximum charging current: 100 A;
maximum discharging current: 300 A;
minimum and maximum voltage range: 71.5 V–109.2 V.
In
Figure 2 the scheme of NRG battery pack is shown.
The battery used in the tests was assembled from Boston Power Swing 5300 lithium-ion cells. The basic electrical parameters of the individual cells are listed below:
nominal capacity: 5.3 Ah;
nominal voltage: 3.65 V;
maximum discharge current: 13 A;
standard/maximum charge current: 3.7 A/10.6 A;
maximum voltage: 4.2 V;
internal resistance: 15.5 mΩ.
The Orion BMS2 [
32], integrated into the NRG BESS, is a sophisticated battery management system designed to ensure the optimal performance and safety of lithium-ion cells. It is capable of measuring the voltage of up to 72 cells connected in series and provides functions such as passive cell balancing, state of charge, and state of health estimation, as well as protection against overvoltage, undervoltage, overcurrent, and temperature extremes. Communication with other system components is facilitated via the CANBUS interface.
The NRG battery pack is designed with separate power terminals for charging and discharging, a configuration implemented by NRG to optimize their solution for electromobility applications. During our tests, the battery pack was connected to a bidirectional power supply via the discharge terminal. This solution had its drawback. Namely, complete discharge of the battery pack caused the power supply to be disconnected from the connector.
2.2. Test Stand
The test stand comprises:
NRG battery pack with Orion BMS2 device. Detailed information can be found in the previous section and in
Section 2.5;
ITECH IT6012C-300-150 (Itech Electronic, Co., Ltd, New Taipei City, Taiwan) bidirectional power supply, whose technical specifications and functionalities are presented below;
the TIO telemetry module (designed, programmed and assembled by the authors of the article), current and voltage measurement systems, characterized in the next subsection;
two computers equipped with the respective component software. On Computer 1, software for reading parameters from the Orion BMS2 was installed, while on the other computer for controlling the ITECH IT6012C power supply and the TIO module software was installed.
The control software for the ORION BMS2 was incompatible with other programs utilizing the USB interface. Therefore, a second computer was employed to operate the software for the TIO module and the ITECH IT6012C power supply.
Figure 3 presents the block diagram of the test setup. Individual components of the test bench have been numbered consistently in
Figure 3,
Figure 4 and
Figure 5.
The ITECH IT6012C-300-150 is a regenerative bidirectional programmable DC power supply that combines source and sink functions within a single unit. This integration facilitates seamless transitions between charging and discharging modes, which is essential for testing energy storage devices like batteries.
Technical specifications of ITECH IT6012C-300-150:
voltage range: 0–300 V, current range: −150 A to +150 A, power output: 12 kW;
voltage resolution: 0.01 V, current resolution: 0.01 A
voltage accuracy: ≤0.02% + 0.02% of full scale, current accuracy: ≤0.1% + 0.1% of full scale;
interfaces: USB, CAN, LAN, digital I/O; optional GPIB, analog, and RS232.
In our test setup, the ITECH IT6012C power supply was employed to manage the charging and discharging cycles of the NRG battery pack. Its bidirectional capabilities enabled precise control over energy flow, facilitating accurate simulation of real-world operating conditions. The integration of this power supply into our system allowed for a comprehensive evaluation of the battery’s performance and the effectiveness of various SOC estimation algorithms under controlled conditions.
The power supply ITECH IT6012C was operated via the IT9000-PV6000C software (version V1.0.3.1), which allows remote control through USB, LAN, or GPIB interfaces. The software supports definition of complex current and voltage profiles, programmable test sequences, real-time monitoring, and automated data logging—all crucial for repeatability and traceability of experiments.
The Orion BMS2 Software Utility was employed to configure system thresholds, cell balancing strategies, and monitor operating parameters. It also allowed for data logging and diagnostic code retrieval, supporting detailed system-level analysis.
2.3. Telemetry Unit for Multisource Powery Supply System
The tested SOC estimation algorithms were implemented in the TIO module, which is part of the telemetry system developed for a multisource power supply system for a railway signal box. The primary function of this system is to monitor the individual components of the power supply infrastructure by performing measurements at critical nodes. One of the monitored components is the BESS, for which the SOC is among the most essential parameters.
In the design, it was assumed that the TIO module would only be able to measure the battery’s voltage and current and, optionally, its temperature. It was also assumed that the battery’s built-in BMS would not provide access to SOC data. A block diagram of the telemetry system is presented in
Figure 6.
The role of the telemetry system is to collect data from various types of signals—analog, digital/binary, and digital protocol-based. THUB serves as the central data concentrator, aggregating information from subordinate modules labeled TIO1 to TIOn (TIO–Telemetry Input/Output). Communication between the TIOn modules and THUB is carried out over a full-duplex RS-485 interface, using a proprietary protocol based on the Modbus standard.
In addition to TIO modules, THUB also reads energy meters via a separate RS-485 interface using the standard Modbus protocol. Furthermore, it supports communication with other external devices. An Ethernet interface is provided for integration with a supervisory controller. All communication interfaces are galvanically isolated.
Both TIO and THUB modules are capable of measuring temperature. Each module is equipped with two inputs for 1-Wire digital temperature sensors and two analog inputs for Pt1000 resistance temperature detectors. TIO modules also include SD card slots for local data storage.
From the perspective of the BESS testing activities, the most important component is the TIO module, which implements the SOC calculation algorithms and manages data logging onto the SD card. TIO modules are based on the STM32L152 microcontroller, chosen for its low power consumption—an essential feature in energy-sensitive telemetry applications.
The TIO module was used as an independent SOC estimator. It measures the total voltage, current, and enclosure temperature of the battery pack and executes onboard SOC estimation algorithms (SOCu, SOCi, SOCb). The TIO communicates with a dedicated host application (
Figure 7), developed for the project, which enables:
calibration of measurement channels,
configuration of telemetry parameters,
uploading custom firmware and SOC algorithms,
downloading and reviewing logged data.
Figure 7.
Screen of the TIO software.
Figure 7.
Screen of the TIO software.
Unlike the Orion BMS2, the TIO module operates externally and does not access individual cell data. Its algorithms rely solely on pack-level measurements, which makes it suitable for retrofitting or integration in systems without access to detailed cell information.
2.4. SOC Estimation Algorithms Implemented in TIO Module
This section describes the applied methods for modeling the current–voltage characteristics of Li-ion batteries, as well as the impact of the discharge current on the stored electric charge and the influence of temperature on the battery’s internal resistance. The described methods were implemented in the algorithms used for calculating the SOC.
2.4.1. Factors Affecting the Energy Stored in a Battery
The available charge in a battery primarily depends on the balance between the charge introduced into and drawn from the battery. However, it is not a simple summation of the charged and discharged quantities, as the available charge varies with the battery temperature, the discharge current, and the degree of battery aging. For this reason, the estimation of the charge stored in a Li-ion battery is most commonly based on the instantaneous battery voltage, while also taking into account the battery temperature and the discharge current.
Figure 8a shows an example of the voltage–SOC relationship for a constant discharge current. It can be clearly observed that, after an initial discharge from the fully charged state (region 1) to the point of practical full discharge (region 3), the battery voltage is approximately linearly dependent on the SOC (region 2) [
33].
Such a characteristic can be modeled in a simple way—with acceptable accuracy—using two linear segments that approximate the behavior in regions 1 and 2. Region 3 is not modeled, as during normal operation, the battery should not be discharged to such a deep extent. When the battery voltage drops below the value of U2, energy discharge should be terminated. To model the battery discharge characteristic, six variable parameters are required, marked in
Figure 8: U
1, U
2, SOC
1, SOC
2, U
FULL, SOC
FULL.
The value of the discharge current affects the battery discharge characteristic in two ways:
Example discharge characteristics for two different discharge current values are shown in
Figure 8b, where the x-axis has been changed to represent the charge drawn from the battery, in order to clearly illustrate the absolute change in total battery capacity.
The voltage drop at the terminals of a loaded battery, compared to the open-circuit voltage U
OCV, depends on the internal resistance. That is, it is linearly dependent on the discharge current:
where ΔU
out—the voltage drop at the battery terminals relative to the open-circuit voltage U
OCV; R
in—the internal resistance of the battery; I
out—discharge current.
It should be noted that the internal resistance of the battery in regions 1 and 3 (see
Figure 8a) depends on SOC. In region 1, this effect is not modeled, since the battery is near the fully charged state, and an SOC estimation error of a few percentage points (when SOC > 90%) has no practical significance. Region 3, on the other hand, corresponds to deep discharge, which should never occur during normal operation. In the most relevant region 2, it is assumed that the internal resistance of a Li-ion battery remains constant [
35,
36,
37].
An increase in the battery load current also reduces the total charge that can be drawn from the battery. This relationship is described by Peukert’s law:
where k—Peukert coefficient, which for Li-ion batteries typically ranges from 1.01 to 1.05; C
nom—nominal capacity of the battery; I
nom—discharge current at which the nominal capacity is specified; I—actual discharge current.
The Peukert coefficient for Li-ion batteries is close to unity, which means that the reduction in available charge due to increasing discharge current is relatively small. In our algorithm, we have adopted a Peukert’s coefficient k = 1.02.
Our TIO device measures the voltage at the output terminals of the battery pack; it does not measure directly at individual cells. Therefore, the voltage measurement is only an estimate, as it does not account for the voltage drop across individual circuit elements (welds, terminals, wires inside the battery pack). This is one of the reasons why SOC estimation based on voltage is not accurate. This is also evident when the direction of current flow changes, causing the voltage drop to reverse, which in turn leads to a change in the SOC value.
The same applies to the internal resistance of the battery pack. Even knowing the resistance value of the cells, one must also consider the resistance of all wires and connections, which can significantly increase the resistance of the battery pack compared to the resistance of the cells alone [
28].
Temperature affects the discharge characteristics of a battery in a manner very similar to the value of the discharge current [
38,
39]:
It lowers the voltage for a given SOC, resulting from an increase in the battery’s internal resistance Rin;
It reduces the total available charge.
It is assumed that the voltage drop at the terminals of a loaded battery is solely due to its internal resistance. However, the value of the internal resistance changes with temperature according to the relationship described by the Arrhenius equation [
40]:
where E
a—activation energy, for Li-ion batteries is approximately 30 kJ/mol; T
ref –reference temperature in kelvins, R(T
ref)—is the internal resistance at the reference temperature.
This equation indicates that the internal resistance of a lithium-ion battery increases as the temperature decreases, which can significantly impact the battery’s performance at lower temperatures. Understanding and modeling this relationship is crucial for accurately predicting battery behavior under varying thermal conditions.
In our study, the temperature variation range of the batteries under normal operating conditions was limited to +10 °C to +30 °C, due to their installation in MRES systems located inside buildings. Within this temperature range, it is acceptable to assume that the internal resistance depends linearly on temperature:
where α—relative temperature coefficient of resistance, expressed in 1/K.
The effect of temperature on the available charge is not uniform and must be described using an empirical relationship, often approximated by a second-order polynomial. However, when temperature variation is relatively small a linear approximation [
41] is sufficient, expressed by the following equation:
where C(T
ref)—battery capacity at the reference temperature; β—relative temperature coefficient of battery capacity, expressed in 1/K.
Our system can measure temperature, but it is not always possible to install a temperature sensor near the cells. Therefore, we conducted our research by measuring the temperature near the battery ventilation outlet. The indicated temperature value was practically the same as the ambient temperature.
2.4.2. Applied Methods for Battery SOC Estimation
Method of Estimating Available Charge Based on Voltage
To determine the available charge for a given temperature and load current, the following steps must be taken:
Correct the discharge characteristic, which is defined for the nominal discharge current, to reflect the actual temperature T and load current I (the correction method is discussed below);
Based on the measured battery voltage, determine the SOC using the corrected discharge characteristic;
Using Equations (2) and (5), calculate the total capacity C of the battery for the given load current and temperature;
Determine the available charge using the calculated values of SOCu and C.
The correction of the discharge characteristic involves accounting for the change in internal resistance caused by temperature variation, as well as the voltage drop across that resistance resulting from a load current different from the nominal value.
For nominal conditions, Equation (1) can be written as follows:
Under non-nominal conditions, Equation (1) becomes the following:
Next step is to change Equation (7):
and perform several transformations. The resulting expression describes the change in battery voltage due to the temperature-induced change in internal resistance ΔR and the change in load current ΔI:
The temperature-related change in resistance ΔR should be calculated using Equation (4), and the change in load current ΔI from the rearranged Equation (9).
Estimation of Available Charge Based on Current in the TIO Module Software
To continuously verify the SOC estimation based on battery voltage, the TIO telemetry module control software also implements current-based SOC estimation. This functionality performs three main tasks:
Implements a simple state machine;
Calculates the charge drawn from the battery and estimates SOCi based on this calculated charge;
Calculates the net balance of charge withdrawn from or delivered into the battery and estimates SOCb based on this net balance.
The charge estimation method based on discharge current is limited to counting electric charge only during the discharge phase. If this process is interrupted by a change in current direction to charging, the algorithm ceases counting charge and awaits the battery’s full recharge to 100%.
In contrast, the charge balancing method accounts for changes in current direction and also initiates from a fully charged battery. However, charge counting in both directions halts when the battery discharges to approximately 20%. Subsequently, the battery must be recharged to 100% for the algorithm to reset the counter.
Current measurement is performed at the battery pack terminals, which does not account for the battery pack’s own consumption, such as powering the BMS and fans. Therefore, this will introduce an error in the coulomb counting method, but at the same time, SOC is calculated for the entire battery pack.
The charge estimation method based on battery voltage needs no knowledge about the history of the battery charge/discharge cycles, so in its simplest form it could be used ad hoc by measuring only the battery voltage. This is the main advantage of this method. Unfortunately, because the battery voltage heavily depends, directly or indirectly, on load current, battery temperature, battery state of health and other factors, the expected error of SOC estimation of this method is relatively high. This method should be the first choice when only battery voltage could be measured or no history of the battery charge/discharge cycles is known.
The charge balancing method and charge estimation method using a discharge current both based on measured charge, and the available charge is a real physical limitation (no more charge can be taken from the battery than was fed into it). That is why, if battery is correctly defined (taking into account its wear-out), both methods could be much more accurate than charge estimation method based on battery voltage. As mentioned before, both methods require the correct recognition of a full-charge state, based on battery voltage measurements which could be the source of the estimation. The biggest weakness of both methods is the need to know the correct capacity of the battery in its fully charged state (especially if the battery is worn out). Unfortunately, at this point, the SOCb algorithm reveals its imperfection, as charge counting does not stop after reaching the predefined final charging voltage, unlike the SOCi algorithm. It may happen that charging continues even after the final charging voltage is reached. In such a case, the SOCb algorithm will keep accumulating charge, and the SOCb value will exceed 100%.
Both methods should be chosen to monitor battery SOC if the monitoring device could uninterruptedly measure both the battery voltage and the load of charge current. The obvious improvement of both methods is to recognize the state of fully discharged battery and measurement of the charge introduced into the battery during an uninterrupted charging process.
The charge balancing method can be seen as an extension of the charge estimation method based on discharge current. It works much longer (matching the battery usage from last full charge state), but its SOC estimation is worse.
To summarize, all three methods operate simultaneously in TIO module and utilize shared telemetry data. The implemented SOCu algorithm estimates the state of charge based on the instantaneous battery voltage, temperature-dependent internal resistance, minimum and maximum voltage thresholds, and the nominal capacity. In contrast, the SOCi and SOCb algorithms additionally utilize the real-time current measurements and reference voltages corresponding to 20% and 100% SOC. These algorithms are designed to operate in parallel using a shared set of telemetry signals within the external TIO module.
2.5. Settings of ORION BMS2 Selected by the Battery Pack Manufacturer
The NRG battery manufacturer has programmed the Orion BMS2 with the default settings for the specific cells used. While we do not assess the accuracy of these settings, we aim to illustrate the practices employed by battery pack manufacturers. The Orion BMS2 software allows for the input of voltage and current parameters for the utilized cells, adjusting charging and discharging voltages and currents based on the SOC and temperature.
Figure 9 displays the configuration windows of the Orion BMS2 Control Application. This software facilitates the definition of the battery’s voltage characteristics through threshold voltage values and parameters for balancing the voltage of individual cells.
In the Orion BMS2, the SOC–voltage characteristics are defined using specific drift points, typically at 10%, 20%, 80%, and 95% SOC. A fully charged battery is considered at 95% SOC, while complete discharge is set at 10% SOC. This configuration effectively limits the usable charge range of the cells compared to the manufacturer’s specified parameters.
Additionally, the BMS allows for the configuration of SOC drift parameters, enabling gradual adjustments to the SOC estimation based on voltage measurements. In scientific literature the term “state of charge voltage drift” is not commonly used as a standard expression. However, the issue of drift in the context of estimating the SOC of batteries is widely discussed, particularly concerning current integration methods like coulomb counting. These methods are susceptible to errors resulting from inaccuracies in current measurements, leading to the accumulation of errors and drift in SOC estimations.
A study [
42] introduces an algorithm for diagnosing SOC and state of health (SOH) of batteries based on voltage-controlled circuit models. This algorithm accounts for voltage drift to enhance the accuracy of SOC and SOH estimations, which is crucial for ensuring the safety and reliability of battery management systems. Other research focuses on the use of Kalman filters for SOC estimation [
43], which help correct errors arising from drift by combining information from battery models and voltage measurements. This approach allows for dynamic adjustment of SOC estimations, minimizing the impact of measurement errors and drift. SOC estimation problems are summarized in [
44].
State of charge voltage drift refers to the gradual adjustment mechanism employed by the BMS to correct discrepancies between the estimated SOC, primarily determined through coulomb counting, and the actual SOC, inferred from cell voltage measurements. Coulomb counting, which tracks the current flowing into and out of the battery, can accumulate errors over time due to sensor inaccuracies or battery aging. To mitigate these errors, the ORION BMS2 utilizes SOC drift points—specific voltage levels correlated with known SOC values—to recalibrate the SOC estimation dynamically [
45]. This correction process is implemented as a gradual drift rather than an abrupt adjustment. However, in our solution, it is not feasible to implement such an advanced algorithm because these types of algorithms require detailed knowledge of the parameters of the cells used. Dynamic processes that occur within Li-ion batteries [
46] are also omitted, because our objective was to develop a device for the battery pack without prior knowledge of these parameters.
3. Results
SOC estimation algorithms for the NRG battery pack were tested over several charge and discharge cycles using different current values. Tests included full charge and discharge cycles, a discharge cycle with a time-varying load profile, and two cycles with current profiles featuring changing flow directions. The SOC value was estimated using the voltage-based method (SOCu), current integration (coulomb counting, SOCi), and charge balancing (SOCb). The SOCi method was presented only for the discharge cycle.
The following tests were performed:
- (1)
Two battery discharge tests with a current of 50 A. The objective was to evaluate the discharge process and the accuracy of SOC estimation using the developed methods under poorly and well-calibrated initial SOC conditions.
- (2)
Battery discharge test with a current of 40 A. The objective was to assess the response of the Orion BMS2 system and the SOCu, SOCi, and SOCb estimation methods to battery voltage during discharge and subsequent full recharge.
- (3)
Battery discharge test with a variable current. The objective was to evaluate the accuracy of SOC estimation for all algorithms under varying load conditions.
- (4)
Test with variable current magnitude and direction. The objective was to assess the accuracy of SOC estimation when the direction of current flow changes, for two SOC levels: 80% and 50%.
3.1. Discharging Test, Constatnt Current Value 50 A
Two discharge tests were conducted at a constant current of 50 A. Prior to test no. 1 (
Figure 10a), the battery was charged at a constant current of 50 A until the BMS terminated charging upon reaching the maximum voltage. Before test no. 2 (
Figure 10b), the battery was charged at a constant current of 50 A until the BMS terminated charging; immediately thereafter, charging was resumed with a tapering current to avoid exceeding the maximum charging voltage.
The SOCu values exhibit a clear dependence on the voltage, whereas SOCi and SOCb closely resemble the variation patterns of SOC(BMS). During test no. 1, the discharge started at SOC(BMS) = 86.5% and ended at SOC(BMS) = 6% (SOC readings calculated by ORION BMS2). The actual charge drawn from the battery was 63.9 Ah. In the case of test no. 2, the initial SOC(BMS) was 99.5%, and it ended at SOC(BMS) = 11%. The actual charge drawn from the battery was 70.3 Ah. The difference in charge is due to the battery charging time, particularly the final cut-off voltage. In test no. 1, after reaching the maximum voltage value, the BMS system cut off the charging (
Figure 11a). In test no. 2, the current was reduced so that the BMS system did not cut off the charging prematurely, allowing more charge to be delivered to the battery (
Figure 11b).
Figure 12a shows the battery voltage profile and the maximum charging current value during charging at a current of 50 A. The maximum charging current value is calculated by the ORION BMS2 system and can be used to control the charger. As the battery voltage increases, the maximum charging current decreases to zero. When the maximum charging voltage is reached, the BMS system disconnects the battery from the output terminals. During the tests, the battery was connected to an ITECH bidirectional power supply, which did not respect the current limitation signal from the ORION BMS2 for both charging and discharging.
Figure 12b shows the voltage profile and the maximum current value during discharging. The maximum discharge current was also calculated by the ORION BMS2. It can be observed that the maximum discharge current decreases as the battery voltage drops.
Figure 13a shows the voltage profile and SOC calculated by the ORION BMS2 system during battery charging at a current of 50 A (current profile shown in
Figure 10a), and
Figure 13b shows the profiles for reduced current during the final phase of charging (current profile shown in
Figure 10b).
3.2. Discharging Test, Constatn Current Value 40 A
Before the test, the battery was fully charged using a tapering current cycle to maximize the accumulated charge.
Figure 14a presents the current and voltage profiles, as well as SOC values provided by the Orion BMS2 system SOC(BMS), along with SOCu, SOCb, and SOCi. After discharge, the battery was recharged to full capacity at a constant current of 40 A, during which SOC(BMS), SOCu, and SOCb were recorded (
Figure 14b).
As in the previous test, the SOCu profiles exhibit a clear dependence on voltage, while SOCi and SOCb closely resemble the variation patterns of SOC(BMS). During the calculation of SOCi, as observed in
Figure 14, this value remains unchanged until the battery reaches full charge. At that point, the SOCi estimation algorithm’s counter is reset and prepared to accumulate charge during the subsequent discharge cycle.
3.3. Discharg Test Cycle, Variable Current Value
During this test, the battery undergoes discharge with varying current levels (
Figure 15).
In
Figure 16 the current profile is showing. The objective is to evaluate all three SOC estimation algorithms, including SOCi. The SOCi algorithm operates exclusively during the discharge cycle and halts calculations upon detecting a current direction change, indicating the commencement of battery charging.
Once again, the SOCu value is dependent on the voltage. The shape of the SOCu profile suggests an increase in SOC, even though the battery was not being charged. In contrast, the SOCi and SOCb profiles are identical and closely resemble the shape of the SOC value computed by the Orion BMS2. This behavior results from the fact that the SOCu algorithm relies solely on the open-circuit voltage (OCV) or quasi-static voltage measurements, which may rise slightly due to cell relaxation or temperature effects after a high current load phase.
3.4. Full Test Cycle, Variable Current Value
Two tests were conducted with current profiles that changed direction, inducing both discharge and charge phases.
Figure 17 illustrates the imposed current waveforms, where positive values represent discharge and negative values indicate charging. Specifically,
Figure 17a depicts battery current during test no. 1, while
Figure 17b presents battery current during test no. 2.
The tests differ not only in the shape of the current profiles but also in the SOC ranges. For Test no. 1, the SOC range is approximately 80%, whereas for Test no. 2, it is around 50%. In
Figure 18 waveforms of voltage and SOC are shows for both tests.
Analysis of the SOCi and SOCb profiles (
Figure 16 and
Figure 18a) reveals significant discrepancies at the onset of the discharge phase. In both cases, the discharge commenced following a full battery charge cycle. The charging process was terminated by the Orion BMS2 system. Both SOCi and SOCb estimators were calibrated to 100% upon reaching the algorithmically defined upper voltage threshold corresponding to SOC = 100%. This threshold serves as an operational indicator of full charge, although it does not necessarily reflect the actual usable capacity of the battery.
For the same terminal voltage, the Orion BMS2 system reports a SOC(BMS) value of 95%, representing a conservative interpretation of a fully charged state. While it would have been possible to align the calibration of SOCi and SOCb to the same reference value as SOC(BMS), the intention was to illustrate that the definition of a fully charged battery can vary depending on the adopted estimation methodology. Consequently, under identical voltage conditions, SOC(BMS) is equal to 95%, whereas SOCi and SOCb are initialized at 100%.
It should be noted that the initial value of SOCi is exactly 100%, while SOCb reaches 102% (
Figure 18a). This illustrates a limitation of the SOCb estimation algorithm. Upon reaching the final charging voltage, both SOCi and SOCb should ideally be recalibrated to 100%. However, in the scenario depicted in
Figure 18a, the charging process did not terminate precisely at the final voltage threshold but slightly exceeded it, due to the gradual reduction in current in the final stage of the charging cycle. This residual current resulted in continued charge accumulation, leading to an SOCb value above 100%. As a result, the discharge phase began with an initial SOCb of 102%, as this was the value retained by the estimator at the end of the charging process.
The absolute difference between the initial values of SOCi, SOCb, and SOC(BMS) remains approximately constant throughout the duration of the tests, indicating a systematic offset introduced by the adopted calibration criteria and the underlying design of the estimation algorithms.
4. Discussion
The experimental results demonstrate significant differences in the accuracy of the evaluated SOC estimation methods. As expected, the voltage-based approach (SOCu) yielded the lowest estimation accuracy. This is primarily due to the inherent limitations of relying solely on battery terminal voltage, especially considering the flat voltage–SOC characteristic typical of lithium-ion cells within the 20–80% SOC range. Voltage-based estimation provides reliable results only near the extremes of the SOC spectrum—close to full charge or deep discharge. In the mid-range, even slight variations in voltage can correspond to large SOC deviations. As a result, the accuracy of SOCu was highly sensitive to the calibration of reference points, such as voltage values corresponding to 0%, 20%, 80%, and 100% SOC. Any uncertainty in these reference values propagates into substantial estimation errors.
Furthermore, under load conditions, the measured terminal voltage is affected by internal resistance, which introduces additional deviation. Accurate estimation would require compensation techniques or extended rest periods to approximate open-circuit voltage (OCV). In this study, such rest intervals were not applied, and no detailed OCV model was used, rendering the voltage-based method ineffective for dynamic SOC tracking consistent with the findings from the literature.
Voltage-based estimation is entirely unsuitable during charging. As documented in manufacturer datasheets [
22,
23], up to 60% of the total energy is stored during the constant current (CC) phase, where terminal voltage increases, while the remaining capacity is added during the constant voltage (CV) phase, when the voltage remains constant. Therefore, SOC cannot be reliably inferred from voltage alone during charging. During discharge, the method performs slightly better, but only under conditions of a constant current. Variable load conditions introduce dynamic voltage fluctuations, and the internal resistance of the cells varies with operating conditions. Consequently, voltage-based SOC estimation is only valid under quasi-static conditions and loses accuracy with increasing load dynamics.
Using SOC(BMS) as the reference, estimation errors for SOCu were substantial. For a 50 A discharge current with a poorly calibrated starting point, the relative error ranged from –13% (at SOC(BMS) = 86.5%) to 104% (at SOC(BMS) = 11.5%). With better calibration, the error was reduced but still reached –27% to 49% for the same SOC levels.
In contrast, integration-based methods (SOCi and SOCb), implemented in the TIO module, exhibited much better accuracy. These methods estimate SOC by integrating current over time and are therefore directly related to charge throughput. When properly initialized, they provide consistent tracking of SOC, particularly during discharge. However, the accuracy of these methods depends on regular recalibration—typically by fully charging the battery to reset the integrator.
Error analysis for SOCb showed that, under the same 50 A discharge condition, the relative error ranged from 14% (at SOC(BMS) = 97.5%) to 87% (at SOC(BMS) = 18.5%) for a poorly calibrated case. With proper initialization, the error decreased significantly to –0.4% to 10%.
Table 1 summarizes the SOCu and SOCb estimation errors for both calibration scenarios (see also
Figure 10a,b).
In practical operation, the integration-based algorithms were configured to halt estimation once SOC dropped below 20% and resume only after the battery was recharged to 100%. This approach prevents indefinite drift due to measurement bias or current sensing errors. However, it assumes that full charge conditions can be reliably achieved at regular intervals.
Accurate initialization further requires knowledge of the battery’s usable capacity and the terminal voltage at full charge. Errors in either parameter introduce systematic offsets. Nevertheless, when these conditions were met, the coulomb counting approach provided sufficiently accurate and reliable SOC tracking, which supports its continued use in BMS applications. The results confirm that, under field-representative conditions, integration-based estimators can provide high accuracy, provided the control strategy includes periodical full charges.
The Orion BMS2 system, configured by the manufacturer, applies conservative SOC limits. Specifically, SOC = 100% corresponds to a slightly reduced charge level, and 0% SOC is not truly reached during operation. In this setup, Orion reports 95% SOC at full charge and uses 10% as the effective lower limit. This conservative range preserves cell health and extends service life.
In contrast, the TIO-based estimators used the full physical capacity range, including terminal voltage limits, to track real SOC. This difference in reference scale explains the offset in absolute SOC values—e.g., when TIO reports 100%, Orion reports 95%, and at the lower end, TIO reports 0% while Orion still indicates ~10%.
To improve consistency, the most straightforward step is to align the SOCi and SOCb estimators with the voltage threshold used by Orion to define full charge. As shown in
Figure 16and
Figure 18a, all estimators display similar trends during discharge, but differ in initial SOC values due to calibration discrepancies. Aligning these reference points would minimize absolute SOC offsets.
Lastly, discrepancies are also influenced by internal consumption within the battery pack. Since this load is not sensed by the TIO module, it introduces a small but cumulative error, causing TIO-estimated SOC to slightly exceed the actual state.
5. Conclusions
One of the key contributions of this study is the demonstration that integration-based SOC estimation methods—when properly initialized and periodically reset—can achieve accuracy comparable to that of commercial BMS solutions, despite relying solely on pack-level measurements. This finding validates their practical applicability in resource-constrained systems and supports the development of low-cost, easily configurable telemetry platforms such as the TIO module.
The manuscript further demonstrates that a compact, low-cost telemetry module, which measures only the total pack voltage, current, and temperature, can maintain SOC estimation errors within a few percent of a factory-installed BMS. This is achieved without access to individual cell data, impedance spectra, or degradation models. These results highlight a practical pathway for retrofitting legacy battery packs whose internal parameters are unknown, offering a viable solution for extending their service life in secondary applications.
In this study, three SOC estimation strategies were evaluated for a Li-ion battery pack using an independent telemetry module (TIO), and the results were compared against those obtained from a commercial Orion BMS2 system. The findings confirm that sufficiently accurate SOC estimation is achievable without detailed information about individual cells, thus validating a pragmatic engineering approach. Among the tested methods, the coulomb counting technique proved to be the most effective. Provided that the battery pack is periodically fully charged to reset the SOC reference point and that charge/discharge current is accurately measured, the coulomb counting algorithm implemented in the TIO module can maintain SOC estimation accuracy within several percent of the values reported by the factory-installed BMS. The accuracy is particularly high near the fully charged state. In the best-case scenario, the SOC trajectory estimated by TIO closely followed that of the Orion BMS2 across the full charge–discharge cycle. These results indicate that a well-calibrated integration-based method, although algorithmically simpler than model-based estimators such as Kalman filters, can approximate the performance of a commercial BMS under practical test conditions. However, no direct comparison with model-based approaches (e.g., EKF, UKF) was performed in this study, and the conclusions are limited to benchmarking against the Orion BMS2.
In contrast, the voltage-based SOC estimation method was found to be inadequate for precise state estimation. Without access to the exact open-circuit voltage (OCV) versus SOC characteristics of the cells, the voltage-based method can only provide an approximate indication of SOC. This confirms that relying solely on terminal voltage is too sensitive to calibration and operational conditions to serve as a primary SOC estimation method in lithium-ion battery packs, particularly under load or in the absence of detailed cell parameters.
Future work should focus on improving SOC estimation accuracy and reducing the dependency on full-charge resets, while maintaining the system’s ability to operate with limited data availability. One promising direction involves integrating more advanced estimation algorithms—for example, using an adaptive Kalman filter or observer that can learn the battery pack’s effective parameters in real time and adjust the SOC estimate based on the voltage response. Such an approach would allow for the inclusion of factors such as internal resistance variation, capacity fade, and internal consumption through statistical inference, without requiring direct access to individual cell measurements.
Another potential development path includes implementing periodic open-circuit voltage (OCV) measurements when operating conditions allow. By incorporating regular rest periods and measuring the stabilized terminal voltage, the system could recalibrate the SOC estimate based on an empirically determined OCV–SOC curve for the entire battery pack. Additionally, deeper integration of temperature measurements into the SOC algorithm may enable compensation for temperature-induced variations in voltage and capacity. However, as emphasized throughout this study, the primary assumption is that the estimation system operates externally, without modifying or accessing the internal structure of the battery pack.