This tester will discharge any combination of up to four NiMH and Li-Ion cells into a dummy load to determine capacity. Cell type is determined automatically upon connection. A pushbutton rotates through the four channels, selecting the results to view. The display is a 1" OLED; an Arduino Nano is soldered to the board. The Arduino's USB connector is used for power input and reprogramming.
While the default configuration offers testing of NiMH and Li-Ion cells, the voltage range constants in the software can be adjusted to enable testing of LiFePO4 cells, lead-acid cells, or any other battery chemistry you might want to test.
This project is an evolution of the original design at https://www.instructables.com/id/Li-ion-Capacity-Tester-/. In addition to expanding from one channel to four, I also made these changes:
- The IRFZ44N is a far larger MOSFET than needed. The AO3416 should be more than sufficient, with power dissipation in this application of only a few milliwatts.
- Replacing the 10Ω load resistors with 4.7Ω resistors provides a reasonable discharge current (around 200-250 mA) for NiMH, while not being excessively high for Li-Ion (closer to 700-800 mA). Mount them with a gap between the board to improve cooling. They will get hot to the touch when discharging Li-Ion cells; 800 mA into 4.7Ω works out to 3 W.
- The software was cleaned up a bit to better manage transitions between different states: idle (no battery), discharging, discharged, and error (voltage too low or high)
- The speaker beeps on startup, and beeps when a cell is discharged. It plays a lower tone on error.
- SPI is used to communicate with the OLED, instead of I2C. The particular display board Amazon sent me uses the SSD1306 controller, so that needed changing as well.
The software was imported into PlatformIO on VSCodium for enhancement. If desired, you could rename software.cpp to software.ino, remove the Arduino.h #include, and build under the Arduino IDE.