[page is not complete]
Prerequisite: Cell testing must be complete
MSXIV Module Testing Procedure (Summary)
100A complete discharge/charge test
Equipment
Keysight N3300A electronic load (with associated electronic load modules)
a current shunt resistor
2 Keysight 34465A DMMs - one to measure the current via the current shunt, and one to measure the voltage of the first series group
Keysight U5855A thermal camera
Internal resistance test? Capacity test?
https://uwmidsun.atlassian.net/l/cp/PTFyj8dV
https://uwmidsun.atlassian.net/l/cp/1FjNwoPe
https://uwmidsun.atlassian.net/l/cp/eCq1YMDH
https://uwmidsun.atlassian.net/l/cp/zgaxYM2W
https://uwmidsun.atlassian.net/l/cp/gYYKFaCP
Jehugarcia Video (Summary)
lithium Battery testing Procedures - YouTube
test voltage, see if any individual cell(s) are low
check capacity and internal resistance (discharge-->charge-->discharge)
NHS Video / Brochure (Summary)
Learn the Fundamentals of Battery Module and Pack Test - YouTube
The Fundamentals of Battery/Module Pack Test (nhresearch.com)
module-testing is more “application-focused” whereas cell-testing is more “chemistry focused”
Battery Condition
SOC (State of Charge)
DOD (Depth of Discharge)
SOH (State of Health)
DCIR (Direct Current Internal Resistance)
Battery Capability
SOP (State of Power)
Testing interests
battery cycling (cells swell?!, may or may not fit?!)
performance under simulated environment
performance under simulated use
degradation over time / # of cycles/aging characteristics? (might be less relevant to us)
capacity measurement
mechanical stress test
thermal tests
Questions for Micah
Charge / Discharge test procedure?
Internal resistance test? Capacity test?
What other tests?
Where did you find the equipment?
[not complete, feel free to add]
Miscellaneous Links
Discover the fundamentals of Battery Module & Pack testing and its importance (unicous.com)
BU-901: Fundamentals in Battery Testing - Battery University
Chatgpt3
A Kalman filter is an algorithm that uses a series of measurements observed over time to estimate the state of a system. It is a type of recursive filter, which means that it processes each measurement by using the previous state estimate and the current measurement to produce a new state estimate.
Here is an example of how to implement a Kalman filter in Python:
import numpy as np # Initialize state vector x and covariance matrix P x = np.array([0, 0]) P = np.array([[1, 0], [0, 1]]) # Process noise covariance matrix Q Q = np.array([[1, 0], [0, 1]]) # Measurement noise covariance matrix R R = np.array([[1, 0], [0, 1]]) # State transition matrix A A = np.array([[1, 1], [0, 1]]) # Measurement matrix H H = np.array([[1, 0], [0, 1]]) # Input control vector u u = np.array([0, 0]) # Measurement vector z z = np.array([1, 1]) # Kalman filter for i in range(10): # Predict x = np.dot(A, x) + np.dot(B, u) P = np.dot(A, np.dot(P, A.T)) + Q # Update K = np.dot(P, np.dot(H.T, np.linalg.inv(np.dot(H, np.dot(P, H.T)) + R))) x = x + np.dot(K, z - np.dot(H, x)) P = P - np.dot(K, np.dot(H, P)) # Print result print("x:", x) print("P:", P)
This implementation assumes that the system is a linear dynamical system with Gaussian noise. It uses the state transition matrix A
to predict the state at the next time step, and the measurement matrix H
to transform the state vector into the measurement space. The Kalman filter then uses the Kalman gain K
to correct the predicted state based on the difference between the measured and predicted values.
Coulomb counting is a method for estimating the remaining charge in a battery. It works by measuring the current flowing into or out of the battery and integrating this value over time to obtain the total charge that has been transferred. This value can then be used to estimate the remaining charge in the battery.
Here is an example of how to implement a Coulomb counting algorithm in Python:
# Initialize variables current = 0 charge = 0 capacity = 100 # Sample current every second for i in range(10): # Measure current current = measure_current() # Integrate current over time to obtain charge charge += current # Estimate remaining capacity remaining_capacity = capacity - charge # Print result print("Remaining capacity: ", remaining_capacity)
This implementation assumes that the battery has a known capacity and that the current flowing into or out of the battery can be measured accurately. It also assumes that the current remains constant over each time step, which may not be the case in practice. In order to improve the accuracy of the estimation, a more sophisticated algorithm that takes into account the variations in the current over time may be necessary.
SOH (State of Health) filters are used to estimate the remaining capacity of a battery based on its voltage and temperature. The idea behind SOH filters is to use historical data on the battery's performance to predict its future behavior. This is typically done by fitting a curve to the battery's discharge data and using this curve to estimate the remaining capacity at a given voltage and temperature.
Here is an example of how to implement a SOH filter in Python:
import numpy as np from scipy.optimize import curve_fit # Define the curve fitting function def curve(x, a, b, c): return a * x**2 + b * x + c # Load the battery's discharge data voltages = np.array([3.7, 3.6, 3.5, 3.4, 3.3]) capacities = np.array([98, 95, 90, 85, 80]) # Fit a curve to the discharge data params, _ = curve_fit(curve, voltages, capacities) # Estimate the battery's remaining capacity at a given voltage and temperature voltage = 3.5 temperature = 25 remaining_capacity = curve(voltage, *params) # Print the result print("Remaining capacity: ", remaining_capacity)
This implementation uses a simple quadratic function to fit a curve to the battery's discharge data. More sophisticated functions may be used to improve the accuracy of the estimate, but this will require more data points and a more complex optimization algorithm. Additionally, this implementation does not take into account the effect of temperature on the battery's performance, which can also affect the accuracy of the estimate. A more complete implementation would include a temperature correction factor to account for this effect.
Pack Testing, BMS Testing is still left…