Open source hardware universal balancing charger.


This project aims to create open source hardware platform for the ever popular cheali-charger software.

It is inspired by the fact that I managed to get one of those clone Imax B6 chargers and it was unfortunately one with the unmarked CPU and so uncompatible with the alternative cheali-charger firmware. Well the original firmware this was not sadisfactory for me also. In fact I was looking for it to cycle some NiMh packs for me, but it failed miserably to do so, I was lucky it did not burn down my house.

 But the enclosure of the charger is so fine extruded aluminium, and a good design, so I did not have the heart to just throw it out , but also did not stand the useless brick laying around. Probaly it would be possible to reverse engineer it and get running somehow, but closer inspection showed that the hardware probably is not so perfect to bother messing with it, plus the results would be quite unrepeatable, becuse when ordering the charger from the it is quite random what version you get. Much better to make one own hardware! The enclousres for those chargers seem to be quite indentical though. So it would be nice possibility for many people to be able to swap out the internals of the charger with the good fully customizeable open source  hardware and software. Currently unknown where those enclosures come from and weather it is possible to order custom variants, but for the price (about 15USD) it seems completely viable to just buy whole charger for the project, throw out the original guts, and reuse the case.

For designing the circuit and board my choice of tool is very good free and open source electronics design suite KiCad (currenty ver5.0).

I found some circuits from around the web that is originally known to be compatible with cheali-charger.
The most basic seems to be this:RC-Power_BC6_Charger.pdf

Another almost same example:rc-power_bc6_imax_b6_hobbyking_eco06_digital_charger_voltcraft_b6_digital_balanced_charger.pdf

The one I had in my hands in most parts represented the following circuit, good ideas from there, also this is notably good source for component choice because uses most readily available and affordable components:ImaxB6_clone.pdf

 Base design features:

  • 6 cells balancer
  • 26V max battery voltage
  • charge rate up to 6A, power limited to 50W
  • discharge rate 2A power limited to 20W
  • supply voltage 11-24V (60W)

Additional features:

  • Input reverse polarity protection
  • Output reverse polarity protection
  • Optional external temperature sensor
  • UART connection for logging with PC
  • Input undervoltage lockout (software)
  • Firmware flashing connector compatible with Arduino and USBASP connectors

 Design details:


In this version I tried to follow the concept of SMD balancer resistors. Other circuits have seen some improvements, so it is a redesign from basically BC6 cicruit mentioned earlier. Would no recommend using this version directly but only maybe the base for better redesign. Shown here for reference purposes. Also I am not completely sure weather to completely abandon the SMD balancer resistors.

Warning! Discharger section of this version is flawed, directly drawn down from the original, but do not have low pass filter in it, so can not work! This version was never prototyped.

KiCad 5.0 project

Schematic in pdf for quick viewing:TBmax_ver150.pdf

Snapshot from 3D rendering:front150.jpg


Quite big redesign again. Went to through hole resistors for the balancers as I found out that 2W resistors are readily available.

Discharger circuit also fixed. And of cource when at it I added some of my own touch to it (complete redesign).

This version has not been prototyped

 Kicad(5.0) project

Schematic in pdf for quick viewing:TBmax_ver1.8.pdf

Snapshot from 3D rendering:TBmax_front180.jpg

Snapshot from 3D rendering backside:TBmax_back180.jpg

Gerber files for PCB

Notable design decisions and features in this version:Notes_ver180.pdf


When taking manufacturing quotes it came apparent that it is too expensive to make a pick and place SMD assembled prototype from ver1.8, and it seemed quite impossible and tedious to hand solder so many 0603 size resistors, so I went on to redesign and optimise the board for hand soldering. Basically I went too far and replaced all resistors with through hole variant.

Important update in this version is the concept of multiplexing individual cell voltages before feeding into the diffamp inputs. That saves a lot of resistors but adds one more mux chip.

Also minior change in the battery reverse polarity protection circuit.

Kicad(5.0) project files and

Schematic in pdf:TBmax190.pdf

Snapshot from 3D:esi1.jpg Picture of the working prototype:Ver1.9_working.jpg

Status: assembled and tested. Errors found:Errata_ver190.odt


In this version I pretty much designed all back to SMD resistors and transistors, choosing 1206 as standard size for resistors, this is more or less doable with hand soldering as well. Well  at least this is from where I started.
On the way while I was at it, and choosing the components, I throw out all small PNP trasnsistors and replace them with 2N7002(or compatible SOT-23) MOSFET, shaving some base resistors again off the BOM. Also this improves again the reverse battery protection as it will not draw any current through the input transistor.

Schematic in pdf:TBAmax2_00.pdf

Kicad project

Front view of the board:front2_00.jpg

Back view of the board:back2_00.jpg

 Status: assembled and tested. Following errors found:Same as ver1.9


Experiments with Arduino Nano and switch mode power supply controller chips. 


Improved version from 2.0. Assembled and tested. Now meets the original design specifications! (Exept for the maximum output current)

Schematic in pdf:TBAMAX2.4.pdf

Kicad project

Firmware files that I flashed(and avrdude settings)

Interactive Bill of Materials



Picture of charger ver2.4 working

 3D rendering of the board with display:

3DrenderingVer2 4 web