DIY 6S to 12S BMS with CAN - DieBieMS

@JTAG You are freaking awesome!! This is a great thread! I can’t wait to see where this is going! Cheers, Danny!!

Good stuff!

You don’t want to use the JST XH familly for your balance connector? don’t forget to route your shunt signals as a diff pair.

I don’t really like the regulator balance connectors, they feel really cheap and are easy to accidentally break (exposing unfused thin wires to the battery, very scary). I also want two temperature sensors on the pack and this connector solves both of these issues/desires.

And little progress on the schematic / board. I finally figured out how to reuse / implement multiple equal schematics for the cell balancing circuits:

4 Likes

Nice progress man. Hey btw I just realized this. If your BMS is needing alot of computational power, would it be possible to utilize the power of the 2nd STM processor on dual VESC build? Otherwise just add extra STM processor for better flexibility of ur bms. One chip only cost 5 - 10 euro in mouser if I am not mistaken.

Just across my mind. At this moment balance charging system is quite in efficient according to my perspective. Is there any possibility to improve the charge rate for the last 20% of the capacity? I noticed my balance charger are slower when battery reaches about 90%.

That is some impressive work you do there. I don’t understand the magic behind it, but the numbers I do understand sound pretty awesome. Keep up the great work an make this masterpiece available :smiley:

@JTAG This is great! always wondered how the magic works in a BMS - still not 100 percent on how it works but it is cool seeing your progression. I dont mean to hijack the thread but you seem to be the person to ask about BMS stuff, after reading a bit I was curious if you could control sections of a battery with CAN - low voltage/high voltage cut off and have those sections controlled by the main PCB. Basically take your cell balancing circuits and daisy chain them with CAN bus. This way the battery can be modular so easy to replace sections and easy to wire (just daisy chain tx/rx- similar to is really quick rendering.

1 Like

What you seem to desire is having multiple battery voltage monitor pcb’s (one per pack), them all connected to a CAN bus communicating with a master module that is in control of enabling or disabling the charge/discharge current. This is actually the most used method in electric vehicles / large battery systems. There are a few open github projects with this exact topology.

However, this is not the path I would like to go with my design, although it is possible it would become crazy expensive since 70% of the cost is in the power switching components and not at voltage monitoring. Also electric skateboards (and in most other system that I know are needing a BMS are max 12S).

2 Likes

Thanks for the info. Cant wait to see where your BMS goes.

Another question: When You build a 12S3P pack it would Monitor and balance 12x 3 Batteries (3x) . Could it be that one battery is unbalanced because it checks the voltage of all three Batteries instead of every one individually ? Just a Crazy example: 3V 3V 6,6V

All cells in a parallel group will self balance and the bms module will treat them as a single cell.

2 Likes

Mmmm I love Altium.


1 Like

@JTAG- any update on your BMS

1 Like

Yeah but nothing exiting, should post an update indeed, here is a small summary (ill make a bigger update soon): *I worked on the power enabling / switching (managing how en when the BMS should turn on). I still need to check all voltage levels everywhere. *I just received a LTC6802 evaluation board and had a little play with that, seems all nice and straightforward.

Next big thing todos are: *Fix circuit around LTC. *think of a way to safely configure the bms for the different battery configurations.

Thanks for the update. Let me know when you need a beta tester.

I’ll second @korryh. This is fantastic work @JTAG

Can you estimate the final price for getting such a bms? Can you estimate a date for a beta test?

@JTAG when can you shut up and take my money? lol

i’m itching for a compact high powered 12S, as well as a 10S variant. These monstrosities i’ve been using are great but they take up a lot of room and prevent any sort of super-stealth build.

Sorry man, there is just loads of trash talk towards you guys te keep me structured :smile:.

Also motivation raised to a new level:

  1. Got a decent laptop now (T440P) that lasts long enough to make long train rides productive again.
  2. I have a functional but hacky personal electric longboard with no BMS that forces me to walk sometimes because I suck at charging it in time -> no state of charge indication XD.
  3. I extended my student Altium licence with one year, I am at the latest version now hopefully getting rid of some annoying bugs.
  4. SUMMER HAS COME.

Cost A cost estimate calculation is boring to make and might be a little confronting, let me first build a prototype and judge on what components to go the cheap route. Some current / voltage monitoring stuff might be simplified in the final design to reduce cost.

Firmware Some of the never ending developments like feature adding will be realized in firmware and companion software, at some point I hope that others will jump into the SW development boat and help make the BMS even cooler. Because of the more luxurious (lazy) BMS hardware route the software development becomes doable for everyone (even for a hardware engineer like me) and add lots of features that in some regard might dazzle commercial boards. I hope that when(if) more of you end up with this BMS software development will make a jump and utilize all hardware features :smiley: (and mature into something as cool as the VESC).

Progress The latest progress is mainly focused on the circuit that controls when the power is enabled and the microcontroller can take control. There are many things to take into consideration and I might have overlooked some (that what makes the prototype stage fun^^). The main problem lies in the fact that when the BMS is disabled the current draw from the battery pack should be as low as possible demanding the powerstate control electronics to be low power but still be ‘intelligent’ (else a device that is made to protect and control the pack will end up breaking it when in storage mode for a long time). I also want many thing to trigger the enable state and even more challenging that once the power is enabled the microcontroller can detect ‘what’ made the BMS to turn on.

I want that the following items to enable the BMS:

  • Power button This will be a “soft” power button, so only push( being a momentary switch) opening possibilities for integrated rubber (boosted like) and small waterproof switches + making it possible to serve other roles/tasks ->. This will not only function as a power button but also to control the menu structure on the OLED/eINK display (when either of them is installed*).
  • Microcontroller Since the power button is only a momentary switch the controller should also be able to keep the power (and therefore itself) enabled :evergreen_tree:.
  • Power applied to CAN bus connector In some applications where I fancy this BMS the usage will be on a remote location. In these applications a 3G modem will be present to relay telemetry data to the manager of the system. This 3G modem will have its own power supply ( something like the particle electron ), the modem could trigger on request or at a set interval applying power to the CAN bus enabling the BMS and request SOC / cell voltage data (notifying the administrator in case of failures / low battery).
  • Power being applied on charge input (detect that a charger is connected) In order to track the state of charge, state of health and most importantly keep the cell voltages between set limits the BMS should detect when a charger is connected and act accordingly. One can also choose to keep the rest of the skateboard in power down (applying no power to the VESCs) during charging.
  • A computer being connected trough the USB connector In case of firmware upgrade or configuration the BMS should remain on.

*In the future I would like to get rid of the whole display and communicate all the data trough the CAN interface to the VESC which in his turn relays is to a phone or smart remote (evolve like). Because of the VESC versatility and the communities effort this is a REAL big and sensible option.

In the current design all of this should be possible. If it all works as intended the display could give very useful information:

  • How many hours left to charge to battery to full.
  • How much of the capacity is used ( in total / trip) and available in mAh and/or percentage.
  • All measured data (max current / average current / cut off reasons / cell voltages and all the other stuff controlled by the already available button).

In case you omit the display I opted to support a digital WS2811 style LED to indicate the power states.

I updated the latest progress to Github and will update the PDF shortly (done).

11 Likes

Thank you, Danny!! You are really contributing a lot here! Big respect, bro!

Did you think about a remote power switch? It would be a great idea to start the engine (BMS) with a button on a remote!