DIY 6S to 12S BMS with CAN - DieBieMS

Really cool! Good name (DieBieMS). Has a whole other meaning when pronounced in English. Hope you added lots of LEDs!

I’d like to pitch in to help with the software part! :slight_smile:

@zeno nice :D! Thanks for the offer!

If the hardware is verified I’ll look into how to tackle the software.

The latest news: PCBs came in!

7 Likes

Whoop! :slight_smile:

btw, I’m the guy that picked up that vesc last sunday :wink:

Haha nice! I already had that suspicion :smile:.

1 Like

I had a little time to mount most of the components. There are still a few important parts missing but this is a nice start ^^.

24 Likes

Absolute work of art. Definitely on my wish list, can’t wait.

Ehhh I am holding off buying from Bestech because I want to have this so badly! :smiley:

Any rough estimates on pricing or when some prototypes boards will be available for testing?

Can you add a buzzer,and make an option to let it beep instead of cutting power. If for example a cell drops to low or when overcurrent is reached. This would still allow controll over the board.

@Nordle There is already a buzzer just below the usb connector, it’s just not soldered on yet.

What are the exact dimensions of this beauty ?

eta? Looks really cool

Ill answer you all soon! I was too busy with solar boat racing last week :).

A teaser for the progress I made today:

  • USB ↔ serial works.
  • SWD interface is correctly connected :blush:.
  • Blinky works.
  • Pre-charge circuit works.
  • Main output switch works.
  • The whole powermanagement and charger detection works :smiley:!

Main output switch:

Pre-charge:

11 Likes

Looks great! Any chance the software will be open source? I’d love to take a look and contribute (im a cs major).

Bravo @JTAG

:clap:t2:

@Stevemk14ebr yes! Most of the drivers and basic functionality is done but still a bit hacky, once I feel confident ill push it to github. First I want to ride a damn skateboard with it, then ill clean the code :).

@Nordle you will have all the freedom to configure an allowed lowest cell voltage, the idea behind a BMS however is to protect (protect against low and high cell voltages) the battery against abuse and to make it easy to use (simple 2 wire charging). Once all hardware/software drivers are written ill start to implement a module that will hopefully keep track of an accurate state of charge, if you use the SOC info correct you will never end up with an empty :innocent:. And like @MrEpiquad said there is a buzzer on the board (however for a long time it was unpopulated):

@Pantologist I hope that this BMS in combination with a dual vesc setup + future fancy remote will create the boosted board like experience. All this fancy stuff makes it mode pricey than chinese BMSes, on the +side there are lots of customization possibilities (and allowed high current).

@appelton dimensions are 140*60mm.

Here I have a static dual VESC setup to test pre-charging (anti spark), switch the main current path (bypassing pre charge and allow the full current to flow) and simultaneously measure pack current + voltage:

Here the same but now with me sitting on the board:

Demonstrating turning the board on/off:

9 Likes

Display is alive :D!

27 Likes

Looks clean!:ok_hand:

The work you are doing is insane!

I plan on trying your encoder method and soldering up BMS once it’s finished.

Some good news, I just got the battery stack monitor working (LTC6803-2)! It took some time since I first wanted to make the general firmware buildup universal and “neat”. It is far from finished but the software for now is very clear and easy to understand + most importantly easy to extend. There is no real useful functionality yet (because the lack of cell voltage information so far) but now that this chip is working that should not take to long.

STM has this freaking awesome tool that enables you to look inside the chips memory “realtime” trough the debugger without interrupting the code. This makes for a powerful debugging tool. In this screenshot you can see an accurately measured pack voltage & current namely packState.packVoltage and packState.packCurrent measured by the ISL28022. The packState.loadVoltage is a voltage measurement done by the micro controller and thus much less accurate, this voltage is only used to verify the output voltage during precharge, it will give the OK to enable the main current path if the output voltage is within 85% of pack voltage, if for a certain time the output does not reach this threshold the BMS goes to error mode (probably because the output is shortened or initial load is to high).

You can also see all 12 measured cellvoltages being displayed. I deliberately use a very unmatched pack to test my software (and safety features). Current setup 12S 18650:

17 Likes