Simp BMS

Topics concerning OEM and open source BMSes
User avatar
Gwizard
Posts: 3
Joined: Tue Oct 24, 2023 11:45 am
Location: East Riding of Yorkshire

Re: Simp BMS

Post by Gwizard »

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
tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

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
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.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
User avatar
Gwizard
Posts: 3
Joined: Tue Oct 24, 2023 11:45 am
Location: East Riding of Yorkshire

Re: Simp BMS

Post by Gwizard »

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
m.art.y
Posts: 558
Joined: Sat Jun 06, 2020 6:54 pm
Location: UK
Has thanked: 28 times
Been thanked: 16 times

Re: Simp BMS

Post by m.art.y »

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?
User avatar
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

Post by EV_Builder »

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;
Converting an Porsche Panamera
see http://www.wdrautomatisering.nl for bespoke BMS modules.
Lood
Posts: 33
Joined: Thu Apr 20, 2023 11:13 am
Has thanked: 6 times
Been thanked: 8 times

Re: Simp BMS

Post by Lood »

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":

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
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?
tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

Lood wrote: Sun Mar 24, 2024 3:17 pm EVS BMS with VW MEB 12S modules.
I have sent you an PM with a request for some debug info. MEB Balance status is not fully interpreted at the moment.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
alexbeatle
Posts: 155
Joined: Sun Jan 03, 2021 6:12 am
Has thanked: 46 times
Been thanked: 15 times

Re: Simp BMS

Post by alexbeatle »

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.

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.

tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

alexbeatle wrote: Thu Apr 04, 2024 2:42 am Hello.
My first time upgrading the Tesla2BMSV2 firmware.
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.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
alexbeatle
Posts: 155
Joined: Sun Jan 03, 2021 6:12 am
Has thanked: 46 times
Been thanked: 15 times

Re: Simp BMS

Post by alexbeatle »

tom91 wrote: Thu Apr 04, 2024 8:52 am 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.
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.
image.png
tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

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.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
alexbeatle
Posts: 155
Joined: Sun Jan 03, 2021 6:12 am
Has thanked: 46 times
Been thanked: 15 times

Re: Simp BMS

Post by alexbeatle »

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.

Code: Select all

Wh = Ah * Max. Pack Charge Voltage
These are available from the simpBMS CAN messaging:
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));
Max. Pack Charge Voltage aka. Charge Vsetpoint = 0x351 byte[0] and byte [1]

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));
  }
tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

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.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
User avatar
mane2
Posts: 177
Joined: Fri Jan 13, 2023 6:32 am
Location: Finland
Has thanked: 20 times
Been thanked: 7 times

Re: Simp BMS

Post by mane2 »

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?
User avatar
rstevens81
Posts: 353
Joined: Sun Dec 22, 2019 10:36 am
Location: Bristol, UK
Has thanked: 23 times
Been thanked: 92 times

Re: Simp BMS

Post by rstevens81 »

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
Rule 1 of EV Club is don't buy a rust bucket....
Which rule does everyone forget 🤪
Jacobsmess
Posts: 479
Joined: Thu Mar 02, 2023 1:30 pm
Location: Uk
Has thanked: 249 times
Been thanked: 62 times

Re: Simp BMS

Post by Jacobsmess »

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.
Correct me if I'm wrong but simpbms is not for sale anywhere as far as I can tell.
User avatar
mane2
Posts: 177
Joined: Fri Jan 13, 2023 6:32 am
Location: Finland
Has thanked: 20 times
Been thanked: 7 times

Re: Simp BMS

Post by mane2 »

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.
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 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]).
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 in terms of sbox prob best go with zombie for that as thats known to work
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_SBox

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?
tom91
Posts: 1307
Joined: Fri Mar 01, 2019 9:15 pm
Location: Bristol
Has thanked: 103 times
Been thanked: 216 times

Re: Simp BMS

Post by tom91 »

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.
Founder Volt Influx https://www.voltinflux.com/
Webstore: https://citini.com/
royhen99
Posts: 211
Joined: Sun Feb 20, 2022 4:23 am
Location: N. Wiltshire. UK
Has thanked: 16 times
Been thanked: 100 times

Re: Simp BMS

Post by royhen99 »

I tested this last year. Battery modules and Sbox clash on id 0x100 so can not share the same bus.
Post Reply