Simp BMS
Re: Simp BMS
Do you have some protection diodes on that?
Maybe I should put one on the gauge coil.
Maybe I should put one on the gauge coil.
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
It only has the body diode, so yes you can add protection diodes. I have not had any issues but it might be due to using 'intelligent' gauges that do not direct drive a coil.
-
- Posts: 56
- Joined: Wed Jul 03, 2019 1:35 pm
- Location: USA
Re: Simp BMS
Hello Tom
In wiring basics power and contactors (J4)diagrams is it the same contactors I am using for Tesla large unit H.V contactor + precharge wiring.
I am using Damien control board for Tesla motor and referring to his wiring for contactors.
If so where charge contactor will go and ground for positive contactor and pre charge relay comes from invertor ground switching.Can you please explain how this will wire with Damien contactor wiring for Tesla large unit.
Thanks
In wiring basics power and contactors (J4)diagrams is it the same contactors I am using for Tesla large unit H.V contactor + precharge wiring.
I am using Damien control board for Tesla motor and referring to his wiring for contactors.
If so where charge contactor will go and ground for positive contactor and pre charge relay comes from invertor ground switching.Can you please explain how this will wire with Damien contactor wiring for Tesla large unit.
Thanks
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Do not use the bms to control contactor control in this case.
Please use it to control the power feed to the forward and reverse switch. You do not want a fault dropping the contractors and potentially damaging something like your Tesla drive unit at speed.
Unless you have a way of managing HV dropout on the inverter I would advise wiring a control signal instead of cutting power direct.
Please use it to control the power feed to the forward and reverse switch. You do not want a fault dropping the contractors and potentially damaging something like your Tesla drive unit at speed.
Unless you have a way of managing HV dropout on the inverter I would advise wiring a control signal instead of cutting power direct.
- Kevin Sharpe
- Posts: 1345
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Simp BMS
iirc the Tesla contactors don't have an economiser and will burn up pretty fast.
This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
Re: Simp BMS
I have used tesla contacors. But you need to use the PWM fuction in Simp BMS.Kevin Sharpe wrote: ↑Wed Nov 13, 2019 10:09 am iirc the Tesla contactors don't have an economiser and will burn up pretty fast.
Another option I have tested with Tesla contactors is the DRV102:
You need a capacitor for timing and a resistor to set the hold PWM.
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
- Kevin Sharpe
- Posts: 1345
- Joined: Fri Dec 14, 2018 9:24 pm
- Location: Ireland and US
- Been thanked: 8 times
Re: Simp BMS
AFAIK the OP is planning on using the inverter for contactor control (which is also recommended practice from Damien), so...
Looks good

This is a personal post and I disclaim all responsibility for any loss or damage which any person may suffer from reliance on the information and material in this post or any opinion, conclusion or recommendation in the information and material.
Re: Simp BMS
It's not so good option if you have a microcontroller. Then you can do the timing in software.Kevin Sharpe wrote: ↑Wed Nov 13, 2019 1:26 pm Looks goodI've added that to GitHub as a wish list item for consideration on future versions of the inverter controller hardware.
Anyway you need one mircocontroller pin for the contactor, so you might as well use a PWM pin.
The DRV102 is intended to use with dumb systems that only have on/off. And in this kind of systems it works really well.
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
-
- Posts: 56
- Joined: Wed Jul 03, 2019 1:35 pm
- Location: USA
Re: Simp BMS
I put SimpBMS to volt battery pack.
J2 connection as per manual but not connect to current sensor.
J5 pin 1 and 6 input +12 v and pin 9,10,11,12 connected as per manual
J4 pin 8 input +12 and 16 to ground.
HV battery wire not connect yet.batteries lying separately but bms slaves are connected.
Display get on but show no any data . All valve show zero.
Please help.
Thanks
J2 connection as per manual but not connect to current sensor.
J5 pin 1 and 6 input +12 v and pin 9,10,11,12 connected as per manual
J4 pin 8 input +12 and 16 to ground.
HV battery wire not connect yet.batteries lying separately but bms slaves are connected.
Display get on but show no any data . All valve show zero.
Please help.
Thanks
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Please email me (address is in the setup manual), and have some screenshots of the serial terminal and your setup.
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Anyone running a SimpBMS please check the github for updated firmware.
Have gone through my code (also based on others work) and correct all the mistakes relating to temperature sensors (some were not based on each reading but a module average ect.).
Also updated the temperature derating to work of min and max temperatures instead of averages.
Outstanding work:
-Pulse discharge limits, so allow higher current for a set duration with a derate over the period from the initial pulse
-Update the manual to the latest settings, I have been slacking loads of menus without updated documentation.
Have gone through my code (also based on others work) and correct all the mistakes relating to temperature sensors (some were not based on each reading but a module average ect.).
Also updated the temperature derating to work of min and max temperatures instead of averages.
Outstanding work:
-Pulse discharge limits, so allow higher current for a set duration with a derate over the period from the initial pulse
-Update the manual to the latest settings, I have been slacking loads of menus without updated documentation.
- Bratitude
- Posts: 965
- Joined: Thu Jan 02, 2020 7:35 pm
- Location: Canada
- Has thanked: 154 times
- Been thanked: 334 times
- Contact:
Re: Simp BMS
I’ve gotten my hands on a Gen2 volt battery for next to nothing, interested in using simpbms.
Being no one (from my diging across the net) has really sniffed the canbus on the Gen2 bms, I’m thinking of wiring a up a gen1 bms to the gen 2 battery, and use simpbms.
Thoughts?
also picked up a Tesla Gen2 slave charger to use Damien’s board in
Being no one (from my diging across the net) has really sniffed the canbus on the Gen2 bms, I’m thinking of wiring a up a gen1 bms to the gen 2 battery, and use simpbms.
Thoughts?
also picked up a Tesla Gen2 slave charger to use Damien’s board in
https://bratindustries.net/ leaf motor couplers, adapter plates, custom drive train components
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Gen2 has one big central unit, the Gen 1 has the slaves.
The Simp BMS works directly with the Gen 1 slaves. I have no idea what the Gen2 spits out in terms of canbus and whether that would be usable.
So yes you can make, if you rewire all the cell connections carefully, a Gen 1 BMS work on a Gen 2 battery.
The Simp BMS works directly with the Gen 1 slaves. I have no idea what the Gen2 spits out in terms of canbus and whether that would be usable.
So yes you can make, if you rewire all the cell connections carefully, a Gen 1 BMS work on a Gen 2 battery.
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Good news for users with Chevy Volt packs or other canbus based slaves.
I am developing code to utilise a Serial to Canbus translator, this will allow a second canbus at a different speed to be utilised.
Due to the limits of the translator this canbus is only for talking to the rest of vehicle, so Displays, Victron Systems, Charger and DCDC.
It cannot be used to add more battery slaves due to the limited bandwidth.
I am developing code to utilise a Serial to Canbus translator, this will allow a second canbus at a different speed to be utilised.
Due to the limits of the translator this canbus is only for talking to the rest of vehicle, so Displays, Victron Systems, Charger and DCDC.
It cannot be used to add more battery slaves due to the limited bandwidth.
-
- Posts: 122
- Joined: Mon Nov 25, 2019 1:36 pm
- Location: Dreumel (NL)
- Been thanked: 1 time
- Contact:
Re: Simp BMS
For those interested:
I'm using the V1 version of the SimpBMS for several applications and had needs for a second CANbus.
I thought af replacing the Teensy 3.2 with a Teensy 3.6 with dual CANbus capabilities. The socket of the 3.2 do match the pins of the 3.6 but hence the voltage differences (5V vs 3.3V) I've decided to go another route.
Since the original Teensy CAN pins 3 and 4 where already taken for the two MOSfet's I have connected two extra small wires to pins 25 and 32 on the bottom of hte Teensy and connected an extra MCP2551 transceiver for the second CANbus using the FlexCAN library on alternative pins (25 and 32). So CAN0 is working on the MCP_CAN library and Can0 is working on the FlexCAN library.
After some initial testing it seems to work like a charm
I'm using the V1 version of the SimpBMS for several applications and had needs for a second CANbus.
I thought af replacing the Teensy 3.2 with a Teensy 3.6 with dual CANbus capabilities. The socket of the 3.2 do match the pins of the 3.6 but hence the voltage differences (5V vs 3.3V) I've decided to go another route.
Since the original Teensy CAN pins 3 and 4 where already taken for the two MOSfet's I have connected two extra small wires to pins 25 and 32 on the bottom of hte Teensy and connected an extra MCP2551 transceiver for the second CANbus using the FlexCAN library on alternative pins (25 and 32). So CAN0 is working on the MCP_CAN library and Can0 is working on the FlexCAN library.
After some initial testing it seems to work like a charm

= Th!nk PIV4 Collection, support, sales =
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
-
- Posts: 122
- Joined: Mon Nov 25, 2019 1:36 pm
- Location: Dreumel (NL)
- Been thanked: 1 time
- Contact:
Re: Simp BMS
#include <SPI.h>
#include <mcp_can.h>
#include <Wire.h>
#include <FlexCAN.h>
static struct CAN_filter_t defaultMask;
typedef struct {
uint16_t id;
uint8_t len;
uint8_t buf[8];
} CANMSG_t;
MCP_CAN CAN0(10); // define CAN0 on CS pin 10
static void hexDump(uint8_t dumpLen, uint8_t *bytePtr)
{
static uint8_t hex[17] = "0123456789abcdef";
uint8_t working;
while ( dumpLen-- ) {
working = *bytePtr++;
Serial.write( hex[ working >> 4 ] );
Serial.write( hex[ working & 15 ] );
}
Serial.write('\r');
Serial.write('\n');
}
void readCAN0()
{
// MCP_CAN interface on CAN0
CANMSG_t msgRX; // receive buffer
if (CAN_MSGAVAIL == CAN0.checkReceive())
{
CAN0.readMsgBuf(&msgRX.len, msgRX.buf);
msgRX.id = CAN0.getCanId(); // Get message ID
Serial.print("MCP_CAN0: ");
Serial.println(msgRX.id, HEX);
hexDump(8, msgRX.buf);
};
};
void readCan0() {
// FlexCAN interface on Can0
CAN_message_t inMsg;
while (Can0.available())
{
Can0.read(inMsg);
Serial.print("FlexCAN0: ");
Serial.print(inMsg.id, HEX);
hexDump(8, inMsg.buf);
}
}
void setup()
{
Serial.begin(115200);
delay(3000);
// setup MCP_CAN
CAN0.begin(CAN_500KBPS);
// set FlexCAN to TXalt and RXalt
Can0.begin(125000, defaultMask, 1, 1);
}; /*--(end setup )---*/
void loop()
{
// process incoming CAN packets
readCAN0();
readCan0();
};
#include <mcp_can.h>
#include <Wire.h>
#include <FlexCAN.h>
static struct CAN_filter_t defaultMask;
typedef struct {
uint16_t id;
uint8_t len;
uint8_t buf[8];
} CANMSG_t;
MCP_CAN CAN0(10); // define CAN0 on CS pin 10
static void hexDump(uint8_t dumpLen, uint8_t *bytePtr)
{
static uint8_t hex[17] = "0123456789abcdef";
uint8_t working;
while ( dumpLen-- ) {
working = *bytePtr++;
Serial.write( hex[ working >> 4 ] );
Serial.write( hex[ working & 15 ] );
}
Serial.write('\r');
Serial.write('\n');
}
void readCAN0()
{
// MCP_CAN interface on CAN0
CANMSG_t msgRX; // receive buffer
if (CAN_MSGAVAIL == CAN0.checkReceive())
{
CAN0.readMsgBuf(&msgRX.len, msgRX.buf);
msgRX.id = CAN0.getCanId(); // Get message ID
Serial.print("MCP_CAN0: ");
Serial.println(msgRX.id, HEX);
hexDump(8, msgRX.buf);
};
};
void readCan0() {
// FlexCAN interface on Can0
CAN_message_t inMsg;
while (Can0.available())
{
Can0.read(inMsg);
Serial.print("FlexCAN0: ");
Serial.print(inMsg.id, HEX);
hexDump(8, inMsg.buf);
}
}
void setup()
{
Serial.begin(115200);
delay(3000);
// setup MCP_CAN
CAN0.begin(CAN_500KBPS);
// set FlexCAN to TXalt and RXalt
Can0.begin(125000, defaultMask, 1, 1);
}; /*--(end setup )---*/
void loop()
{
// process incoming CAN packets
readCAN0();
readCan0();
};
= Th!nk PIV4 Collection, support, sales =
Re: Simp BMS
I just updated Simp BMS Tesla to Firmware Version : 200115, have the same settings as before:
0 - Slave strings in parallel: 1
a - Cells in Series per String: 0
But i get " !!! Series Cells Fault !!! "
Can I just ignore it, or are my settings wrong?
Readings looks like before.
BMS Status : 1 Ready 84
Out:0000 Cont:0000 In:0000
Modules: 14 Cells: 84 Strings: 1 Voltage: 306.309V Avg Cell Voltage: 3.647V Low Cell Voltage: 3.644V High Cell Voltage: 3.652V Delta Voltage: 9mV Avg Temp: 18.590C
0 - Slave strings in parallel: 1
a - Cells in Series per String: 0
But i get " !!! Series Cells Fault !!! "
Can I just ignore it, or are my settings wrong?
Readings looks like before.
BMS Status : 1 Ready 84
Out:0000 Cont:0000 In:0000
Modules: 14 Cells: 84 Strings: 1 Voltage: 306.309V Avg Cell Voltage: 3.647V Low Cell Voltage: 3.644V High Cell Voltage: 3.652V Delta Voltage: 9mV Avg Temp: 18.590C
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
Re: Simp BMS
Thanks, this error is new in this version, didn't get it before.
I have 14 modules...
I have 14 modules...
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
Serial console show low temp:18.85C and high temp:19.11C
CAN bus show same temp on high and low:
373 8 39 e 42 e 24 1 24 1
LOW_CELL 3.641
HI_CELL 3.650
MIN CELL TMP 18.85
MAX CELL TMP 18.85
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
- tom91
- Posts: 2296
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 199 times
- Been thanked: 524 times
Re: Simp BMS
I will make a test setup for this as the code makes this implausible really.
Wait, its only a difference of 0.26C, so due to it being a full number, no decimals it makes sense. So you need deltas of 1 degree to show up.
Victron screen, not the missing decimal
Re: Simp BMS
Delta 1C is good enough for me, it's only for controlling the water pump.
Voltage is correct, that's what matters.
Voltage is correct, that's what matters.
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"
Re: Simp BMS
What does "8 – Max Discharge = maximum discharge current in A" in battery settings do?
Give an error?
Set a output high/low?
Give an error?
Set a output high/low?
Thomas A. Edison “I have not failed. I've just found 10,000 ways that won't work"