Idle Stability map?
Thread Starter
Joined: Jan 2004
Posts: 11,406
Likes: 78
From: Northwest
Idle Stability map?
So in the AP software for an STI (yes I realise this is the X forum) there is an additional idle control table called the "Idle Stability". It is a 3D table with MAP as an axis and then idle speed error. It stretches from a negative value from target evenly out to an overshoot value. The 3rd axis is some sort of control unit, lets say stepper control since thats easy or PWM more likely.
I hadn't ever played with it before today, but I had an STi with a 10lb flywheel that would not idle after a rev. Basically this works more or less like a mechanical throttle stop and responds very fast.
Whole point of this thread is the idle control is not well mapped and while the idle adder vs coolant help things, it is not the end all be all for idle control. Especially when large cams are employed it can be very tricky still to get them stable. So have any of the disassemblers who have been looking into advanced idle control come across a weird 3d idle map?
Aaron
I hadn't ever played with it before today, but I had an STi with a 10lb flywheel that would not idle after a rev. Basically this works more or less like a mechanical throttle stop and responds very fast.
Whole point of this thread is the idle control is not well mapped and while the idle adder vs coolant help things, it is not the end all be all for idle control. Especially when large cams are employed it can be very tricky still to get them stable. So have any of the disassemblers who have been looking into advanced idle control come across a weird 3d idle map?
Aaron
That set of tables in the Subaru software is VERY nice. Especially when you get a car with cams, light flywheels, port work....I just wish it was real time.
I assume this is for the evo x you are referring. I don't know if those tables exist, but there is a work around that is effective. I have found that when you raise all of the idle tables up, both the temp based and the target ones (all 28 or 30 of them), Idle will generally stabilize, even with cams, high compression and port work. Generally I don't raise any of the values that are over 1000 rpm.
What will throw a wrench in all of this is the sensitivity the car has to air flow disturbances accross the maf, particularily if not running a heat shield or air deflector of some type to block air from the secondary cooling fan. You can see the effect of unstable air flow at low maf volts simply by opening the hood while the car sits on the dyno with the big fans running. Add an oversized maf housing, (3.5"+) and it can get pretty unstable. Add big injectors it gets even worse. The effect of all of this is the car adding or pulling to much fuel at idle or just off idle in closed loop.
You can tune this out. Once you have recorded your stabilized load at idle with both the a/c on and a/c off (the a/c forces the secondary fan on), you can then narrow the open closed loop load points down to stop the car from adding or pulling to much fuel. Because of how load is calculated, you can stabilize the idle in this fashion. This is very effective for getting big 2000cc injectors to idle nicely on gasoline. Basically what you are doing is forcing the car to go into open loop when it starts pulling or adding enough fuel to cause the idle rpm to drop. The car will then momentarily go into open loop, fueling and rpm will stabilize, and the car will go back into closed loop. The car will not stay in open loop long enough to set a cel once this is set up correctly. It is kind of a pain to do this, but it works. An added benefit is that this also interupts the cars learning and reduces the likelyhood of getting overly negative fuel trims on very large injectors in the idle ranges because the car doesn't stay in closed loop long enough to applly learning.
I assume this is for the evo x you are referring. I don't know if those tables exist, but there is a work around that is effective. I have found that when you raise all of the idle tables up, both the temp based and the target ones (all 28 or 30 of them), Idle will generally stabilize, even with cams, high compression and port work. Generally I don't raise any of the values that are over 1000 rpm.
What will throw a wrench in all of this is the sensitivity the car has to air flow disturbances accross the maf, particularily if not running a heat shield or air deflector of some type to block air from the secondary cooling fan. You can see the effect of unstable air flow at low maf volts simply by opening the hood while the car sits on the dyno with the big fans running. Add an oversized maf housing, (3.5"+) and it can get pretty unstable. Add big injectors it gets even worse. The effect of all of this is the car adding or pulling to much fuel at idle or just off idle in closed loop.
You can tune this out. Once you have recorded your stabilized load at idle with both the a/c on and a/c off (the a/c forces the secondary fan on), you can then narrow the open closed loop load points down to stop the car from adding or pulling to much fuel. Because of how load is calculated, you can stabilize the idle in this fashion. This is very effective for getting big 2000cc injectors to idle nicely on gasoline. Basically what you are doing is forcing the car to go into open loop when it starts pulling or adding enough fuel to cause the idle rpm to drop. The car will then momentarily go into open loop, fueling and rpm will stabilize, and the car will go back into closed loop. The car will not stay in open loop long enough to set a cel once this is set up correctly. It is kind of a pain to do this, but it works. An added benefit is that this also interupts the cars learning and reduces the likelyhood of getting overly negative fuel trims on very large injectors in the idle ranges because the car doesn't stay in closed loop long enough to applly learning.
Aaron, can you post up a picture of the STi 3D map.
Thanks to Javier (lodifreefly) on EvoM, I've got over three hundred raw tables defined in my EcuFlash... basically, nearly every 2D and 3D table there is. That was from an XML that was auto-generated by his ROM-bot.
Instead of crawling around in the code for an evening or three, let's see if we can just work backwards from something that closely resembles it in the endless fields of "unknown" tables in front of me...
Rich
PS. This isn't secret squirrel stuff. Anyone with a propeller on their hat can access Javier's source, build and run the tool, etc. It sniffs out tables and scales for our browsing pleasure. As Beeble commented in the linked thread, "God mode: enabled".
Thanks to Javier (lodifreefly) on EvoM, I've got over three hundred raw tables defined in my EcuFlash... basically, nearly every 2D and 3D table there is. That was from an XML that was auto-generated by his ROM-bot.
Instead of crawling around in the code for an evening or three, let's see if we can just work backwards from something that closely resembles it in the endless fields of "unknown" tables in front of me...
Rich
PS. This isn't secret squirrel stuff. Anyone with a propeller on their hat can access Javier's source, build and run the tool, etc. It sniffs out tables and scales for our browsing pleasure. As Beeble commented in the linked thread, "God mode: enabled".
Thread Starter
Joined: Jan 2004
Posts: 11,406
Likes: 78
From: Northwest
Thats how I have been doing it (the Hard Way) but was hoping there was some sort of an idle error correction map. I would imagine there is, just not like this, perhaps 2D?
Trending Topics
On certain cars I would KILL for a biss screw,,,lol
On big cam/aftermarket springs keep an eye on the ex mivec...
Otherwise in for more idle definitions and PAYPAL READY!! Hint hint hint!!
On big cam/aftermarket springs keep an eye on the ex mivec...
Otherwise in for more idle definitions and PAYPAL READY!! Hint hint hint!!
Try the load tables in my earlier post for stabilizign big injector/cam cars at idle. It takes a bit of fidling, but it does work.
I have a timing based stability map.
2d though, so purely under/overshoot and how much timing to add or subtract in differing amounts...
This is for 53040010 - I'm sure you chaps can work it out from there
2d though, so purely under/overshoot and how much timing to add or subtract in differing amounts...
This is for 53040010 - I'm sure you chaps can work it out from there

Code:
<scaling name="Idle RPM Offset" units="RPM diff" toexpr="(x-32768)*1000/256" frexpr="(x*256/1000)+32768" format="%.2f" min="0" max="100" inc="0.5" storagetype="uint16" endian="big"/> <table name="Idle Timing Compensation 1.1" category="Idle" address="5f59e" type="2D" swapxy="false" scaling="IgnitionCompensation"> <table name="RPM" address="626e4" type="Y Axis" elements="29" scaling="Idle RPM Offset"/> </table> <table name="Idle Timing Compensation 1.2" category="Idle" address="5f5c0" type="2D" swapxy="false" scaling="IgnitionCompensation"> <table name="RPM" address="626e4" type="Y Axis" elements="29" scaling="Idle RPM Offset"/> </table> <table name="Idle Timing Compensation 2.1" category="Idle" address="5f55a" type="2D" swapxy="false" scaling="IgnitionCompensation"> <table name="RPM" address="626e4" type="Y Axis" elements="29" scaling="Idle RPM Offset"/> </table> <table name="Idle Timing Compensation 2.2" category="Idle" address="5f57c" type="2D" swapxy="false" scaling="IgnitionCompensation"> <table name="RPM" address="626e4" type="Y Axis" elements="29" scaling="Idle RPM Offset"/> </table>
Last edited by tephra; Sep 19, 2012 at 04:19 PM.
Is the RPM Diff axis based on Current RPM minus Target RPM or the other way round?
I have a timing based stability map.
2d though, so purely under/overshoot and how much timing to add or subtract in differing amounts...
This is for 53040010 - I'm sure you chaps can work it out from there
2d though, so purely under/overshoot and how much timing to add or subtract in differing amounts...
This is for 53040010 - I'm sure you chaps can work it out from there

Code:
<scaling name="Idle RPM Offset" units="RPM diff" toexpr="(x-32768)*1000/256" frexpr="(x*256/1000)+32768" format="%.2f" min="0" max="100" inc="0.5" storagetype="uint16" endian="big"/> <table name="Idle Timing Compensation" category="Idle" address="5f59e" type="2D" swapxy="false" scaling="IgnitionCompensation"> <table name="RPM" address="626e4" type="Y Axis" elements="29" scaling="Idle RPM Offset"/> </table>







