Single Cell Testing - Suitability Algorithm Results
When considering which battery cells should be used in the battery box, it is important to eliminate any sources of uncertainty that could cause a malfunction while at competition. Given the single cell testing data (discussed in a previous page), one can observe if there are any outlier cells when considering all five types of tests conducted. The data types evaluated were: OCV voltage, AC impedance, DC linear sweep internal resistance charge/discharge, DC pulse internal resistance charge/discharge and weight (giving 7 total data types from 5 tests).
Knowing that there are 1379 total cells, an algorithm was created to determine which of these cells may not be suitable for insertion into the cell modules. The way the algorithm works is as follows:
Calculates the 7 parameters for each of the 1379 cells.
Creates datasets for each of the 7 parameters (i.e. a dataset for all the OCV numbers, another dataset for all the AC impedance numbers, etc.).
Goes through each dataset to determine which cells are mathematical outliers for the given data type (outlier being more than 3 standard deviations away from the mean).
Each of the outlier cells is assigned a score depending on which datatype it is an outlier for, as seen below:
A cell that is an outlier for the OCV or AC impedance tests is given a score of 2.
A cell that is an outlier for the DC linear sweep internal resistance charge/discharge or DC pulse internal resistance charge/discharge tests is given a score of 0.25 (outliers in one of these categories were usually outliers in all the other internal resistance categories, so their score would theoretically add up to 1).
A cell that is an outlier for weight is given a score of 1.
Cells that are outliers in multiple categories would have their scores added up (i.e. a cell that is an outlier in OCV, AC impedance and weight would have a score of 2 + 2 + 1 = 5).
If cell has a score greater than 2, the program advises the user to exclude this cell from the battery modules.
If score is between 0 and 2, the program advises the user to use discretion when deciding if it is suitable.
Open-Circuit Voltage (OCV) Test Data
The vast majority of the cells had an OCV value of ~3.59-3.6 V, with the formal mean of all the cells being 3.6015 V (rounded to 4 decimal places) and the standard deviation being 0.0301 V, generally indicating little variance. The outlier cells are as follows:
Cell Number | OCV Value (Volts) |
---|---|
989 | 4.0418 |
990 | 4.0094 |
991 | 4.0087 |
992 | 4.0161 |
1010 | 4.0049 |
1038 | 3.8516 |
1045 | 3.9525 |
1047 | 4.0187 |
It is interesting that cells 989-992 were consecutively outliers; perhaps there could have been an error in the equipment during this part of the cell testing process. The same could apply to cells 1010, 1038, 1045 and 1047, which are all in the same general ballpark. The following graphs show the OCV values for all 1379 cells.
Since there are over a thousand data points, it is difficult to infer much from the graphs that show the data for each and every cell. But a few things can be noted here:
All the extreme outliers are within 100 cells of each other.
Starting at cell 300, there seem to be a few cells that are slightly below the overall average trend. These would not have been picked up by the algorithm because they were close enough to the mean value for all 1379 cells. But if the algorithm was set to look for outliers between cell 300-600, these would definitely be considered outliers due to a smaller standard deviation. Careful consideration must be applied when deciding if these particular cells should be included in the final battery box.
The next graph shows cells 300-600, representing close to a quarter of all the cells:
This zoomed-in graph shows that there is definitely some “noise” among the data points, and those cells that previously looked like minor outliers seem far more extreme. At this point it is undetermined if points like this would be considered true outliers that would be unsuitable for the battery box. If this were the case, the algorithm could be run on intervals of 100 (cell 1-100, 101-200, etc.) and the outliers for each individual interval could be determined.
AC Impedance Test Data
For this set of data, the data was a lot more “nice” to work with. The average AC impedance for all 1379 cells was 0.02577 Ohms, with the standard deviation being 0.0009399 Ohms, indicating very small variance between each cell. The only cell that was determined to be an outlier was cell 1034, with an extremely large value of 3470 Ohms. Such a large value would likely be a fault of the testing equipment, but there is a small chance that the cell itself could be deeply flawed. It would definitely be advisable to exclude this cell to be on the safe side.
A graph showing all the data points would be useless, since there is only this one outlier while all the other cells are very close together in value. Instead, here is a graph showing cells 300-600 to give a better idea of the general trend.
Again, zooming in shows that there are in fact some slight trends in this data. In this dataset alone, the algorithm identified 6 outliers that are more than 3 standard deviations above the mean. It appears that these “interval” graphs are more telling of what might the outliers truly be, hence I believe that some sort of interval analysis should be run in the near future with all these data types.
DC Linear Sweep Internal Resistance Test Data
From these tests, two numbers were determined for each cell; a charge and a discharge internal resistance. Both graphs seemed to demonstrate very similar trends, as will be seen below. For charge, the mean internal resistance was 0.04124 Ohms with a standard deviation of 0.004323 Ohms. With discharge, the mean was 0.04013 Ohms with a standard deviation of 0.004579 Ohms. It turns out that both charge and discharge tests have the exact same cells as outliers. Here is the list:
Cell Number | Internal Resistance (Charge, Ohms) | Internal Resistance (Discharge, Ohms) |
---|---|---|
989 | 0.09695 | 0.09593 |
990 | 0.1095 | 0.1132 |
991 | 0.1119 | 0.1162 |
992 | 0.1105 | 0.1138 |
1005 | 0.09056 | 0.09555 |
1045 | 0.1073 | 0.1088 |
All of these outliers are significantly above the mean, and for each cell, the values for charge and discharge internal resistance are always within 0.005 Ohms of each other. Here are the graphs charge and discharge internal resistance for all cells:
These graphs look similar to those of the OCV test graph, as in the majority of the values fall very close to the average (with some apparent “noise” in the values), and the extreme outliers all close together in the 980-1010 range roughly. A closer look at cells 300-600:
The data seems to be randomly scattered around the mean with no immediate outliers at first glance (the only mathematical outlier identified by the algorithm was 511 for both graphs). But an interesting observation is that both graphs follow virtually the exact same trend; the discharge graph just has all its values collectively shifted down. It is certainly worth looking into why this is the case.
DC Pulse Internal Resistance Test Data
Again, each cell had a charge and discharge value calculated for this test. For charge, the mean value was 0.04001 Ohms, with a standard deviation of 0.004139 Ohms. The discharge mean value was 0.04071 Ohms, with a standard deviation of 0.00172 Ohms. Here are the outliers for charge:
Cell Number | Internal Resistance (Ohms) |
---|---|
991 | 0.06306 |
992 | 0.5678 |
1005 | 0.1030 |
1010 | 0.1263 |
1038 | 0.06450 |
1045 | 0.01390 |
1047 | 0.1323 |
The outliers for discharge are:
Cell Number | Internal Resistance (Ohms) |
---|---|
989 | 0.2485 |
990 | 0.3022 |
991 | 0.3192 |
992 | 0.3118 |
1010 | 0.2078 |
1038 | 0.1446 |
1045 | 0.3096 |
1047 | 0.2113 |
Overall, both charge and discharge have similar outlier cells, with discharge having 989 and 990 on top of those. A small observation is that cell 1045 is a negative outlier for charge, yet a positive outlier for discharge. Here are the graphs for all 1379 cells:
On the surface, it seems that both graphs follow similar trends to each other, although the outliers have somewhat different values between the two graphs (most notably cell 1045). Zooming into cells 300-600:
This brings some new perspective to the DC Pulse data. It seems that just like the DC Linear Sweep data, the charge and discharge graphs follow the exact same trend, but the discharge graph has all its values shifted down. This is interesting, considering that the discharge for all 1379 cells was reported to have a higher mean than the charge data; however this maybe be simply because of the nature in which the outliers skewed the data. Furthermore, these graphs look virtually identical to their Linear Sweep counterparts, indicating that without outliers, they would all follow the exact same trend.
Weight Test Data
The results from the weight data came out a bit messy; rather than single outliers, there were collections of outliers that had enough volume to skew the mean and standard deviation. The mean of all weights is 46.90 g, with a standard deviation of 0.6859 g (each point deviates from the mean by an average of 1.4%!). It is also worth noting that many of the cells had invalid data for this test, so they were not included (those cell numbers will be listed here at a later point). Here is the relatively longer list of outliers:
Cell Number | Weight (g) |
---|---|
380 | 49.245 |
745 | 44.816 |
770 | 44.795 |
773 | 44.811 |
779 | 44.632 |
784 | 44.706 |
787 | 44.800 |
789 | 44.827 |
792 | 44.507 |
987 | 43.313 |
988 | 43.236 |
989 | 43.522 |
990 | 43.021 |
991 | 43.200 |
992 | 42.949 |
993 | 42.721 |
994 | 42.862 |
995 | 43.349 |
996 | 43.286 |
1173 | 49.055 |
1174 | 49.127 |
This long list of outliers contains mostly negative outliers, with 4 of them being positive. Here is the graph for all 1379 cells:
As can be seen, there are several clusters of cells that have enough data points to skew the mean significantly. Looking at the cells that are generally around the same mass, the average should be closer to 47.0 or 47.1 as opposed to 46.9. Some more consideration will need to be given as to how this weight data should be handled. Here is a zoomed in graph for points 300-600:
When zooming into a relatively more stable part of the graph such as this one, the data generally seems to be hovering around 47.0 g with significant “noise” between the data points. Only two outliers were reported for this section, which could indicate that there may have been an equipment issue when dealing with the later cells.
Final Results
Before showing the last results, there were a few cells which had completely invalid data across all 5 categories. This is not to be confused with the cells that only had invalid weight data (those will be published at a later point). These cells were:
128
152
554
658
659
696
727
815
818
837
958
998
1006
1022
1027
1036
1059
The algorithm calculated scores for each cell that was an outlier for each category. Here are all the scores:
Cell Number | Score | Action |
---|---|---|
380 | 1 | Consider |
745 | 1 | Consider |
770 | 1 | Consider |
773 | 1 | Consider |
779 | 1 | Consider |
784 | 1 | Consider |
787 | 1 | Consider |
789 | 1 | Consider |
792 | 1 | Consider |
987 | 1 | Consider |
988 | 1 | Consider |
989 | 3.75 | Remove |
990 | 3.75 | Remove |
991 | 4 | Remove |
992 | 4 | Remove |
993 | 1 | Consider |
994 | 1 | Consider |
995 | 1 | Consider |
996 | 1 | Consider |
1005 | 0.75 | Consider |
1010 | 2.5 | Remove |
1034 | 2 | Remove |
1038 | 2.5 | Remove |
1045 | 3 | Remove |
1047 | 2.5 | Remove |
1173 | 1 | Consider |
1174 | 1 | Consider |
It is worth noting that all the cells with a score of 1 were only outliers in the weight category. Since the weight data is a bit messy at the moment, the algorithm may be revised in the near future to compensate for this.
Furthermore, I would recommend tackling the identification of outliers on an interval-by-interval basis (as explained in the OCV test section). Running the algorithm for the entire dataset seems to have only extracted the truly extreme outliers, but a closer inspection of each 100-cell interval could reveal more, potentially unsuitable cells that aren’t as apparent. I can begin working on this soon. In the meantime, here are the codes (the first one is the algorithm for all the cells; the second gives data for whichever one cell you choose).
Note that to run these codes, certain lines have to be changed depending on where you keep the CSV files with the raw data. These lines have comments on them, but feel free to reach out to me if assistance is required.