Simp BMS
Re: Simp BMS
Hi All this is my first post on here.
I recently purchased A VW passat pack to upgrade my home battery / solar setup (this is a 360V 96s system if anyone is interested) and immediately ran into the teensy 3.2 shortage problem.
I have my own modified version of simpBMS which can send a JSON string via Wi-Fi to my home automation system via an ESP8266 of course.
I spotted that someone had kindly ported simp to the teensy4.0, the code worked and compiled as expected however many of the cell voltages were being missed. This appeared to be the first few cells on the first few modules.
After trying many different approaches I discovered the problem seems to be with the FlexCAN_T4 library, it seems that some packets are not received following a can send.
If I comment out the sendcommand() function call and send the 0x0BA command from linux via my can sniffer, I get all the voltages, proving the hypothesis. I did try converting simp over to an interrupt driven approach to receiving can messages but this had no effect, the messages were still lost unless send from and external source.
So a very long story short I moved the send command function call to
if (millis() - looptime1 > settings.chargerspd)
{
sendcommand();
looptime1 = millis();
if (settings.ESSmode == 1)
This effectively gives enough time for FlexCAN to get its act together before polling for messages.
I hope this helps someone
Cheers
I recently purchased A VW passat pack to upgrade my home battery / solar setup (this is a 360V 96s system if anyone is interested) and immediately ran into the teensy 3.2 shortage problem.
I have my own modified version of simpBMS which can send a JSON string via Wi-Fi to my home automation system via an ESP8266 of course.
I spotted that someone had kindly ported simp to the teensy4.0, the code worked and compiled as expected however many of the cell voltages were being missed. This appeared to be the first few cells on the first few modules.
After trying many different approaches I discovered the problem seems to be with the FlexCAN_T4 library, it seems that some packets are not received following a can send.
If I comment out the sendcommand() function call and send the 0x0BA command from linux via my can sniffer, I get all the voltages, proving the hypothesis. I did try converting simp over to an interrupt driven approach to receiving can messages but this had no effect, the messages were still lost unless send from and external source.
So a very long story short I moved the send command function call to
if (millis() - looptime1 > settings.chargerspd)
{
sendcommand();
looptime1 = millis();
if (settings.ESSmode == 1)
This effectively gives enough time for FlexCAN to get its act together before polling for messages.
I hope this helps someone
Cheers
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
Very strange would not expect that. All my new products currently use the Teensy 4.0 without any problems like you described it must be a sloppy port. I fully rewrote all my functions for my new firmware though.Gwizard wrote: ↑Tue Oct 24, 2023 12:46 pm After trying many different approaches I discovered the problem seems to be with the FlexCAN_T4 library, it seems that some packets are not received following a can send.
If I comment out the sendcommand() function call and send the 0x0BA command from linux via my can sniffer, I get all the voltages, proving the hypothesis. I did try converting simp over to an interrupt driven approach to receiving can messages but this had no effect, the messages were still lost unless send from and external source.
So a very long story short I moved the send command function call to
Re: Simp BMS
Hi Tom, I don't know but it's one to keep an eye on for anyone using the FlexCAN_T4 library in case it crops up in any other projects.
Thanks
Thanks
-
- Posts: 562
- Joined: Sat Jun 06, 2020 6:54 pm
- Location: UK/EU
- Has thanked: 29 times
- Been thanked: 18 times
Re: Simp BMS
Hi, SimpBMS reports HV voltage on id 0x356 over two bytes (MSB and LSB). Could somebody help to combine those two bytes into a single hex voltage value for arduino Due board?
- EV_Builder
- Posts: 1199
- Joined: Tue Apr 28, 2020 3:50 pm
- Location: The Netherlands
- Has thanked: 16 times
- Been thanked: 33 times
- Contact:
Re: Simp BMS
In the Arduino code?
Not sure what you upto.
But combineing 2 bytes into a 16BIT.
Int8 byte1 = 0;
Int8 byte2 = 0;
Int16 vint_16 = ( byte1 <<16 ) + byte2;
Not sure what you upto.
But combineing 2 bytes into a 16BIT.
Int8 byte1 = 0;
Int8 byte2 = 0;
Int16 vint_16 = ( byte1 <<16 ) + byte2;
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
see http://www.wdrautomatisering.nl for bespoke BMS modules.
Re: Simp BMS
Hi,
I am using an EVS BMS with VW MEB 12S modules. The BMS is working, but now I want to balance the cells (properly this will take weeks, but anyway).
The battery status shows "Balancing Active" and sometimes "Balancing Paused":
But I have the impression that it is not balancing (cell voltage did not change after 24hrs).
The contactors are OPEN when I am trying to get the cells balanced.
What does the "Bal: 0x0" mean?
I am using an EVS BMS with VW MEB 12S modules. The BMS is working, but now I want to balance the cells (properly this will take weeks, but anyway).
The battery status shows "Balancing Active" and sometimes "Balancing Paused":
Code: Select all
BMS State: Ready || Balancing Active
Modules: 5 Cells: 60 Strings: 1 Voltage: 223.364V Avg Cell Voltage: 3.723V Low Cell Voltage: 3.471V High Cell Voltage: 4.130V Delta Voltage: 659mV Avg Temp: 8.200C
Current Limits - Discharge 285A Charge 2A || ChargePort 0A || Pack Volt : 0.000V Bus Volt : 0.000V Pack Current : 18mA Pack SOC : 100
Module #1 43.40V Cell 1: 3.62V Cell 2: 3.60V Cell 3: 3.62V Cell 4: 3.62V Cell 5: 3.62V Cell 6: 3.62V Cell 7: 3.62V Cell 8: 3.62V Cell 9: 3.62V Cell 10: 3.62V Cell 11: 3.62V Cell 12: 3.62V
Temp 1: 8.00C Temp 2: 0.00C Status: 0x0 Bal: 0x0
Module #5 49.23V Cell 13: 4.12V Cell 14: 4.12V Cell 15: 4.13V Cell 16: 4.13V Cell 17: 4.13V Cell 18: 4.13V Cell 19: 4.13V Cell 20: 4.13V Cell 21: 3.83V Cell 22: 4.13V Cell 23: 4.13V Cell 24: 4.12V
Temp 1: 8.00C Temp 2: 0.00C Status: 0x0 Bal: 0x0
Module #6 43.31V Cell 25: 3.60V Cell 26: 3.62V Cell 27: 3.62V Cell 28: 3.60V Cell 29: 3.62V Cell 30: 3.62V Cell 31: 3.62V Cell 32: 3.54V Cell 33: 3.62V Cell 34: 3.62V Cell 35: 3.62V Cell 36: 3.62V
Temp 1: 8.50C Temp 2: 0.00C Status: 0x0 Bal: 0x0
Module #7 44.15V Cell 37: 3.68V Cell 38: 3.68V Cell 39: 3.68V Cell 40: 3.68V Cell 41: 3.68V Cell 42: 3.68V Cell 43: 3.68V Cell 44: 3.68V Cell 45: 3.68V Cell 46: 3.68V Cell 47: 3.68V Cell 48: 3.68V
Temp 1: 8.00C Temp 2: 0.00C Status: 0x0 Bal: 0x0
Module #8 43.27V Cell 49: 3.62V Cell 50: 3.62V Cell 51: 3.62V Cell 52: 3.62V Cell 53: 3.62V Cell 54: 3.62V Cell 55: 3.62V Cell 56: 3.47V Cell 57: 3.62V Cell 58: 3.62V Cell 59: 3.62V Cell 60: 3.62V
Temp 1: 8.50C Temp 2: 0.00C Status: 0x0 Bal: 0x0
The contactors are OPEN when I am trying to get the cells balanced.
What does the "Bal: 0x0" mean?
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
I have sent you an PM with a request for some debug info. MEB Balance status is not fully interpreted at the moment.
-
- Posts: 162
- Joined: Sun Jan 03, 2021 6:12 am
- Has thanked: 48 times
- Been thanked: 17 times
Re: Simp BMS
Hello.
My first time upgrading the Tesla2BMSV2 firmware. Arduino IDE throws warning messages. Could somebody please confirm whether these can be disregarder? These look like mainly due converting\comparing variables of not matching types.
My first time upgrading the Tesla2BMSV2 firmware. Arduino IDE throws warning messages. Could somebody please confirm whether these can be disregarder? These look like mainly due converting\comparing variables of not matching types.
Code: Select all
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino: In function 'void loadSettings()':
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:217:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
217 | Logger::console("Resetting to factory defaults");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino: In function 'void loop()':
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:1020:28: warning: comparison of integer expressions of different signedness: 'uint32_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
1020 | if (millis() - looptime1 > settings.chargerspd)
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino: In function 'void getcurrent()':
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:1379:32: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
1379 | if (value < 100 || value > (adc->adc0->getMaxValue() - 100))
| ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino: In function 'void canread()':
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:3307:28: warning: ' ' flag used with '%X' gnu_printf format [-Wformat=]
3307 | sprintf(msgString, "Extended ID : 0x % .8lX DLC : % 1d Data : ", (inMsg.id & 0x1FFFFFFF), inMsg.len);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:3309:28: warning: ' ' flag used with '%X' gnu_printf format [-Wformat=]
3309 | sprintf(msgString, ", 0x % .3lX, false, % 1d", inMsg.id, inMsg.len);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:3318:30: warning: ' ' flag used with '%X' gnu_printf format [-Wformat=]
3318 | sprintf(msgString, ", 0x % .2X", inMsg.buf[i]);
| ^~~~~~~~~~~~
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino: In function 'void CAB300()':
C:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\TeslaBMSV2\TeslaBMSV2.ino:3354:20: warning: comparison of integer expressions of different signedness: 'long int' and 'unsigned int' [-Wsign-compare]
3354 | if (CANmilliamps > 0x80000000)
| ~~~~~~~~~~~~~^~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp: In member function 'void SerialConsole::printMenu()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:58:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
58 | Logger::console("\n*************SYSTEM MENU *****************");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:59:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
59 | Logger::console("Enable line endings of some sort (LF, CR, CRLF)");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:60:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
60 | Logger::console("Most commands case sensitive\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:61:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
61 | Logger::console("GENERAL SYSTEM CONFIGURATION\n");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:62:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
62 | Logger::console(" h = help (displays this message)");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:63:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
63 | Logger::console(" S = Sleep all boards");
| ^~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:64:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
64 | Logger::console(" W = Wake up all boards");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:65:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
65 | Logger::console(" C = Clear all board faults");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:66:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
66 | Logger::console(" F = Find all connected boards");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:67:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
67 | Logger::console(" R = Renumber connected boards in sequence");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:68:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
68 | Logger::console(" B = Attempt balancing for 5 seconds");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:69:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
69 | Logger::console(" p = Toggle output of pack summary every 3 seconds");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:70:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
70 | Logger::console(" d = Toggle output of pack details every 3 seconds");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:72:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
72 | Logger::console(" LOGLEVEL=%i - set log level (0=debug, 1=info, 2=warn, 3=error, 4=off)", Logger::getLogLevel());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:74:11: warning: unused variable 'OverVSetpoint' [-Wunused-variable]
74 | float OverVSetpoint;
| ^~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:75:11: warning: unused variable 'UnderVSetpoint' [-Wunused-variable]
75 | float UnderVSetpoint;
| ^~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:76:11: warning: unused variable 'OverTSetpoint' [-Wunused-variable]
76 | float OverTSetpoint;
| ^~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:77:11: warning: unused variable 'UnderTSetpoint' [-Wunused-variable]
77 | float UnderTSetpoint;
| ^~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:78:11: warning: unused variable 'balanceVoltage' [-Wunused-variable]
78 | float balanceVoltage;
| ^~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:79:11: warning: unused variable 'balanceHyst' [-Wunused-variable]
79 | float balanceHyst;
| ^~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp: In member function 'void SerialConsole::handleShortCmd()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:126:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
126 | Logger::console("Sleeping all connected boards");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:130:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
130 | Logger::console("Waking up all connected boards");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:134:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
134 | Logger::console("Clearing all faults");
| ^~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:141:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
141 | Logger::console("Renumbering all boards.");
| ^~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:154:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
154 | Logger::console("Enabling pack summary display, 5 second interval");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:158:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
158 | Logger::console("No longer displaying pack summary.");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:170:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
170 | Logger::console("Enabling pack details display, 5 second interval");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:174:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
174 | Logger::console("No longer displaying pack details.");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\SerialConsole.cpp:116:13: warning: unused variable 'val' [-Wunused-variable]
116 | uint8_t val;
| ^~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\Logger.cpp: In static member function 'static void Logger::log(Logger::LogLevel, char*, va_list)':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\Logger.cpp:154:10: warning: enumeration value 'Off' not handled in switch [-Wswitch]
154 | switch (level) {
| ^
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\Logger.cpp: In static member function 'static void Logger::logMessage(char*, va_list)':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\Logger.cpp:202:24: warning: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
202 | register char *s = (char *) va_arg( args, int );
| ^
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModule.cpp: In member function 'bool BMSModule::readModuleValues()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModule.cpp:152:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
152 | Logger::debug("Module %i alerts=%X faults=%X COV=%X CUV=%X", moduleAddress, alerts, faults, COVFaults, CUVFaults);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModule.cpp:171:17: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
171 | Logger::debug("Sent CRC: %x Calculated CRC: %x", buff[21], calcCRC);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModule.cpp:212:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
212 | Logger::debug("Got voltage and temperature readings");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModule.cpp:218:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
218 | Logger::error("Invalid module response received for module %i len: %i crc: %i calc: %i",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp: In member function 'void BMSModuleManager::setupBoards()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:144:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
144 | Logger::debug("00 found");
| ^~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:161:31: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
161 | Logger::debug("Address assigned");
| ^~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp: In member function 'void BMSModuleManager::getAllVoltTemp()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:347:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
347 | Logger::debug("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:348:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
348 | Logger::debug("Module %i exists. Reading voltage and temperature values", x);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:350:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
350 | Logger::debug("Module voltage: %f", modules[x].getModuleVoltage());
| ^~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:351:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
351 | Logger::debug("Lowest Cell V: %f Highest Cell V: %f", modules[x].getLowCellV(), modules[x].getHighCellV());
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:352:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
352 | Logger::debug("Temp1: %f Temp2: %f", modules[x].getTemperature(0), modules[x].getTemperature(1));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:364:35: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
364 | if (!isFaulted) Logger::error("One or more BMS modules have entered the fault state!");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:369:33: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
369 | if (isFaulted) Logger::info("All modules have exited a faulted state");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp: In member function 'void BMSModuleManager::printPackSummary()':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:509:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
509 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:510:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
510 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:511:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
511 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:512:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
512 | Logger::console("Modules: %i Voltage: %fV Avg Cell Voltage: %fV Avg Temp: %fC ", numFoundModules,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:514:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
514 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:524:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
524 | Logger::console(" Module #%i", y);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:526:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
526 | Logger::console(" Voltage: %fV (%fV-%fV) Temperatures: (%fC-%fC)", modules[y].getModuleVoltage(),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:530:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
530 | Logger::console(" MODULE IS FAULTED:");
| ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:559:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
559 | Logger::console(" CRC error in received packet");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:563:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
563 | Logger::console(" Power on reset has occurred");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:567:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
567 | Logger::console(" Test fault active");
| ^~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:571:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
571 | Logger::console(" Internal registers inconsistent");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:576:25: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
576 | Logger::console(" MODULE HAS ALERTS:");
| ^~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:579:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
579 | Logger::console(" Over temperature on TS1");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:583:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
583 | Logger::console(" Over temperature on TS2");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:587:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
587 | Logger::console(" Sleep mode active");
| ^~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:591:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
591 | Logger::console(" Thermal shutdown active");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:595:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
595 | Logger::console(" Test Alert");
| ^~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:599:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
599 | Logger::console(" OTP EPROM Uncorrectable Error");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:603:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
603 | Logger::console(" GROUP3 Regs Invalid");
| ^~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:607:27: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
607 | Logger::console(" Address not registered");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp: In member function 'void BMSModuleManager::printPackDetails(int)':
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:623:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
623 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:624:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
624 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:625:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
625 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:626:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
626 | Logger::console("Modules: %i Cells: %i Strings: %i Voltage: %fV Avg Cell Voltage: %fV Low Cell Voltage: %fV High Cell Voltage: %fV Delta Voltage: %zmV Avg Temp: %fC ", numFoundModules, seriescells(),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:628:19: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
628 | Logger::console("");
| ^~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:617:11: warning: variable 'faults' set but not used [-Wunused-but-set-variable]
617 | uint8_t faults;
| ^~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:618:11: warning: variable 'alerts' set but not used [-Wunused-but-set-variable]
618 | uint8_t alerts;
| ^~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:619:11: warning: variable 'COV' set but not used [-Wunused-but-set-variable]
619 | uint8_t COV;
| ^~~
c:\Users\alexbeatle\Documents\Arduino\libraries\TeslaBMSV2-master\BMSModuleManager.cpp:620:11: warning: variable 'CUV' set but not used [-Wunused-but-set-variable]
620 | uint8_t CUV;
| ^~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterDerivative.cpp: In function 'void testFilterDerivative()':
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterDerivative.cpp:9:22: warning: 'der.FilterDerivative::LastInput' may be used uninitialized in this function [-Wmaybe-uninitialized]
9 | Derivative = (inVal-LastInput) / dt;
| ~~~~~~^~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterDerivative.cpp:18:20: note: 'der.FilterDerivative::LastInput' was declared here
18 | FilterDerivative der;
| ^~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterDerivative.cpp:6:32: warning: 'der.FilterDerivative::LastUS' may be used uninitialized in this function [-Wmaybe-uninitialized]
6 | float dt = 1e-6*float(thisUS - LastUS); // cast to float here, for math
| ~~~~~~~^~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterDerivative.cpp:18:20: note: 'der.FilterDerivative::LastUS' was declared here
18 | FilterDerivative der;
| ^~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterOnePole.cpp: In member function 'void FilterOnePoleCascade::test()':
c:\Users\alexbeatle\Documents\Arduino\libraries\Filters-master\src\FilterOnePole.cpp:207:9: warning: unused variable 'lastFilterVal' [-Wunused-variable]
207 | float lastFilterVal = 0;
| ^~~~~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp: In member function 'unsigned char Serial_CAN::send(long unsigned int, unsigned char, unsigned char, unsigned char, const unsigned char*)':
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp:38:1: warning: no return statement in function returning non-void [-Wreturn-type]
38 | }
| ^
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp: In member function 'unsigned char Serial_CAN::exitSettingMode()':
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp:175:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
175 | int ret = cmdOk("AT+Q\r\n");
| ^~~~~~~~~~
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp: In member function 'unsigned char Serial_CAN::setMask(long unsigned int*)':
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp:210:38: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long unsigned int' [-Wformat=]
210 | sprintf(str_tmp, "AT+M=[%d][%d][", i, dta[2*i]);
| ~^ ~~~~~~~~
| | |
| int long unsigned int
| %ld
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp: In member function 'unsigned char Serial_CAN::setFilt(long unsigned int*)':
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp:247:38: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long unsigned int' [-Wformat=]
247 | sprintf(str_tmp, "AT+F=[%d][%d][", i, dta[2*i]);
| ~^ ~~~~~~~~
| | |
| int long unsigned int
| %ld
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp: In member function 'unsigned char Serial_CAN::factorySetting()':
c:\Users\alexbeatle\Documents\Arduino\libraries\Serial_CAN_Module_TeensyS2\Serial_CAN_Module_TeensyS2.cpp:289:18: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
289 | if(cmdOk("AT\r\n"))
| ^~~~~~~~
Opening Teensy Loader...
Sketch uses 98260 bytes (37%) of program storage space. Maximum is 262144 bytes.
Global variables use 15848 bytes (24%) of dynamic memory, leaving 49688 bytes for local variables. Maximum is 65536 bytes.
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
Why are you compiling? There is a .hex you can upload. If you compile your own versions then giving support on any issues is not really possible due to library changes ect.alexbeatle wrote: ↑Thu Apr 04, 2024 2:42 am Hello.
My first time upgrading the Tesla2BMSV2 firmware.
-
- Posts: 162
- Joined: Sun Jan 03, 2021 6:12 am
- Has thanked: 48 times
- Been thanked: 17 times
Re: Simp BMS
ok. Learned something new. I'll try the .hex file. Is it the most up-to-date? Shows a month difference between the project and the .hex.
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
Yes it is, only gotten something in it someone wanted to do. Specific to their usecase, it is not an update from me. The .HEX is from me.
-
- Posts: 162
- Joined: Sun Jan 03, 2021 6:12 am
- Has thanked: 48 times
- Been thanked: 17 times
Re: Simp BMS
I'd like to verify something, please.
I have 14 Tesla MS batteries in series - 5.3kWh, 232Ah each. None in parallel.
When it comes to setting the battery pack capacity the firmware defaults to 100Ah. Is that a precautionary value since diy batteries aren't new so this to be left as-is or changing to 232Ah is safe?
Another question - simpBMS + LIM.
LIM needs battery capacity in Wh with 0.1 scale.
So confirming this is the correct way to calculate it.
These are available from the simpBMS CAN messaging:
Ah= 0x379 byte[0] and byte [1];
Max. Pack Charge Voltage aka. Charge Vsetpoint = 0x351 byte[0] and byte [1]
I have 14 Tesla MS batteries in series - 5.3kWh, 232Ah each. None in parallel.
When it comes to setting the battery pack capacity the firmware defaults to 100Ah. Is that a precautionary value since diy batteries aren't new so this to be left as-is or changing to 232Ah is safe?
Another question - simpBMS + LIM.
LIM needs battery capacity in Wh with 0.1 scale.
So confirming this is the correct way to calculate it.
Code: Select all
Wh = Ah * Max. Pack Charge Voltage
Ah= 0x379 byte[0] and byte [1];
Code: Select all
msg.id = 0x379; //Installed capacity
msg.len = 8;
msg.buf[0] = lowByte(uint16_t(settings.Pstrings * settings.CAP));
msg.buf[1] = highByte(uint16_t(settings.Pstrings * settings.CAP));
Code: Select all
void VEcan() //communication with Victron system over CAN
{
msg.id = 0x351;
msg.len = 8;
if (storagemode == 0)
{
msg.buf[0] = lowByte(uint16_t((settings.ChargeVsetpoint * settings.Scells ) * 10));
msg.buf[1] = highByte(uint16_t((settings.ChargeVsetpoint * settings.Scells ) * 10));
}
else
{
msg.buf[0] = lowByte(uint16_t((settings.StoreVsetpoint * settings.Scells ) * 10));
msg.buf[1] = highByte(uint16_t((settings.StoreVsetpoint * settings.Scells ) * 10));
}
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
The standard settings are just "random" you need to set the capacity yourself to what ever works. You can start at name plate and adjust when needed.
Yes that calc works, not 100% required to be accurate not all CCS chargers do anything with the info.
Yes that calc works, not 100% required to be accurate not all CCS chargers do anything with the info.
- mane2
- Posts: 185
- Joined: Fri Jan 13, 2023 6:32 am
- Location: Finland
- Has thanked: 23 times
- Been thanked: 21 times
Re: Simp BMS
There seems to be many forks and copies of Simpbms git repo for different Arduino platforms (eg teensy 4, esp32) and chargers that are not supported by the official software. I plan to use my Teensy 4.0 (as 3.2 is no longer available) with X5 pack and Outlander charger. I've seen outlander support on some repos, but not sure which one to use. Any recommendations?
I was also thinking of using BMS Safetybox for precharge, contactor control and maybe for current sensor if possible. This way I wouldn't need anything else than added can transceiver.
Not sure if any of those simpbms forks support that combo, teensy 4 & outlander charger & safetybox?
I was also thinking of using BMS Safetybox for precharge, contactor control and maybe for current sensor if possible. This way I wouldn't need anything else than added can transceiver.
Not sure if any of those simpbms forks support that combo, teensy 4 & outlander charger & safetybox?
- rstevens81
- Posts: 355
- Joined: Sun Dec 22, 2019 10:36 am
- Location: Bristol, UK
- Has thanked: 23 times
- Been thanked: 92 times
Re: Simp BMS
these forks are not affiliated with simp or tom, we are doing out own thing, unless you know what you are doing i would recommend buying either a real simp bms or the newer evs-bms from toms suppliers.
Although its fun developing a board for your own purposes and porting code the time spent will be questionable against just buying the simp bms. (i know because im the idiot that designed the spaceballs (esp32) pcb and wouldn't go as far to recommend it it to someone [due to the esp32 can bug & the beta nature of the code]).
in terms of sbox prob best go with zombie for that as thats known to work
Although its fun developing a board for your own purposes and porting code the time spent will be questionable against just buying the simp bms. (i know because im the idiot that designed the spaceballs (esp32) pcb and wouldn't go as far to recommend it it to someone [due to the esp32 can bug & the beta nature of the code]).
in terms of sbox prob best go with zombie for that as thats known to work
Rule 1 of EV Club is don't buy a rust bucket....
Which rule does everyone forget
Which rule does everyone forget
-
- Posts: 516
- Joined: Thu Mar 02, 2023 1:30 pm
- Location: Uk
- Has thanked: 258 times
- Been thanked: 69 times
Re: Simp BMS
Correct me if I'm wrong but simpbms is not for sale anywhere as far as I can tell.rstevens81 wrote: ↑Wed Apr 24, 2024 8:31 am i would recommend buying either a real simp bms or the newer evs-bms from toms suppliers.
- mane2
- Posts: 185
- Joined: Fri Jan 13, 2023 6:32 am
- Location: Finland
- Has thanked: 23 times
- Been thanked: 21 times
Re: Simp BMS
Yeah, well aware of that. Though, I would probably buy that evs-bms (or discontinued simpbms) if it would support that combo.rstevens81 wrote: ↑Wed Apr 24, 2024 8:31 am these forks are not affiliated with simp or tom, we are doing out own thing, unless you know what you are doing i would recommend buying either a real simp bms or the newer evs-bms from toms suppliers.
ESP32 is less than half price of Teensy 4, but was there some other advantages using ESP32 instead of Teensy 4?rstevens81 wrote: ↑Wed Apr 24, 2024 8:31 am Although its fun developing a board for your own purposes and porting code the time spent will be questionable against just buying the simp bms. (i know because im the idiot that designed the spaceballs (esp32) pcb and wouldn't go as far to recommend it it to someone [due to the esp32 can bug & the beta nature of the code]).
I could have a stab doing that port myself. I'd like to have only one Arduino doing all this stuff. Less wiring and less devices communicating with each other = less problems. BMW Safetybox sources/info seems to be here https://github.com/damienmaguire/BMW_SBoxrstevens81 wrote: ↑Wed Apr 24, 2024 8:31 am in terms of sbox prob best go with zombie for that as thats known to work
Found this BMW PHEV & Outlander charger repo https://github.com/aot93/BMWPhevBMS-OutlanderCharger
Would be great if there would be BMWPhevBMS repo with Teensy 4 support. Maybe there is?
-
- Posts: 1326
- Joined: Fri Mar 01, 2019 9:15 pm
- Location: Bristol
- Has thanked: 106 times
- Been thanked: 226 times
Re: Simp BMS
I can look at adding the saftey box into the EVS-BMS supported ones. Yes I do not know if the Sbox can live on the same bus as the battery modules and still work. Luckily the EVS-BMS has two CAN busses.