Arduino Universal Battery Charging Shield update

One of my most viewed projects ever (both on Instructables and Github) is my AVR Universal Battery Charger. It was also one of the very first projects I ever published, so there wasn’t a proper schematics or board layout (back then I simply didn’t care), my code was messy and the hardware had some flaws. Since then, I was getting a lot of requests, comments and questions about a new version, and after a long development, I will be releasing a new version on this site (designated as version 3.3 or 3.4 – yes, there were that many iterations between the original 1.0 and this version – so that’s what took me 3 years, if you’re asking). You can see a picture of the prototype above this article.

As of now, it consists of three Arduino UNO shields: the Power shield, the Balancing shield and the UI shield. The idea is that you can combine only the shields you really need – so if you do not need balancing, then do not include the balancing shield, just the Power & UI shields.

Biggest changes

Here I am summarizing the biggest changes to this project:

Balancing: yes, by a popular request, it is now capable of balancing up to 4S lithium batteries.

Arduino-compatible: I am not a big fan of using Arduino for a project like this, I’d rather make a dedicated board for it with custom software in AVR Studio). But so many people requested this to work with the Arduino environment that I decided to try doing this inside the Arduino IDE.
Just a note – this project is really stretching the capabilities of the 8-bit 16-MHz microcontroller, so there will be some compromises regarding accuracy and power. Maybe in the future, I will make a version using my favorite microcontroller, the STM32F103 (sometimes referred to as ‘the blue pill’ in the community).

Customisable: since it consists of three separate shields, each containing a separate system, you can use only the shields with functions relevant to you. Don’t want balancing? Don’t include the Balancing Shield. Don’t want the display and controls? Well don’t include the UI shield. This also means that in case of any future updates, you can swap only the outdated shield.

Firmware & hardware improvements.


  • Charging:
    • max input: 20 V DC
    • max output: 18 V (charges 4S lipo just fine)
    • max charging current: 2 – 3 A (depends mostly on quality of the inductor, cooling and ambient temperature)
  • Discharging (battery test)
    • max current: 2.5 A
    • max heat dissipation without external cooling: 3 – 6 W
  • Balancing
    • balance resistor: 18 Ω per cell
  • UI
    • 84 x 48 monochrome display
    • rotary encoder with button
    • 2 LEDs
    • Serial port
  • Other
    • analogue temperature sensor
Charge curve of a partially discharged Li-Ion cell – this might not look that impressive, but I am very proud of that! You can clearly see the change from CC to CV mode, and the voltage stayed exactly at 4.2 volts during the whole CV mode. That’s impressive accuracy, given the hardware. Just a note, my PicoLog mistakenly reports current (brown curve) in amps, while it should be miliamps (the CC current was 1 amp).

Project status

As you’ve seen in the cover photo, I have a prototype of version 3.3, and I am currently in the phase of evaluating performance of the different shields. Based on that I will decide either to publish version 3.3 or skip to version 3.4 and publish that, as there are some changes I want to do to the overall concept. This post is aimed at giving you some information about the progress, since as I said in the begging, I am getting a lot of questions about the next version of this project.

detail of the Power shield – input connector is hidden behind the input capacitor

13 Replies to “Arduino Universal Battery Charging Shield update”

  1. Dear Martin,
    any idea when you will release the latest version on Github including the PCB´s ?
    Would highly appreciate this !
    Thanks for the good and continious work !
    Best regards
    Michael from Germany

    1. Hi,

      I need to finish some priority projects first, but it will be out before the end of May. I have the hardware and 90 % of the firmware, but it still needs to be polished a lot & some important bugs solved…

      Regards, M.

    1. Eeh I know the development is taking too long, but I am now prioritizing other projects, so I will be releasing the raw data (not finished) to GitHub in a few weeks, so anybody can finish it or use it as-is.

    1. Hi Martin,
      I liked your project. It looks very good.
      Have you put the files to download somewhere?
      Thank you very much.

      1. Hi, yeah, I forgot about that. Since I now consider the project abandoned, I’ll put what I have on my GitHUb in the next few days (but note that it is not finished!)…

  2. Hi Martin,
    I appreciate your attention. I downloaded the files but could not open the files in the softwere eagle. Was the layout done in eagle or another softwere? Do you know the version of softwere?

  3. I have questions …
    I have a 7.2V 6.5A cell.
    How could high current charging be solved?
    Thank you in advance for your reply!
    Regards Oscar

Leave a Reply

Your email address will not be published.