# Chevy Volt factory electronics



## notAhoser (Mar 28, 2017)

This log is the big one. It's from the HV CAN, which is where all the activity is that we want to see. I haven't spent much time looking at this one. One file is a CSV broken into 1mil record chunks (no joke). The other file is a zipped up PCAP file with everything in it.

This file starts with the car off, plugged in, and at a full charge. Then I started the log. We drove around for 10-15 minutes (I should have timed it), using up about 1.5kwh of battery. We pulled in to park, shut the car off, and plugged in the L2 charger and let the log keep going until the car said it was fully charged. This whole log is about 1:15 long, iirc.

CSV--> https://www.dropbox.com/s/mfbh3w7d68sp3ux/Volt_LOG_11.zip?dl=0

PCAP--> https://www.dropbox.com/s/5qpnabq5v2h238q/Volt_LOG_11_PCAP.gz?dl=0


----------



## bcampbell (May 12, 2018)

Hi, thanks for sharing this. Have you had any luck deciphering the CAN messages? Also, what year Volt was this from?

Thanks.


----------



## notAhoser (Mar 28, 2017)

bcampbell said:


> Hi, thanks for sharing this. Have you had any luck deciphering the CAN messages? Also, what year Volt was this from?
> 
> Thanks.



This is from a 2014 Volt.


I gave up on using the factory electronics when I figured out that my 48v reconfiguration wasn't compatible with the OEM electronics...


----------



## bilbo (Oct 31, 2017)

Does anyone have any information on the battery cell balancing commands sent by HPCM2 to the BECM? Preferably on the Gen 2 Volt but any information on the Gen 1 volt would help as well. 

Bigmouse appears to be have partially deciphered the Gen 1 balancing but does not appear to have posted any of the details yet:
"Figure out and program balancing control for Chevy Volt BMS (half the cells work, the other half still need to be decoded. Balancing currently disabled in BMS firmware)"​
Thanks in advance for any assistance.


----------



## swoozle (Nov 13, 2011)

This seems like a more appropriate place to carry on the BMS discussion that recently popped up on the 2012 Chevy Volt Battery thread (https://www.diyelectriccar.com/forums/showthread.php/2012-chevy-volt-battery-93101.html)


I popped the top off of one of the slaves. Do I have it correct that those are 47k ohm resistors?
There appears to be 2 per cell. Approximately. This is the #1 slave and serves 30 cells. There are 70 of those large resistors.

That's about 160 MICROamps per cell. Or 0.6 milliwatts. Are we sure these things aren't working virtually all the time?


----------



## swoozle (Nov 13, 2011)

I tried a quick and dirty experiment to see if I could initiate and capture cell balancing. 
tldr: Charging a module to just over 4.0V with one BICM and the BECM does not appear to initiate balancing.

The setup:
One 12-cell battery module. I dumped about 1.5 Ah into the first cell to push the voltage up about 0.03 V compared to the other cells in the module. I wanted to make sure that it was beyond whatever balancing threshold exists in the Volt firmware. 

I connected the BECM to one BICM and of course the battery module and monitored the BECM/BICM CAN traffic. I have the CAN capture if anyone wants a copy, but it is very uninteresting.

The starting cell-level charge was about 3.865V.
I charged the module at about 4 amps until #1 cell was ~4.025V and all other cells in the module were just over 4.000V. I had to stop as I ran out of time but it seems like if it was going to start balancing, it would have by that point.
I can continue to charge higher if you think it might be worthwhile.

During the charge there was no notable change in CAN traffic and no obvious change in temp of the balancing resistors (by IR thermometer). If I go further I'm going to scrape off some of the conformal coating so I can check for voltage across the bleed resistors.

PS: The threshold for balancing must be a LOT lower than .03V. At 160 microamps (see previous post) it would take over 9000 hours to bring that cell back down.


----------



## notAhoser (Mar 28, 2017)

swoozle said:


> I tried a quick and dirty experiment to see if I could initiate and capture cell balancing.
> tldr: Charging a module to just over 4.0V with one BICM and the BECM does not appear to initiate balancing.
> 
> The setup:
> ...



I don't have the exact numbers in front of me, but the Volt charges up to 4.120 iirc. It's higher than you are going, so I'd go up near there and see what it does. I have a log somewhere that shows the cells topping off. I think I actually posted them on this thread.


----------



## swoozle (Nov 13, 2011)

notAhoser said:


> I don't have the exact numbers in front of me, but the Volt charges up to 4.120 iirc. It's higher than you are going, so I'd go up near there and see what it does. I have a log somewhere that shows the cells topping off. I think I actually posted them on this thread.


Ah, I was wondering how high the Volt went. That's higher than I thought. I'll take this little experiment further then.

Thanks!


----------



## lobrien (Aug 4, 2014)

notAhoser said:


> This is from a 2014 Volt.
> 
> 
> I gave up on using the factory electronics when I figured out that my 48v reconfiguration wasn't compatible with the OEM electronics...


What about the OEM slave boards disallows the use of a 48V pack? Since that is my intention once we can get the BMS data refined.


----------



## notAhoser (Mar 28, 2017)

lobrien said:


> What about the OEM slave boards disallows the use of a 48V pack? Since that is my intention once we can get the BMS data refined.



The BMS modules will discharge the cells on the ends of the packs in the middle of the original chain. That's just with the BMS modules plugged into the packs and nothing else even connected together. Interestingly, the end modules do not have this problem. There might be some crafty way to modify the BMSes, but I didn't give that a serious look.


----------



## lobrien (Aug 4, 2014)

notAhoser said:


> The BMS modules will discharge the cells on the ends of the packs in the middle of the original chain. That's just with the BMS modules plugged into the packs and nothing else even connected together. Interestingly, the end modules do not have this problem. There might be some crafty way to modify the BMSes, but I didn't give that a serious look.


So are you saying that even without active comms and power on the slave bus the module boards (just the orange HV connectors hooked to the boards) will shunt current from the outer most cells in a module to the inner ones? If so that is very problematic and might explain a 48V partial pack failure I had where modules on the end puffed up due to apparent over discharge, despite all the limits being properly set on the inverter and charge controller.


----------



## notAhoser (Mar 28, 2017)

lobrien said:


> So are you saying that even without active comms and power on the slave bus the module boards (just the orange HV connectors hooked to the boards) will shunt current from the outer most cells in a module to the inner ones? If so that is very problematic and might explain a 48V partial pack failure I had where modules on the end puffed up due to apparent over discharge, despite all the limits being properly set on the inverter and charge controller.


 YES, 100% absolutely. I caught this on the workbench before I installed my pack (I used the whole pack rewired for 48v). Plug the BICM for a pack into its pack and just let it sit for a couple days and then check the cell voltages. You'll find the cells at the end of the pack start slowly going down and it will actually spread inward at some point.


I have to add that if you do this experiment with the 2 packs that live at either end of the original "chain" it won't happen. Weird but true.


----------



## swoozle (Nov 13, 2011)

notAhoser said:


> YES, 100% absolutely. I caught this on the workbench before I installed my pack (I used the whole pack rewired for 48v). Plug the BICM for a pack into its pack and just let it sit for a couple days and then check the cell voltages. You'll find the cells at the end of the pack start slowly going down and it will actually spread inward at some point.
> 
> 
> I have to add that if you do this experiment with the 2 packs that live at either end of the original "chain" it won't happen. Weird but true.


I had a similar experience. My pack is a whole volt pack minus a 12-cell module (split in two, so it's actually 2 parallel 42 volt packs). I had the full BMS connected with one middle slave battery input not filled.
After 3 or so weeks I discovered the first 3 cells (3??) from the one 12 cell module on that slave were quite low in voltage. I'm lucky I caught it in time to avoid cell damage.

After some reconfiguring I discovered that this only happens if a slave is not fully populated with battery inputs. So presumably a 24 cell pack with one middle BMS slave would work just fine. 

What I was tempted to try but never got around to was to see what would happen if you fed the cell taps from one 12-cell module into both inputs. I suspect it would work.


----------



## notAhoser (Mar 28, 2017)

swoozle said:


> After some reconfiguring I discovered that this only happens if a slave is not fully populated with battery inputs. So presumably a 24 cell pack with one middle BMS slave would work just fine.
> 
> What I was tempted to try but never got around to was to see what would happen if you fed the cell taps from one 12-cell module into both inputs. I suspect it would work.



I had tried this with one middle pack on the bench, then after I installed everything (it's in my RV) I put all of the BICMs in place and plugged into the battery and various combinations with the BECM as well. No difference, cells at the ends of the middle packs went down no matter what I did.


----------



## swoozle (Nov 13, 2011)

swoozle said:


> Ah, I was wondering how high the Volt went. That's higher than I thought. I'll take this little experiment further then.
> 
> Thanks!


Well, that didn't do anything interesting. 

To recap, one BICM with one 12-cell module connected to the BECM, monitoring CAN and any other indications of balancing.
Cell one is ~0.03V higher than the rest.

I charged until the bulk of the cells were over 4.11V and the outlier was hitting 4.14.

No unusual CAN traffic and no voltage measured across the bleed resistors.

For the next step I'll piece back together the full pack I have including all BICMs and sub in this one highly-charged module. If that doesn't make the BECM throw a fit then that's as far as I can go without more clues.


I think I read somewhere the VICM was involved in balancing but it wasn't clear that it was more than a guess. Maybe the BECM gets data from the VICM that is part of the algorithm for when to initiate balancing. As in: the car is charging now, balance if any cells need it.


----------



## Duncan (Dec 8, 2008)

Hi Guys 
I hope that you can get this fixed but at the moment my decision to go without a BMS really does look like the sensible one


----------



## swoozle (Nov 13, 2011)

swoozle said:


> Well, that didn't do anything interesting.
> 
> ...
> I think I read somewhere the VICM was involved in balancing but it wasn't clear that it was more than a guess. Maybe the BECM gets data from the VICM that is part of the algorithm for when to initiate balancing. As in: the car is charging now, balance if any cells need it.


Arg.

...General Motors says a previous software update to the Vehicle Interface Control Module (VICM) to improve the car may have disabled the cell balancing function causing a low-voltage condition...

https://electriccarsreport.com/2018...ar-2013-chevy-volts-for-battery-software-bug/


----------



## notAhoser (Mar 28, 2017)

Well mine is a 2014. I think it's a hardware design thing. It might be worthwhile to study one of the other passive balancing IC's out there so see how they act. Maybe it's as simple as cutting a trace to get the discharge thing to stop. As far as balancing goes, I think I read somewhere that it's not triggered by the BICMs or the BECM. These modules calculate the cell resistance and sends it out of the pack and takes direction back from outside the pack. I gave up on it. Disconnecting all the BICMs in my application has worked out perfectly. I don't have super high peak loads like an electric car usually - highest load is starting an a/c unit on a 4400w inverter.


----------



## swoozle (Nov 13, 2011)

This is interesting. 
https://gsi.ext.gm.com/gmspo/mode6/pdf/2012/12OBDG01A HYBRID Diagnostics.pdf

I'm not sure if this is saying that the threshold is 41mV (for instance) for balancing or just for throwing a fault code. 41mV seems like A LOT. It took ~1.5Ah to raise a cell less than 30mV.

It does say that this is the BECM section, the Monitoring Strategy" is "Cell Balance Switch Output" and that the fault code clears when the voltage goes below the threshold. (EDIT: woops, it says "BECM or VITM")

Promising.


----------



## bilbo (Oct 31, 2017)

I believe the HPCM2 commands the cell balancing as seen in this extract from the Service Manual:
To maintain a similar state of charge on the cell groups, the hybrid/EV powertrain control module 2 (HPCM2) looks at the cell group voltages and determines which cell groups need energy removed in order to maintain the battery groups at a similar state of charge. This is known as cell balancing. There is a resistor wired in parallel with the cell group and a transistor switch in series with the resistor internal to the drive motor battery high-voltage interface control module. The hybrid/EV powertrain control module 2 sends a command to the battery energy control module (BECM) to begin cell balancing through the drive motor battery high-voltage interface control modules (VICMs).​Thus HPCM2 -> BECM -> VICMs for balancing.

Could someone post or PM me a 5 or 10 second canbus recording of the gen1 battery only (i.e. BECM ouput). I have many canbus recordings from the passenger side DLC (HV serial bus) but have not been able to isolate the HPCM2 balancing commands. I could then at least eliminate the canbus msgs output by the battery. Once the HPCM2 commands are known it should be fairly straight forward to figure out the commands the BECM sends to the VICM.


----------



## notAhoser (Mar 28, 2017)

I posted the logs on this thread somewhere. They are large comprehensive logs of the finishing of a charge cycle and also a short drive.


It's fuzzy now, but yes the HPCM2 seems to be the balancing gatekeeper. That seems like a weird way to do it, 3 modules away from the cells, but who knows. I know that P1E92 is a DTC code for a balancing error, and there is actually a direct (5vdc?) line out of the modules that will trigger a code outside of CAN comms.


----------



## swoozle (Nov 13, 2011)

It'd be nice if they (GM) stuck with one terminology. For those following along, VITM and HPC2(HPCM2) are the same thing.


----------



## swoozle (Nov 13, 2011)

bilbo said:


> Could someone post or PM me a 5 or 10 second canbus recording of the gen1 battery only (i.e. BECM ouput). I have many canbus recordings from the passenger side DLC (HV serial bus) but have not been able to isolate the HPCM2 balancing commands. I could then at least eliminate the canbus msgs output by the battery. Once the HPCM2 commands are known it should be fairly straight forward to figure out the commands the BECM sends to the VICM.


I'll see if I can grab more, but take a look at this and see if it helps. This should be BECM output CAN traffic from a pack that was not in a car. I say should be as that's what it looks like but it's been a few months since I grabbed it.


----------



## arber333 (Dec 13, 2010)

bilbo said:


> I believe the HPCM2 commands the cell balancing as seen in this extract from the Service Manual:
> To maintain a similar state of charge on the cell groups, the hybrid/EV powertrain control module 2 (HPCM2) looks at the cell group voltages and determines which cell groups need energy removed in order to maintain the battery groups at a similar state of charge. This is known as cell balancing. There is a resistor wired in parallel with the cell group and a transistor switch in series with the resistor internal to the drive motor battery high-voltage interface control module. The hybrid/EV powertrain control module 2 sends a command to the battery energy control module (BECM) to begin cell balancing through the drive motor battery high-voltage interface control modules (VICMs).​Thus HPCM2 -> BECM -> VICMs for balancing.
> 
> Could someone post or PM me a 5 or 10 second canbus recording of the gen1 battery only (i.e. BECM ouput). I have many canbus recordings from the passenger side DLC (HV serial bus) but have not been able to isolate the HPCM2 balancing commands. I could then at least eliminate the canbus msgs output by the battery. Once the HPCM2 commands are known it should be fairly straight forward to figure out the commands the BECM sends to the VICM.


I have prepared Ampera DC inverter cable with Y output 16mm2 wire so i could direct access the battery for fast charging or adding range extender pack.
I still need to develop charge pump for bidirectional charging, but i already have 10kW charger to at least try to charge. 
I just have to convince my wife to lend me her car to experiment on. 

What i am offering is to charge the car over the original charger limit and observe cabin CAN traffic. I will not be able to access battery internal CAN at that time but i have another battery in my garage with BECM that i can try all commands on. Interested?


----------



## swoozle (Nov 13, 2011)

swoozle said:


> I'll see if I can grab more, but take a look at this and see if it helps. This should be BECM output CAN traffic from a pack that was not in a car. I say should be as that's what it looks like but it's been a few months since I grabbed it.


Woops, that wasn't the right thing. Here's the right thing:

This is a BECM CAN (one of the external CAN buses, not BECM/BICM bus) capture of a full pack with all BICMs. I'm not sure what to call this bus. It's listed on the BECM connector pinout as "data communication" and is not either of the "High Speed GMLAN Serial Data" buses on that same connector. This is approx 10 seconds from BECM power on to BECM power off.

All cells are sitting at ~3.91 EXCEPT:
The negative-end 12-cell module (on BICM 4) is significantly higher. Cell 1 is at ~4.12 and the remainder are ~4.09


----------



## bilbo (Oct 31, 2017)

Thanks Swoozle, that file does help narrow down the potential balancing labels. 

I see the following canbus msgs on the passenger side OBD connector on the gen 1 (with my current understanding of the msg source and intent):

MSG SRC Notes
--------------------------
200 BECM Status - Cell Volts 1
202 BECM Status - Cell Volts 2
204 BECM Status - Cell Volts 3
206 BECM Status - Cell Volts 4
208 BECM ?? - Cell Volts TBD (follows in sequence with 200-206)
20a ?? ?? - maps perfectly to charging
20c BECM ?? - Spikes Hi at start and end of charging
20e ?? ?? - Counter with values of 18 28 38 
210 BECM Status - Pack Volt & Amps
212 CHRGR Status - HV and LV rails: V and I
260 BECM ?? - TBD
264 HPCM2 Status - Mins Since Charged
266 CHRGR Status - TBD
268 CHRGR Status - TBD
270 BECM ?? - TBD
272 BECM ?? - TBD
274 BECM ?? - TBD
300 ?? ?? - TBD
302 BECM Status - Module Temps
303 BECM ?? - TBD
304 HPCM2 CMD - V and I Limts to the charger
308 HPCM2 Status - CHRG AC Volts
30a HPCM2 CMD - Enable HV and/or LV charging
30e ?? ?? - TBD
400 ?? ?? - TBD
460 BECM Status - Coolant Temp
500 BECM ?? - TBD

The likely candidates for the HPCM2 commanding the BECM to balance appear to be msgs 20A, 20E, 300, 30E and 400.

Unfortunately I will not have time to spend on this project until June. I will look at this in more detail at then. Hopefully others can fill in some blanks in the meantime.


----------



## swoozle (Nov 13, 2011)

bilbo said:


> Thanks Swoozle, that file does help narrow down the potential balancing labels.
> 
> I see the following canbus msgs on the passenger side OBD connector on the gen 1 (with my current understanding of the msg source and intent):
> 
> ...


I did some more experimenting with no notable results.

I took the full Volt pack and full BMS setup (BECM and all BICMs), again with the bulk of the pack at 3.9V, first 12-cell module at about 4.09 and the first cell of that module at 4.111. In other words, wildly out of balance. 
This time I also added leads to the balance resistors for Cell 1 and monitored them for any applied voltage (balancing behavior).

I listened to both BECM-BICM traffic and the external BECM bus.

-----
I looked at OPs logs using your short list of candidate frame IDs, Bilbo, and narrowed it down to 20A and 30E. 
The other IDs:
20E cycles between 3 values and otherwise never changes.
300 appears to be something like the inverter temp. It increased while notahoser was driving and then tapered to low values when he stopped and charged.
And 400 was always 00.
Bilbo, do your captures show similar behavior?

20A and 30E seem to be some indication of charging/current flow status. 
30E is 0x00 until charging is initiated, goes to 0x02 then 0x03 and remains 0x03 while charging. On charging completion it drops to 0x01 and then back to 0x00.

20A shows some activity during driving (0x40, 0x48, 0x50) and then shows 0x01 -> 0x02 during charging.
----

So I tried injecting various combinations of the known 20A and 30E values on to the external BECM bus and looked for any response on either the external BECM bus or the BECM-BICM bus.

Nothing. No response on either bus.
And no indication of balancing from the balance resistors.

Admittedly this was a simplistic attempt to initiate balancing, but it was worth a shot. Obviously the system is at least a little more complex.

I'm out of ideas for other things to try. Does anyone have suggestions?


----------



## swoozle (Nov 13, 2011)

swoozle said:


> ...
> This time I also added leads to the balance resistors for Cell 1 and monitored them for any applied voltage (balancing behavior).


I'm pretty sure I misidentified the balance resistors and need to re-do this.
I'm not an electrical engineer. Can someone review this and tell me if you agree?

At first I assumed the bleed resistors were the large resistors marked 473 to the left. But those are 47k ohm and there are 2 in series. For bleed current that would be about 4 MICROamps. Way to little to do anything significant. Plus those are huge resistors, 2 or 3 watt. Way overkill.

The smaller "150" resistors to the right are also on each cell trace and make a lot more sense. Those are 15 ohm in series, giving about 130 milliamps bleed current, or say a half-watt. Whaddya know, those are half-watt sized resistors. 
Following that trace further, those resistors feed into the collector of a transistor. 
Bingo?


----------

