I had a bunch on 18650 cells that needed to be analyzed but i also wanted to check what overdischarged cells do after recovery by testing their capacity over multiple cycles. So i built a battery capacity analyzer that can also cycle cells multiple times while recording the capacity each time.
The project is pretty much done and is currently analyzing cells just like any other battery analyzer but i think the UI could still be improved.
Even if i can live with the UI as-is, I'll be likely making similar projects in the future.
I think it would be beneficial to learn to make a nicer UI now so that when another project comes along i'll already be over the learning curve somewhat.
Also, right now i am willing to make compromises because it's my project but there might be a day when i'll have no say in the matter so i might as well get ready for it.
What's inside the analyzer:
TP4056's were used to control the charging and a CC load is used to discharge. Everything is controlled by an arduino and a 74HC595 to expand outputs. TP4056 charged LED outputs are fed into arduino and used to detect when the cells are charged.
The analyzer is controlled with a single rotary encoder that has a push button inside.
Currently the UI works as follows:
A) On startup rotating the encoder changes between cells (or banks).
Short push ( t < 1,5s ) does nothing.
Long push ( t> 1,5s ) enters and exits configuration mode.
B) In config. mode:
Rotating encoder changes the value of selected setting.
Short press chooses the setting to change.
There are 4 settings in total:
1) Test ON-OFF starts the test. END displays in this field when the test is over.
2) Capacity display - mAh or Wh, this is self explanatory.
3) Cycles - this setting decides how many discharge capacity tests are done on a single cell.
4) View previous cycles - to view the data from previous cycles (to write it down).
Right now i find the UI a little cumbersome. For example if i want to check the capacity of a cell that just finished discharging i have to: rotate to switch to cell -> long press to enter config -> click to choose view cycles -> rotate to choose cycle to view, and after this the mAh shows up but if i want to see Wh i have to additionally click over to the mAh field and rotate the encoder once to change to Wh.
What i'm thinking:
A) Config mode is unnecessary, perhaps it would be better to make it so that you are always in config mode and add cell number as another field to select with short press then rotate to switch cells.
B) Long press would only start the test. There is currently no way to abort or pause a test so perhaps i should add that as well.
Abort would be easy enough.
C) There's also no way to see whether the cell is charging, discharging or charged, other than looking through the went hole inside and looking at the LED's or looking at the voltage on the LCD and guessing.
D) I think i could add more things to display in the ON-OFF-END field on the top right of the LCD, but it would need to be 3-ish characters. I think there should be a CHG -
chargin
g, CHD -
charge
d, OFF - charger and load is off, DSG -
dischargin
g, DSD -
discharge
d and maybe ABD - aborted and PSD - paused.
CHG and CHD might be too hard to tell apart at a glance so perhaps CH+ and CH- would be better, maybe IN and OUT to indicate the charge?
Arduino IDE allows me to add some custom characters to display, perhaps i could do it like they do in phones where a little battery icon is shown filling up?
E) the "Cell n" field takes a lot of space, i think i could change it to "1234" (without spaces) where a selected cell would be highlighted somehow. I could use this to display the state of each cell without having to actually scroll to it to see. For example if cell 1 is selected the "1" is highlighted and if cell 2 is done charging the character "2" would indicate, perhaps by flashing or alternating between "2" and some letter like "F" for full?
What do you guys think? I would appreciate some input.