Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

In-development: Inexpensive Custom BMS for Tesla Battery Modules

This site may earn commission on affiliate links.
The software was crashing at least one a month taking down my system for no reason. Also one of the relay drivers on the board burned out. I tried to get a replacement board but they would only sell me a complete new package at full price, not just the I/O board. I passed on that.

Due to this unreliability I no longer use the relay control part of the system, just the software to monitor the cell voltages and temp's. Currently I am installing my own PLC based battery protection system and will be switching to "Tom's" control board for reading the Tesla BMS data.

Yea I noticed on manual it stated that if you kept the USB connected at all times it would cause random reboots. I also had an issue with an onboard mosfet and they told me to return it for troubleshooting. I ended up just programming an ESP to listen to the UDP packets and connected the relay to the ESP itself instead.
 
Is anyone aware of information about re purposing Model 3 battery modules anywhere on the internet?

Either reusing the existing module BMS board or wiring in a new one to the existing battery monitoring flex cables, anything really.

I've read through the EVTV post in great detail, it seems to be the best information currently available Tesla Model 3 - NextGen Battery - EVTV Motor Verks

Anyone have anything more current? The battery modules are so cheap and perfectly sized for my usage.
 
after the update 10.1 this message and upstart (acceleration reduced) (the car needs a maintenance) model s 75d 2017
20191118_133226.jpg
20191118_133221.jpg
 
OK, That explains allot, I was reading posts that you were using the Teensy, but I saw all kind of due references in your fork, so I was quite confused :)

I'm not able to compile your fork though?

sketch\BMSModuleManager.cpp.o: In function `BMSModuleManager::setBatteryID()':

sketch/BMSModuleManager.cpp:624: undefined reference to `Can0'

sketch\BMSModuleManager.cpp.o: In function `BMSModuleManager::sendBatterySummary()':

sketch/BMSModuleManager.cpp:561: undefined reference to `CANRaw::sendFrame(CAN_FRAME&)'

sketch/BMSModuleManager.cpp:562: undefined reference to `Can0'

sketch\BMSModuleManager.cpp.o: In function `BMSModuleManager::sendCellDetails(int, int)':

sketch/BMSModuleManager.cpp:614: undefined reference to `CANRaw::sendFrame(CAN_FRAME&)'

sketch/BMSModuleManager.cpp:615: undefined reference to `Can0'

sketch\TeslaBMS.ino.cpp.o: In function `initializeCAN()':

D:\Code\Arduino\TeslaBMS/TeslaBMS.ino:90: undefined reference to `Can0'

sketch\TeslaBMS.ino.cpp.o: In function `loop':

D:\Code\Arduino\TeslaBMS/TeslaBMS.ino:135: undefined reference to `CANRaw::available()'

D:\Code\Arduino\TeslaBMS/TeslaBMS.ino:139: undefined reference to `Can0'

collect2.exe: error: ld returned 1 exit status

Br Michael
 
There are still a lot of changes that could be made to the code to make it cleaner and remove the pieces I don't use (I don't think I use any CAN traffic). It also freezes every 5.5-6 hours and has to be rebooted and I haven't been able to figure out why. I'd really like to find a way to just run it straight from a rPi but I'm a little out of my league.
 
I will look properly at the code once I get it up and running, waiting for some connectors and stuff, should arrive tomorrow. Maybe I can nail down the bug, most likely a memory leak somewhere.

You want to use a rPi because all the rest of your stuff (Grafana etc) runs on that? Are you using Influx DB? and is your whole monitoring setup also on github somewhere?

With your big installation, I assume you run Tesla packs both in parallel and serial configuration? Have you connected them two and two, and then connected all those pairs in parallel? any issues balancing the whole installation using this solution?

What are you using as charge controller, and for the inverter part?

Are you completely off the grid, or do you still need to supplement once in a while?

Br Michael
 
I think it's a memory leak, too. I've tried a handful of things to fix it with no luck so far.

I use Grafana and InfluxDB. I've got Influx running in a VM on my NAS and Grafana on a separate rPi4 somewhere because the FreeBSD version isn't up to date. I want to use an rPi because I really don't like having to use an Arduino Due as the middle man. That's basically the whole setup, though. Everything else is just some custom web pages that do xhr calls to get the json from my rPi running flask. If you're interested I can send you all that stuff personally, just DM me.

And yeah, 2S8P battery config. No charge controller. My inverter allows the flow to reverse when there's excess solar power. I've written some automations to monitor the battery charge state and turn the solar inverters off if there's too much power coming in. No issues once it's all up and running and the BMS balances, but it might not even be necessary. I think I balance to a much tighter margin than Tesla does in the car.

I'm run in off-grid config, but I do have the option to back on-grid if necessary. I haven't needed to in months, though.
 
The software was crashing at least one a month taking down my system for no reason. Also one of the relay drivers on the board burned out. I tried to get a replacement board but they would only sell me a complete new package at full price, not just the I/O board. I passed on that.

Due to this unreliability I no longer use the relay control part of the system, just the software to monitor the cell voltages and temp's. Currently I am installing my own PLC based battery protection system and will be switching to "Tom's" control board for reading the Tesla BMS data.

This is complete BS that they are selling a product for $2.5K, which cost not more then $1k and they are not providing any support for it. [I have no problem paying for things if I get good and appropriate support]. I got one of the earlier version of their v2 BMS and it has multiple issue with it. The worst was that they put GX14 contactors in it and cramped everything into a small box. Due to the heating by the contractors it burned the cables inside and with that the contactors. When I opened up it was a mass. I rebuilt it anyway because every part you can buy it, in retail price!!, 40% or more cheaper. [Now they are using bigger box and bigger contactors GX16 but their pricing still atrocious]

Anyway, if they have decided not to support the product or provide reasonable service here is some help for you to have your driver board.

Board Shield Design
Schematics Shield Design

This is their latest published board design before they have decided to start to play the closed source BS with open source. [e.g. it is illegal anyway due to derivative usage under GLP].

The MOSFET they are using is a BSP295.

The public shield design and the final product what is in their BMS head differ slightly.
BMS_Shield.jpg


They have added a PTC1812 over-current (T260) protection to the four MOSFET circuits. As far as I can tell this is the only difference between that older design files and the final product.
T260.jpg


You (anybody) can create for a JLCPCB project from the gerber file, so anybody can order it, to be used by those who have been abandon. [Not to talk about -unfortunately- the long term viability of that shop, anyway].

I might even create the updated board design... you have been wronged.
 
Out of curiosity, what's bugging you about it? I have one as well.

My issue list:
- it reboots/crashes anytime when I connect to the live system with USB and start the terminal. Always. If I want to have direct info, or reconfig, I have to bring down the system.
- if you turn it off the system after you have shut down the inverter (before the inverter fully discharge) it tac weld one (or both) contactors. I have to actuate them about 10-20 times to "fix it". There are other scenarios when this will happen but I was not able to consistently recreate those.
- dropping wifi, without reason.
- for me, it crashed only twice what I can remember (if I exclude anything before the rebuild and without the direct USB connection which will crash it every time), so I am not unhappy about the reliability.
- Sometimes it just doesn't start up. Fix: connect directly with terminal. There is no reason or specific case why. I have tried it so many way to recreate the problem consistently, no success.
 
My issue list:
- it reboots/crashes anytime when I connect to the live system with USB and start the terminal. Always. If I want to have direct info, or reconfig, I have to bring down the system.
- if you turn it off the system after you have shut down the inverter (before the inverter fully discharge) it tac weld one (or both) contactors. I have to actuate them about 10-20 times to "fix it". There are other scenarios when this will happen but I was not able to consistently recreate those.
- dropping wifi, without reason.
- for me, it crashed only twice what I can remember (if I exclude anything before the rebuild and without the direct USB connection which will crash it every time), so I am not unhappy about the reliability.
- Sometimes it just doesn't start up. Fix: connect directly with terminal. There is no reason or specific case why. I have tried it so many way to recreate the problem consistently, no success.

Bottom line. Prototypes are relatively easy to make. Production products that have all the bugs worked out take a lot of time and redesign work. And this is a complicated product!
 
  • Like
Reactions: NiallDarwin
My issue list:
- it reboots/crashes anytime when I connect to the live system with USB and start the terminal. Always. If I want to have direct info, or reconfig, I have to bring down the system.
- if you turn it off the system after you have shut down the inverter (before the inverter fully discharge) it tac weld one (or both) contactors. I have to actuate them about 10-20 times to "fix it". There are other scenarios when this will happen but I was not able to consistently recreate those.
- dropping wifi, without reason.
- for me, it crashed only twice what I can remember (if I exclude anything before the rebuild and without the direct USB connection which will crash it every time), so I am not unhappy about the reliability.
- Sometimes it just doesn't start up. Fix: connect directly with terminal. There is no reason or specific case why. I have tried it so many way to recreate the problem consistently, no success.

What do you have your pre-charge setting set to?

I created a NodeRed dashboard that decodes the UDP packets (same as come out of the CAN port) and that's how I get live access to the data, let me know if you want the code.

upload_2020-8-10_8-28-33.png
 
I have my pre-charge set to 10 seconds and I've never had an issue with welded contactors, but like you said the newer versions have different contactors so that could be why.

I sent you the JSON for the flow. Let me know if you have any questions.