Open source BMS for 48V to 400V lithium-ion battery pack

very nice.

just noticed 1 tiny thing: the micro usb.

that connector is is only one that is to the side, i would recommend changing it to a type B vertical connector. its much more durable for EV use and then you can even dunk the board in coating or a closed bottom housing as all the connctors are at the top reducing and spaced needed as you dont have to dick around with trying to get a tiny connector into a hard to reach location when mounted in a vehicle or electronics box, a vertical type B is much more practical in that sense.

do you plan on having either a strip of a few leds of a breakout connector for a led bar that can light up to display basic errors like current or voltage errors or com link faults so you can do fast disanogsing without having to plug in every time?
 
do you plan on having either a strip of a few leds of a breakout connector for a led bar that can light up to display basic errors like current or voltage errors or com link faults so you can do fast disanogsing without having to plug in every time?


There is an oled display connector for that at the moment. oled display must be based on cheap 2$ ssd1306 and the actual code allow to display the error types and other useful data during normal operation. (current voltage, soc, battery min & max temps etc.


For vertical micro USB, I was thinking about it as well... I will probably go this way for next PCB iteration.
 
Hello

Really impressed with what you've made here. Im interested to hear about how the beta testing feedback have been? Anyone used this hardware in a for example 400V 400A DIY electric car yet?

Does the master board have built in pre-charge circuitry? Where would you connect the charger leads on board, because you don't use separate charging contactors am I supposing the leads go on the same side as the inverter?

How's the manual for the board going?

/Robin
 
So far, feedback are mostly positive, it does what it is supposed to do: allow precharge/discharge/charge/balance & monitor, but of course there are some little things to improve on both hardware & software. I have some people who bought Master-HV for electric vehicle conversion and other bought it for energy storage project. Also, some kits were sent and I never received feedback, so I guess they are still working on it... I will try to post some videos one day, I am quite busy right now and time is missing a bit... For the manual, I want to throw some time to improve it, but again time is missing somewhere in the equation. I received several request to develop Master-LV and have other projects on the way. So far Master-LV+PSU now sit in a 3Dprinted box and is ready to be connected to a 18S battery pack using LTC6813 slave board:

View attachment 1

With top cover, OLED & power button:
IMG_20200107_174829.jpg


Does the master board have built in pre-charge circuitry? Where would you connect the charger leads on board, because you don't use separate charging contactors am I supposing the leads go on the same side as the inverter?

Charger is connected to same terminal used for the motor controller/load unless you want to use a separate contactor. There is an output for this special case.

For precharge, it is done on Master-HV by using two main contactors (negative side contactor is used for precharging and once done the positive side contactor close the loop). For Master-LV, I had to use a separate relay mounted on the PCB itself because only one main contactor is used.
 
ENNOID said:
So far, feedback are mostly positive, it does what it is supposed to do: allow precharge/discharge/charge/balance & monitor, but of course there are some little things to improve on both hardware & software. I have some people who bought Master-HV for electric vehicle conversion and other bought it for energy storage project. Also, some kits were sent and I never received feedback, so I guess they are still working on it... I will try to post some videos one day, I am quite busy right now and time is missing a bit... For the manual, I want to throw some time to improve it, but again time is missing somewhere in the equation. I received several request to develop Master-LV and have other projects on the way. So far Master-LV+PSU now sit in a 3Dprinted box and is ready to be connected to a 18S battery pack using LTC6813 slave board:

With top cover, OLED & power button:

Does the master board have built in pre-charge circuitry? Where would you connect the charger leads on board, because you don't use separate charging contactors am I supposing the leads go on the same side as the inverter?

Charger is connected to same terminal used for the inverter/load unless you want to use a separate contactor. There is an output for this special case.

For precharge, it is done on Master-HV by using two main contactors (negative side contactor is used for precharging and once done the positive side contactor close the loop). For Master-LV, I had to use a separate relay mounted on the PCB itself because only one main contactor is used.

Great stuff! I was wondering if you would like to share the PCB-layouts on your Github for the Master- and Slave-boards? An BOM list would also help a lot ;)

Am I right when assuming that the MCU on the slaves don't need compiled code to run but instead are programmed from factory to monitor cells and communicate over SPI with a master MCU like yours?

/Robin
 
I'll keep private PCB & gerber files for now and will keep selling populated PCB on my website...

There is no MCU on the slave boards, but there is several registers in the embedded IC that need to be initialised/set. Master boards does it through ISOSPI when connected to the slave board. The values of those registers are modified every time you change the settings in the ENNOID-BMS app and do a "write settings".Master ISOSPI communicatiom is used for both programming slave IC and reading the cell voltages & temperature sensors.
 
Just wanted to see if anyone else has had this problem. i have been bench testing my circuit board design. My momentary Power Button will power off the BMS if held down, but it will not power it back on no matter what I try. What am i missing?

Thanks for any suggestions.
 
Normally Open switch connects "PushButton" to GND.
Using Termainal and status command, the detects the button press, just does not power back on.
 
I was asking, because I had a very similar problem with a wrongly connected pushbutton...

Otherwise, there might be an issue with the circuit that goes to the TI LM5165Y enable pin...
 
The problem was that I had the USB cable connected. The regulator remains enabled as long as the cable is attached.
 
would a 2 pin connector connected at the contactor coil positive or negative be a option?

a simple jumper bridge can be made if you dont need it or you can have a remote hard emergency cut by physically cutting the power to the contactor. that way you can break the contactor with external control or a E-switch separate from what the bms might be doing.
 
would a 2 pin connector connected at the contactor coil positive or negative be a option?

If I understand well your idea, it would just need an additional connector on the PCB in serie with the 12V & main contactor loop for connecting an external e-stop or just put a jumper if not needed. Sure that could be a good idea...of course, you could tweak something like that already with the actual PCB with some fiddling...but yeah it would be easier with a connector meant for that.

I checked and there is space for it...
 
Am I wrong in thinking one could use two slave boards for a 20s module setup? Use one slave for 10 of the cell arrangements and another slave for the next 10?

Sent from my Phone 2 using Tapatalk

 
Yes you can monitor a 20S pack with 2 slave boards each monitoring 10S... you need 2 slaves and a master-LV board.

I also offer a box called "penthouse" on my website which hold the master-LV board + contactor + 12V power supply. Just connect slaves boards, battery & load power cables and you are ready to go.
 
I'm now taking orders for Master-LV board. I have been finally able to add a paypal shopping cart to my website, so it should be easier for people to order the appropriate BMS kit (penthouse, master & slaves boards)

I'm now working to bring Master-HV to the same compactness level as Master-LV board with a similar design and more or less the same positioning for components, better routing and integrated precharge relay. The penthouse box should become a bit smaller with the new PCB layout:


Master-HV.png:
 
great progress indeed. nice to see a E-stop connector. does it work like a simple jumper like i recommended? any idea on the max cable length?

any plans to change the micro usb to a more robust type B or are you running into space issues?
 
For E-stop: I'm using the 12V output line for positive main contactor, so noise coming from the cable length should not be a problem.

I don't think large standard Type-B is really required, but yes there could be still enough space...
For USB, I switched to vertical micro-USB, so now all connectors are oriented toward the top as you suggested.

Part # : 105133-0001

https://www.mouser.ca/ProductDetail/Molex/105133-0001?qs=%2Fha2pyFadujsuUWASeLnyGgwjide%2F3wXATvcT8AzhP2kAZ8mp4Y8wg%3D%3D

USB.png
 
the vertical version is already a improvement and the board looks a lot cleaner. no more stuff sticking out the sides.

but if people leave a usb cable in it during operation to pull data from the unit it will put quite a bit of strain on a -relatively speaking- delicate connector type. prehaps a middle ground in a mini instead of a type b?
 
but if people leave a usb cable in it during operation to pull data from the unit it will put quite a bit of strain on a -relatively speaking- delicate connector type. prehaps a middle ground in a mini instead of a type b?

The USB connector is not meant for permanent monitoring, but of course someone could use it this way.

In the future, it will be possible to connect a Bluetooth NRF5X module on the serial connector and use ENNOID-BMS app on a phone or on a tablet to monitor an configure ENNOID-BMS, similar to what can be done on VESC controllers.
 
I have been trying for the last couple of days to use ST32cubeide and also Eclipse to make two small changes to the firmware. I know the code I need to add and where to add it but am very unfamiliar with these two ide's. Is there an ide that would be more suitable for making these changes? I really would like to learn but have hit a brick wall.

The following are my problems:
1. When PushButton(wired through key switch) is set to Latching/Toggle, chargeDetect will not keep the BMS powered on without the key being on. I would greatly prefer to charge without the key on.

2. I need to add a small amount of code to toggle OLED_RST from low to high just after startup. This is due to trying to use an OLED display based on the ssd1309. It works well as long as I toggle the reset line.

I realize I have a lot to learn but want to in case there are further tweaks I would like to make for my particular setup.

Also, on my board I have built in an economizer circuit for the contactor. Actually there is a switch so that you may choose to uset the economizer built into the relay or the one on the pcb. Makes the contactor a good deal less expensive.

My project is based around a 72v ev(CT&T C-Zone) and Nissan Leaf cells.

Thanks for any direction that someone may share!
 

Attachments

  • BMS_Leaf.png
    BMS_Leaf.png
    23.8 KB · Views: 1,286
1. When PushButton(wired through key switch) is set to Latching/Toggle, chargeDetect will not keep the BMS powered on without the key being on. I would greatly prefer to charge without the key on.

The original ENNOID-BMS charger detect circuit does not need the push button input. The BMS should normally wake-up as soon as a reasonable voltage is detected on the charger input and should stay ON as long as you have current flowing into the pack above the setting value : "charger enable threshold"

Is there an ide that would be more suitable for making these changes? I really would like to learn but have hit a brick wall.

uVision IDE keil works well, but is not free.

Otherwise here is this link for cubeIDE files:
https://github.com/EnnoidMe/ENNOID-BMS-Firmware/commit/bc0bf0f18a1f380caaf0edf3f3b776b7c5b799bb

Also, on my board I have built in an economizer circuit for the contactor.
I'm curious to know the circuit you are using to do that, how much space and component are needed?

Also, nice project by the way!
 
The economizer is base on the DRV103H. Its a $5 chip but very simple circuit. I seems to work really well. This wasn't really a brilliant idea by me. I fried the economizer board built in to the contactor. So, I decided to make my own and it worked.
If you would like the schematic, I can send it to you.

I only have a problem charging if set to Latch instead of momentary. When charger is connected with switch off, the BMS comes on and immediatley displays BYE and never latches the Charger Relay. If the switch is on, it charges(Not fine yet). Always has an error and shuts down after a random amount of time. Problem is I dont want to leave the switch on while charging because as soon as charge completes, the load will connect again.
 
Back
Top