Extending the high rpm dwell limits of the VX / VY flash PCM
Posted: Sat Jul 06, 2024 12:14 am
Hey All,
For the last week or so I've been playing with the flash VX / VY PCM on bench, I've managed to get a PCM running on bench thanks to some help from some of the guys here (pman92). I've been doing some testing with a scope to see what the capabilities are of the factory ecu and see how they handle high rpm.
I've managed to discover that at around 6600 RPM you would lose control of spark quite badly with the factory code, I've been experimenting with a patch and have some interesting results, yes you keep "better" spark control up to 8000 RPM however I feel the dwell might be too small the and the burn too big in the mid range. With some more testing maybe this can be rectified, will just have to keep trying.
First lets show what happens at 6600 RPM in the factory code: As you can see every 2nd / 3rd reference there is a really long burn time.
From my understanding the ECU uses a hard coded min burn and min dwell time, basically if the min dwell + min burn =< calculated 3x ref period then you end up losing control of the spark, I'm not 100% sure how it works but that seems to be how it is from my testing, 6600 puts it just under the limit so it's possible the references that have long burn time are the frequency from the Arduino I'm using to simulate the 3x ref slightly changing causing the overall sum to overflow and thus the issue you can see in the picture.
I've done the math and patched these values and ended up being able to take the ecu to 8000 RPM with "better" results, however as you can see there is the unwanted effect of less dwell overall and more burn overall, it's possible with a lot of trial and error (or someone who understands exactly how this works) that you could offset these issues.
Here's the data from my testing: The (burn error) column just shows the error on only some references at "6600" RPM.
If anyone has anything to add, please do, also worth noting that the PCM is in EST not bypass and I haven't simulated TPS, MAF etc so the PCM is running at 10 G/S and 20 MG/S so it's quite low and not under any "load", however I can't see anything directly related to the load dynamically besides there's a check if above a certain MG/S the ECU seems to set dwell to something directly (max / min, unsure). It's possible the EST refresh logic might need to be coded to be more "dynamic", that's another possible solution to the issue.
For the last week or so I've been playing with the flash VX / VY PCM on bench, I've managed to get a PCM running on bench thanks to some help from some of the guys here (pman92). I've been doing some testing with a scope to see what the capabilities are of the factory ecu and see how they handle high rpm.
I've managed to discover that at around 6600 RPM you would lose control of spark quite badly with the factory code, I've been experimenting with a patch and have some interesting results, yes you keep "better" spark control up to 8000 RPM however I feel the dwell might be too small the and the burn too big in the mid range. With some more testing maybe this can be rectified, will just have to keep trying.
First lets show what happens at 6600 RPM in the factory code: As you can see every 2nd / 3rd reference there is a really long burn time.
From my understanding the ECU uses a hard coded min burn and min dwell time, basically if the min dwell + min burn =< calculated 3x ref period then you end up losing control of the spark, I'm not 100% sure how it works but that seems to be how it is from my testing, 6600 puts it just under the limit so it's possible the references that have long burn time are the frequency from the Arduino I'm using to simulate the 3x ref slightly changing causing the overall sum to overflow and thus the issue you can see in the picture.
I've done the math and patched these values and ended up being able to take the ecu to 8000 RPM with "better" results, however as you can see there is the unwanted effect of less dwell overall and more burn overall, it's possible with a lot of trial and error (or someone who understands exactly how this works) that you could offset these issues.
Here's the data from my testing: The (burn error) column just shows the error on only some references at "6600" RPM.
If anyone has anything to add, please do, also worth noting that the PCM is in EST not bypass and I haven't simulated TPS, MAF etc so the PCM is running at 10 G/S and 20 MG/S so it's quite low and not under any "load", however I can't see anything directly related to the load dynamically besides there's a check if above a certain MG/S the ECU seems to set dwell to something directly (max / min, unsure). It's possible the EST refresh logic might need to be coded to be more "dynamic", that's another possible solution to the issue.