Categories
Battery

Battery Balancing

Since my battery had been out of a car for at least a year the cells were pretty unbalanced (more than 70mv difference).

The commands necessary to get the battery modules (BICM) to balance have been found. Nobody has been able to figure out what the ECU sends to the main battery frontend (BECM) to get it to start balancing. I tried a couple of guesses, but was never able to get it to start.

So I decided to try a man in the middle attack on the CAN traffic. I had a Teensy 4 CAN board from earlier testing that I wired up to the BICMs. I saw that SimpBMS had implemented support for talking directly to the BICMs and doing the balancing, but it had quite a bit of code I didn’t need since it wasn’t going to be the full BMS. I found someone else who had simplified the code quite a bit and forked it for my use case.

I messed around with balancing algorithms and I my primary finding was that you needed to let it rest for a second and take new measurements before you could trust the readings to make decisions about which cells need to be balanced. When you balance a cell the voltage on the adjacent cells spikes up. So if you just chase the highest cell all of the time you’ll just slowly drain the whole thing. If I wanted to go fast I’d select everything from max to max – threshold to balance. Once we started to get within 2 x threshold that stopped working and I just started balancing all the cells that were at the highest voltage reading. This managed to get everything back within 5ms.

To be able to live with this long term I need the BECM to be able to talk to the BICMs, so I had to get the pass through mode working. Initially I was using interrupt driven CAN traffic and the timing ended up being so inconsistent that the BECM really didn’t like it. So I went back to polling and it was happy again. I also spent a bunch of time trying to keep the BECM happy while I balanced thinking the problem was the format of the packets and not just the timing, eventually I realized I could just wait for the 0x300 and 0x301 packets came by from the BECM and modify the data to do the balancing.

I also ordered the male and female connectors that the BICM and BECM used and built a little harness that just connects all of the non-CAN pins directly to the other one. I forked 5V and GND to power the teensy and ran the CAN from the BICM side to Can0 and the BECM side to Can1 on the Teensy.

Eventually I want to need to figure out a more permanent mounting location for the MiTM Teensy, but it is working great for now.

Categories
Battery

Battery Coolant Take 2

Last night, I went to test my heating loop and it immediately shot to max temp and didn’t come down. Obviously the heater was dry and the pump wasn’t moving anything. I managed to panic shut it down and don’t think I did any lasting damage.

I realized that my weak coolant tank was the problem since it was collapsing and not allowing me to get a good vacuum. The original fill I just vacuumed on the hose directly and didn’t have the tank on there. It also started leaking after cutting crushed by the vacuum.

So I took a quick look at O’Reilly’s for something pressurized and cheap. I found this one. It was cheap and in stock. I had to get a T fitting and some caps to find something that could go from 3/4″ (outlet on tank) and 3/8″ (hose to my system). I also capped off the overflow opening on the new tank.

The vacuum this time was much better and it managed to pull a good vacuum and hold it for a couple hours while I did dinner and bedtime. I went around the squeezed all of the hoses just to be sure. I let it fill and hit the pump and it is much better. Now I need to figure out how to mount it and if I want to drain the tank and shorten up the hose going to it.

Unfortunately during testing I managed to short out the Teensy on my battery controller. So now I need to solder up and program a new one before I can test the heating system again.

Categories
Battery

Battery Coolant

The Volt battery pack has a very advanced thermal management system. I’m using most of the stock parts. I had to add some extra hose to deal with the battery being broken up into 3 chunks. I’ve also looped in the charger and a heater core in case I want to try to use it to cool.

There is an integrated heater as well to keep it from getting too cold.

For my initial testing I just used tap water. There was enough left over coolant to turn it all orange, so I wasn’t too worried about getting it replaced, but I had a good window today to finally get it replaced.

So I drained it out, vacuumed it and filled with the proper dexcool coolant.

Categories
Battery

Battery Balance

Want to start doing some work log posts so this will be entirely without context until I can do some back posts.

My Volt battery cells are pretty unbalanced with some as high as 3.98V and some as low as 3.91V.

I’m using the stock BECM/BICM setup for the battery. Someone has found the commands that the BECM sends the BICM to do balancing: https://www.diyelectriccar.com/threads/1st-gen-chevy-volt-bms-balance-commands-found.200023/

They haven’t found what you need to send to the BECM to get it to send commands to the BICM. I combed through some captures and have a guess that it is a 0X20E message. It gets sent with a cycle of numbers and bunch of zeros, I think if you change the zeros it might start balancing those cells.

To test this I need to be able to watch the CAN on the backside of the BECM. So I tried unplugging the BICM 4 and hooking up my CANDue to that plug to see if I could see the traffic, but I wasn’t able to get it to work with jumpers stuck in the connector.

Will report back when I have another chance to try this.