Starting Tips | Ask Questions | Introductions | Categories

DIY 6S to 12S BMS with CAN - DieBieMS

Now that I am addicted to my electric skateboard with the nice performance of the VESC I feel that the only thing missing is a decent and competent BMS for a wide configuration of cells. Therefore I would like to start a long term project which I will document here, both to keep myself motivated + maybe implement some great ideas that arise in this topic. I think and hope that this forum is the right place for this new hobby project :smiley:, feel free to point me to a problem you think I didn’t adres that is a bottleneck for the current available BMS’s.

Please note that my goal is not to make a cheap or affordable BMS, my goal is to make the most competent BMS for e-skateboard applications.

It will have the following features straight away: *Soft power switch input with LED on / off / charge indicator. *Charge input -> switched (high side) -> to charger input (to disable charger if a cell reaches the max voltage) *Discharge input -> switched (high side)-> to motor controller / VESC (to disable the load when a cell reaches the min voltage) *CAN bus interface for cell voltage monitoring and charger detection, status monitoring + more with future updates (like state of charge / state of health). *Charge current sensing (future capacity measurement) *Discharge current sensing (future capacity measurement) *Pre charge for high capacitive load (with short detection, in case the motor controller is shorted / dead / wrong polarity) *USB interface for serial communication and flashing (no need for a programmer -> HW serial bootloader is used)

Future features: *mAh / Wh counting + soc + soh calculation. *option to connect a cheap oled display for soc / soh display *firmware update over can (trough VESC maby?) *Chrome based configuration interface (+ firmware upgrades)

So far in my pre investigation I think I will be going with the following chipset: BQ76200 For high side N-FET switching + precharging LTC6803-4 Battery stack monitor CP2104 USB serial interface STM32F303K8 uC with HW floatingpoint LM5165 Power supply with 744043151 ISO1050 CAN Transceiver isolated BF1 Series fuse

Tracked in github (still in a very early stage):

Schematic can be found here (UPDATED).

Thanks for your time :).


Most of this lingo is above my pay grade, but it sounds like a great idea. Having just shorted one of my Lipos, I’m liking the idiot (me) proof single plug bms scenario more and more. Good luck!


@JTAG Man this is 4am in the morning and you’re still awake lol!

Yes this is a very cool project, to be widely acceptable I hope this BMS works with either lipo / 18650 packs! The capacity measurement is very cool, really hard at the moment to really test how much is exactly 5000mah after several cycles.

Btw I am not quite sure, but with Dual VESC configuration the CAN port is being used for traction control. Not sure if CAN bus could be branched, but since it’s a bus its probably possible. I am not an electrical engineer, so I don’t know how CAN bus works.

Finally some contribution from The Netherlands! Happy Kingsday @JTAG

1 Like

Awsome, i had a similar idea. Instead I was thinking of using one of the intersill battery management ic’s with i2c. The vesc would then directly control the bms through i2c without the need for another microcontroller in the system. I might be mistaken, but I think there should be enough processing power left on the vesc.

1 Like

With boundary scan? :wink:
Nice project, what ecad you plan on using?

Yeah happy Kingsday to you as well :), finally the weather is getting better.

The CAN bus should have lots of capacity left to communicate with other stuff. Not really looked into the firmware of the VESC yet but I am pretty sure its possible.

@Mobutusan is saw your post! It looked nasty, but luckily no fire :). Especially the no more sparking and soft switching is what I like. I would really like the amount of PCB’s in a board as low as possible.

@harpie Hmm I havent looked into Intersil yet thanks for the tip! Yeah the VESC has plenty of processing capacity left, but there is a chicken egg problem. The powermanagement of the vesc is not suitable to be always connected to the battery, this takes away the opportunity to utilize it. I would also like it to stay universal to be used with other BLDC’s.

@Blasto nice one :), no, no JTAG. Just SWD should be sufficient :smile:. I am using Altium.

Once I made all libraries Ill start composing the schematic and share it!

1 Like

Its about goddamned time.

When the time comes, i will tell you to shut up and take my money.


Good point with the chicken egg problem. Looking forward to see progress. Is it going to be open source? Hope it gets an oled display!

@harpie Yes ofcourse :slight_smile:! As soon as I start the schematic ill keep track in an open github repo.

1 Like

This is a fantastic idea!
I will be following this project with great anticipation


I have been working on a non IC BMS, How much current will you be designing this to handle? It would be great if you used KiCAD for this project.

Speaking out of experience, it’s really hard for someone to go from Altium to Kicad, I tried and failed miserably. Felt like a complete Ecad noob.

Especially if he has a nice big library that is already built, building a library is a long and tedious process.

1 Like

I suppose your right but you lose the people who only work on projects based on open source tools, myself included. I will just have to be happy sitting on the sideline cheering this project on!

Unfortunately indeed once you are used to a powerful CAD tool you get easily annoyed and lose motivation quickly ( for a costumer of mine I have to work in Eagle, it is HORRIBLE, I can sum the disadvantages but the list is so long I wont even start ). I need about 1/3 of the time in Altium than I would in Eagle.

And next, if someone would like the branch and go in another direction with the project it is very likely the change would be significant and one would restart the pcb design completely (in the CAD program he/she feels comfortable).

The weather is getting nicer by the day & parts are arriving -> there is lots of motivation to finish fast :D. Luckily the software of the BMS is orders of magnitude simpler than the VESC ^^.

HA someone had a similar idea! Nice one @onloop !

1 Like

But no mcu :wink:

Still in testing phase, some small issues to iron out

1 Like

Aaaah how could I have missed that thread :hushed:? Nice build! Did you design this BMS? What chip do you use?

OK the project that kept me from making progress on the BMS is finally working! Here is the victory picture:

This weekend I fully dedicate to the BMS, let the progress begin :grin:!


It’s based on the bq77pl900 ic from TI. It’s a standalone chip, could be used in a host enviroment. Wanted to keep things simple

5 to 12S nice, with charge and discharge fet driver. Nice and affordable all in one solution indeed!

@JTAG I didn’t read it as part of the features, but normally BMS are relative to cells count and the voltage. It would be nice if you can use various power supply voltages ranging from 12v up to lets say 50v.