Re: Info on BMW hybrid battery packs?
Posted: Fri Aug 06, 2021 12:56 pm
Has anyone installed these modules on their side rather than flat? Is there a good reason not to do so?
openinverter Community
https://openinverter.org/forum/
This was my thinking. But the temps really don't seem to change much, at least on charging. I've only charged at 8A so far but the temperatures didn't move more than a degree.
Of course, I remember the wiggly graph.Jack Bauer wrote: ↑Mon Aug 09, 2021 9:39 am I covered the temperature issues on the BMW hybrid packs of the conversion courses. Here is a short version : ask yourself what is different about how we (bev) builders use the packs versus how bmw (phev) use them...
Code: Select all
void canread()
{
Can0.read(inMsg);
// Read data: len = data length, buf = data byte(s)
//update this for S-BOX
/*
if (inMsg.id == 0x3C2)
{
CAB300();
}
*/
// Updated for S-BOX CAN messages (assumes S-BOX is OK sharing with the module CAN bus 0)
//ID = 200 Current
if (inMsg.id == 0x200)
{
SBOXcurrent();
//Serial.println("S-Box Current Received!!!!! &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
//ID = 210 Pack Voltage
if (inMsg.id == 0x210)
{
SBOXbatVoltage();
//Serial.println("S-Box Bat Voltage Received!!!!! &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
//ID = 220 DC Bus Voltage
if (inMsg.id == 0x220)
{
SBOXdcBusVoltage();
//Serial.println("S-Box DC Bus Voltage Received!!!!! &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
}
...
Code: Select all
// ID 0x200 Pack Current +-mA
void SBOXcurrent()
{
// make sure to reject the ID0x200 message sent from the CSCs, which always has 000 for bytes 5,6,7
// we only want to process ID0x200 measages from the S-Box
// Unlucky both use ID0x200 but luckily very easy to separate:
if (!((inMsg.buf[7] == 0) && (inMsg.buf[6] == 0) && (inMsg.buf[5] == 0)))
{
//must be from S-BOX current so process:
inbox = inMsg.buf[2];
inbox = (inbox << 8) + inMsg.buf[1];
inbox = (inbox << 8) + inMsg.buf[0];
if ((inMsg.buf[3] & 1) == 1)
{
CANmilliamps = inbox - 0xFFFFFF - 1;
// may need to get rid of -5mA offset I see at zero current
}
else
{
CANmilliamps = inbox;
}
//Serial.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
//Serial.print("S-BOX Current: ");
//Serial.println(CANmilliamps);
//Serial.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
//Serial.print("mA inbox = ");
//Serial.println(inbox);
if (settings.cursens == Canbus)
{
RawCur = CANmilliamps;
getcurrent();
}
if (candebug == 1)
{
Serial.println();
Serial.print(CANmilliamps);
Serial.print("mA ");
}
}
}
Going back to the original limits of the pack as suggested earlier in the thread, I'm thinking about sticking between 3000 and 4000
Apologies if the answer to this question is obvious - I’m learning as I go! - the 5v line appears to be taking its voltage from the teensy vin pin - I thought this was 3.3v max when powered by usb? Have a missed something obvious or is 3.3v actually enough for the 5v line?OutlandishPanda wrote: ↑Thu Jul 09, 2020 7:54 am Got to my pack, connected a MCP2562 transceiver to a Teensy 3.2, loaded SimpBMS BMW PHEV as per Tom's posts above (latest version) and connected as below. Success!! I can see all the modules and cells and its a healthy pack. Couldn't test balancing as my pack seems well balanced (2mV delta), which was a surprise given it has sat untouched for many months. I assume it can't balance disconnected from the vehicle?
A few pics of my setup and links if that is any help to anyone below.
Transceiver (I used 2562 and connected VIO to 3.3V):
http://ww1.microchip.com/downloads/en/D ... 05167C.pdf
Tom's code:
https://github.com/tomdebree/BMWPhevBMS
I disconnected the BMW BMS and connected in to the blue connector: PHEV CAN2b.jpg
You can see from this picture of my breadboard I had to terminate the CAN lines at the transceiver with 120R.PHEV CAN3.jpg
The 3 first modules power and CAN is separate from the last 2, so needs two sets of 5V connections.
The CAN lines for the 3 and 2 module sets also "seem" to be separate, measuring the continuity of the CAN lines to the modules and this connector, but only one of the CAN lines for the first three modules needed to be connected to be able to see them all on that CAN bus. No idea how/why, but seems to work fine and means termination is easier. Perhaps I measured it wrong.
The 5V line takes about 64mA when enabling all 5 modules, so probably also powering some of the logic of those boards.PHEV CAN1.jpg
The output I recorded was:Very happy with that. The voltages all moved around a tiny bit over time, so they were "live". Now working on a very simple display to connect in to the Teensy to help with debugging on the bench and sorting out the contractors etc. and adding a simple mode change button.Code: Select all
BMS Status : 1 Ready 80 Out:0000 Cont:0000 In:0000 Charge Current Limit : 10 A DisCharge Current Limit : 30 A Modules: 5 Cells: 80 Strings: 1 Voltage: 289.420V Avg Cell Voltage: 3.618V Low Cell Voltage: 3.617V High Cell Voltage: 3.619V Delta Voltage: 2mV Avg Temp: 19.600C Module #1 57.89V Cell0: 3.62V Cell1: 3.62V Cell2: 3.62V Cell3: 3.62V Cell4: 3.62V Cell5: 3.62V Cell6: 3.62V Cell7: 3.62V Cell8: 3.62V Cell9: 3.62V Cell10: 3.62V Cell11: 3.62V Cell12: 3.62V Cell13: 3.62V Cell14: 3.62V Cell15: 3.62V Temp 1: 21.00C Temp 2: 20.00C Status: 0x0 Bal: 0x0 Module #2 57.88V Cell16: 3.62V Cell17: 3.62V Cell18: 3.62V Cell19: 3.62V Cell20: 3.62V Cell21: 3.62V Cell22: 3.62V Cell23: 3.62V Cell24: 3.62V Cell25: 3.62V Cell26: 3.62V Cell27: 3.62V Cell28: 3.62V Cell29: 3.62V Cell30: 3.62V Cell31: 3.62V Temp 1: 19.00C Temp 2: 21.00C Status: 0x0 Bal: 0x0 Module #3 57.88V Cell32: 3.62V Cell33: 3.62V Cell34: 3.62V Cell35: 3.62V Cell36: 3.62V Cell37: 3.62V Cell38: 3.62V Cell39: 3.62V Cell40: 3.62V Cell41: 3.62V Cell42: 3.62V Cell43: 3.62V Cell44: 3.62V Cell45: 3.62V Cell46: 3.62V Cell47: 3.62V Temp 1: 20.00C Temp 2: 19.00C Status: 0x0 Bal: 0x0 Module #4 57.89V Cell48: 3.62V Cell49: 3.62V Cell50: 3.62V Cell51: 3.62V Cell52: 3.62V Cell53: 3.62V Cell54: 3.62V Cell55: 3.62V Cell56: 3.62V Cell57: 3.62V Cell58: 3.62V Cell59: 3.62V Cell60: 3.62V Cell61: 3.62V Cell62: 3.62V Cell63: 3.62V Temp 1: 18.00C Temp 2: 19.00C Status: 0x0 Bal: 0x0 Module #5 57.88V Cell64: 3.62V Cell65: 3.62V Cell66: 3.62V Cell67: 3.62V Cell68: 3.62V Cell69: 3.62V Cell70: 3.62V Cell71: 3.62V Cell72: 3.62V Cell73: 3.62V Cell74: 3.62V Cell75: 3.62V Cell76: 3.62V Cell77: 3.62V Cell78: 3.62V Cell79: 3.62V Temp 1: 20.00C Temp 2: 19.00C Status: 0x0 Bal: 0x0 CANbus 0.00mA 51% SOC 13260.00mAh
Also, need to incorporate the important charge and discharge limits vs. duration these little packs have, as alluded to here: https://batteryhookup.com/products/bmw- ... 1288381572
That certainly looks like our module but not identical? You can see the 10 sec max power limitation in discharge and charge (re-gen braking). No idea where they would have got this info or how reliable it is but helpful nonetheless. (That was a fantastic price!!) Note the voltages also. I think the lowest voltage is too low?
So, from what I've found on the web, the 330e pack, I think, will do somewhere between 23kW and 32kW continuous power (with cooling), and 58kW to 65kW peak for 10 sec (With lots of cooling!) Some references state 70kW peak, and BMW state the 330e has a 65kW motor, which would match a 70kW battery peak, but that seems quite extreme!
The usable capacity is consistently stated as 5.7kWh. We can work out the usable SOC range and so voltage range from that.
These are all with a very capable, active refrigerant system. Unless that is re-instated, I'm not sure we can access those peak power ratings very often! Also, I'd wonder if the BMW BMS would be modeling the thermal behaviour of the cells vs current in and out and be running a kind of feed forward control to the cooling system. Activating cooling from the sensor measurements may be too slow I'd guess? For a huge EV pack I don't think this is such a big deal but operating these small PHEV packs at peak power for more than a few seconds is going to need care I think?
If anyone has any experience using these packs, has found a good cooling solution and has more reliable data, please share!
I'm thinking of investigating what of the 330e refrigerant system can be re-used with an eAC compressor and my Panda's (eventual) AC system. My first idea of putting water in the pack's refrigerant lines is probably not going to do much, but worth also investigating?
Quick question to Tom, I notice when I remove power to the modules, the CAN comms stop, but none of the data displayed changes from then, its frozen, obviously. I've not had a chance to test yes, but what is your thinking around the status of the BMS when/if that happens? Does it indicate it has lost comms with the modules and suggest zero charge and discharge capability or some other mode change to warn of an unprotected pack? I could see no change in behaviour when I powered down the modules. Maybe I'm worrying too much for a home build!
Thanks.