Close
0%
0%

4-Channel NiMH/Li-Ion Battery Tester

Determine the capacity of your battery stash...useful for battery pack and powerwall construction.

Public Chat
Similar projects worth following
This is an extension and optimization of a 1-channel tester I found at https://www.instructables.com/id/Li-ion-Capacity-Tester-/.

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:

  1. 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.
  2. 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.
  3. 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)
  4. The speaker beeps on startup, and beeps when a cell is discharged.  It plays a lower tone on error.
  5. 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.

  • Software updated...the new board works!

    Scott Alfter11/23/2022 at 19:19 0 comments

    I need to get some pictures put up of the new board in the new case running the new software (all of which is up on GitLab), but it's up and running.  When discharging Li-ion cells, the load resistors get just as toasty as they did before: hot, but not nearly so hot that solder would start to melt.  (I've seen that happen, on a computer motherboard...while the computer was running.)  I've put up a picture of the board (with display plugged in) in the meantime.

    The updated software uses the Adafruit_GFX library instead of u8g2, which I couldn't get running on the ATmega328PB.  Screen updates seem to be slower, but the only effect I can see is that it takes longer to begin cycling through battery positions when you hold down the button.  Switching between libraries was fairly easy, and the core routines work the same as they did before.

  • v2.0

    Scott Alfter10/25/2022 at 05:36 0 comments

    I've made some changes to improve manufacturability:  

    • The Arduino Nano has been eliminated; the bare-minimum components for equivalent functionality are now integrated into the design.
    • The through-hole load resistors have been replaced with arrays of 1206 SMD resistors that I think will better be able to dump heat into the board.  
    • I've added M3 mount holes to better facilitate mounting in an enclosure.
    • Since the Arduino has been removed, we need to find some other way to power the board.  You have a choice: the AVRISP connector (provided to program the ATMega328) or a USB-C connector (because all the cool kids are using USB-C for power now :) ).

    Extras may be available for purchase once they arrive and are tested.

  • Working pretty well, for the most part

    Scott Alfter07/10/2020 at 20:18 0 comments

    I've spent the past couple of days testing my stash of NiMH AAs.  It behaves pretty well if you load up cells with the tester off, then plug it in.  Sometimes it doesn't always start right if you add cells with the tester on; maybe I need to tweak the state management code a bit.  I have a bunch of cells that test around 90% or so of stated capacity, but there were others testing as low as 1/3 of capacity. :-|

    The load resistors only get a little warm with NiMH, but they definitely get hot with Li-ion cells.  At no more than 60% of rated wattage, though, they should be OK.  Also, the tiny MOSFETs are doing their job without issue.

  • The case is now printing

    Scott Alfter07/10/2020 at 17:45 0 comments

    I knocked this together in OpenSCAD fairly quickly.  It's now printing:

    It leaves the load resistors exposed for cooling.  Another approach might be to cover them up and add ventilation slots so that fans can blow over them, but  that would require tapping power from somewhere...probably the 5V pin on the Arduino.

View all 4 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates