Why not design your own charger?

Trying to provoke the charger. I used my oldest cell with very high internal resistance (AW18350-IMR) and low capacity. Start current was 1A (That is begging for problems on this cell) and termination current 10mA.

It looks nice enough, but is there something at the start?

Zooming in on the start shows that the charger hits 4.3V for 1 second, not really a problem.

The charger is a constant current charger, it cannot do constant voltage, that is done in software. Usually regulation is within a mV, but if the voltage raises fast it need some time to adjust the current and may go a bit to high.
Current regulation is fast, but voltage regulation is slow. I will try to improve the speed slightly of the voltage regulation.

How about CC - CV - TC? The “UPS way” of charging a Lead-Acid battery.

I.e.

1. CC at 0.1C
2. CV at 14.4V, until current drops to 0.01C
3. CV at 13.5V indefinitely (until user unplugs the battery/charger)

Where would I (or other people) use it? The charger can only work up to about 4.5V.
LiIon has fairly low self discharge and there is no point in keeping a maintain charge, except if you want it to be connected to mains for years (i.e. UPS), but then again it is not the ideal way for LiIon.

Oops, I missed this spec. My bad. :zipper_mouth_face:

I am trying to keep the part count low and cheap with high precision, this means I have to do some shortcuts:
Supply voltage must be in Arduino regulator range, 12V supply works for that.
I do not want a voltage divider before my voltage measurement circuit, this limits voltage measurements to 5V.

One more charge mode:
VOLTAGE, this will measure voltage with current off and terminate when a specific voltage is reached.
VOLTTOP, as above, but will add a timed top-off charge using TIME function

First test with, I included the top-off function. The average current is 10% below requested current because 1 second out of every 10 seconds it will turn current off to measure voltage. This also gave some fun with logging, because I do not always want a thick voltage curve as above, the solution was an option to either return only the voltage measured with current off or the actual voltage. When returning the voltage with current off it will only be updated every 10 samples and any power or energy calculation done on the received data will be wrong!

This charge mode do not have any safety, specify too high a voltage and the cell will cook (Careful use of the temperature sensor can add a safety).

That was the last charge mode I had planned* and now I am basically done with the Arduino software (Need to clean it up a bit), but need some testing time and to redo the circuit board.
If there is some good ideas for more functions I may also add them if there is space for it.

*Two other possible terminations methods is based on temperature raise and voltage slope, I have not decided if I want to try with them.

I added one more charging mode: CAPACITY, i.e. charge a fixed amount of capacity into the battery.

I also worked on a new PCB for it:

It fixes some bugs and include some improvements to the original layout.
I am not going to order the new PCB just yet, I will be running test for some time first

So you (we) need a PCB like in the post before this one. And a battery holder like this:

And a 5V socket to put a USB plug in? Or do we need more?

It is a computer controlled charger, i.e. you need a computer to control the charger. It do not use 5V from the USB connection.

The 4 terminal battery holder is to get the best possible voltage measurements. You could short the sense and current terminals at the charger and use any battery holder (Like a old charger with electronic removed), but the voltage measurement would not be as precise.

So the list is:

PCB with Arduino and other parts.
Battery holder, preferable 4 terminal.
12V plug pack or other stabilized 12V supply…
Computer to control the charger.
And I would recommend putting the PCB into a box.

It was not designed as a general purpose charger, but it more in the test equipment category.

Thank you. Guess I was looking into your build the wrong way. From a consumers point of view.
Which means I can skip my next question(s).

It would be possible to make another program and connect a display and some buttons to the hardware instead, but I do not really see much idea in it with this hardware.

Not much update on this project yet, I have been testing and need to test some more.
For testing I made a setup with the charger and a discharger that is controlled from scripting. This way I can just start the test and come back a few days later to see the result.

One result I got on charging eneloops at 1A with -dv/dt terminations was this:

What is most interesting is the consistency between the 3 runs and it looks very good.
Getting 1920mAh from a eneloop also sounds good. The cell is a fairly new cell (½ year old) and has been used for my general charger testing.

One of the charge curves. As can be seen the charger also logs temperature and I get a low temperature raise at the end (good).

That consistency is quite impressive, thanks for sharing the test results.

I got me a 3D printer, this means the project will include a 3D printed enclosure.

One of my first prints was this test here, but I moved on to my own designs. This needed some serious work, because I have never used a 3D design program before, but some work with FreeCad got me this:

The box is parametric controlled from a spreadsheet in FreeCad, I can make it in any size and place the mounting holes as I want (This gave a lot of issues with how FreeCad works or is it bugs in it, but I have worked around that now).
The idea is to use it as base for project boxes, i.e. for each project I can add the required holes and other features before printing it.
The small box above was just for testing and was fairly fast to print. It is never going to be used for a project.

I use the charger circuit board and have ordered the new PCB.

My new board arrived today:

A lot of small modifications: A light filtering on the ADC inputs, protection for wrongly connected temperature sensor, diode to avoid back feeding an unpowered charger (It will still back feed a little through the ADC), a few changed connections and adjustment of some footprints and placement.

With a 3D printer I could also make a frame for it, it makes it much safer to test near near wires, metal battery holders etc.
I had already designed the frame with parameter control, i.e. I only had to type in the distance between the screw holes and print it.

wow, awesome

With the new board I decided to make the box:

But I was a bit too fast, I forgot a connector for the temperature sensor. I will probably use a stereo mini jack for that.

But with the box I could do some temperature test.

Two termocouplers into the hole for the led and into a box with computer interface.

One coupler is place at the top above the hot spot, the other is placed below the inductor (It is the hottest part).

First a 1A test with NiMH. The temperature 40°C at the box, it is made of PLA that can handle up to about 50°C
It is warmer at the inductor, but that is no problem or maybe I need to check the box below the inductor?

Lets try maximum charger current, i.e. 1.5A. The box gets very close to maximum allowable temperature.

My options are: Adding some went holes in the box or require a more heat resistance material for the box when using 1.5A charge current.
I could also wait for a inductor with slightly thicker copper windings, it might stay cooler.

Another small issue, I had planned on using a 5mm smart (neopixel) led as indicator, but it do not have the colors in the same sequence as the WS2812 I use on the circuit board. I could just change the program, but I do not like the two LEDS showing different colors. I will probably modify the box to use the small WS2812 breakout board (It is the 2812 version, not the 2811 version as marked on the board).

Man alive! This thing is really coming together. It has to be one of the cleanest looking DIYs I’ve seen at this point. How are you getting your graphs? Copy serial output to Excel?

Something like that. The thermocoupler box* can give the same type of listing as the charger. When saved to a file I have a program that uses JFreeChart to make the charts (I gave up on Excel for charts long time ago).

*This is another of my projects, it is finished and a articles with gerbers and software is written, but I have not published it yet. There was a few snags during the design and making of that box.

The charger can be used directly from a serial terminal, but I do not plan on it and have written some software to control it. It is done in Java, this means it will work on Windows, MAC and Linux.







Initial screen for connecting to the charger or loading a old csv file for analysis.











The charge control screen, the number of parameters to enter will change depending on selected mode.

The battery I test here is a old eneloop that at one time was used for my charger tests, bet was retired a few years ago.







It is possible to see the log in numeric format







The data can be reduced in a couple of ways.







Adjusting the practical aspects of the charger, i.e. calibrating and setting a few configuration items.