Found - LT Fuel Trim Control !!!
Found - LT Fuel Trim Control !!!
I know a number of people have been looking for the control over when things switch from Low to Mid to High. Well..... I found it today!
I had a good play with it, and by adjusting the map I can make my car use either the Low, Mid, or High Long Term Trim at idle.
Hands up who wants it. And dont forget to put some beg into it....
The maps are based on MAF Hz, and there is another map in RPM but the numbers dont make sense just yet. A couple of 1D's are in there too but I have not dug deep enough yet.
Each rom seems to have quite different Hz readings for the switch-overs. Some cars will never use the High trim, while others will quite easily.
I had a good play with it, and by adjusting the map I can make my car use either the Low, Mid, or High Long Term Trim at idle.
Hands up who wants it. And dont forget to put some beg into it....

The maps are based on MAF Hz, and there is another map in RPM but the numbers dont make sense just yet. A couple of 1D's are in there too but I have not dug deep enough yet.
Each rom seems to have quite different Hz readings for the switch-overs. Some cars will never use the High trim, while others will quite easily.
Last edited by Mattjin; May 11, 2009 at 03:20 AM.
First up, you need the correct scale for reading AirFlow Hz. Best to add to your base file, but your own rom xml is OK.
<scaling name="LT Trim Hz" units="Hz" toexpr="x*6.25" frexpr="x/6.25" format="%.2f" min="0" max="1593.75" inc="6.25" storagetype="uint8" endian="big"/>
80700010:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="3a19" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
88590015:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="3021" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
94170015:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="35e5" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
98640014:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="37e5" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
88570008:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="2d21" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
<scaling name="LT Trim Hz" units="Hz" toexpr="x*6.25" frexpr="x/6.25" format="%.2f" min="0" max="1593.75" inc="6.25" storagetype="uint8" endian="big"/>
80700010:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="3a19" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
88590015:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="3021" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
94170015:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="35e5" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
98640014:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="37e5" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
88570008:
<table name="Closed Loop - LT Trim Control" category="Fuel" address="2d21" type="2D" level="2" scaling="LT Trim Hz">
<table name="Conditions" type="Static Y Axis" elements="4">
<data>Low -> Mid</data>
<data>Mid -> Low</data>
<data>Mid -> High</data>
<data>High -> Mid</data>
</table>
</table>
Last edited by Mattjin; May 12, 2009 at 08:26 PM.
Talk about being difficult to find! When you see where it was hiding in the rom you wont believe it. It is the first 4 numbers immediately after the last main 3D fuel map, and it references directly MAF Hz.
There is a similar RPM setting, but I have not figured out its exact purpose yet. There is what looks like an RPM limit adjustment where the LT trim will disable (my default was 5000rpm) and there are also battery voltage limits (default of 8V and 18V) where you must be within for the trim to work. Easy enough to do.
There is a similar RPM setting, but I have not figured out its exact purpose yet. There is what looks like an RPM limit adjustment where the LT trim will disable (my default was 5000rpm) and there are also battery voltage limits (default of 8V and 18V) where you must be within for the trim to work. Easy enough to do.
Trending Topics
I truely appreciate your efforts. I hope that anyone who used these will understand the affects. The adjustments will be critical to allowing the LTFTs to adjust based on the MAF Hz reading.
It works a bit like this....
At 44Hz (in my case) the MAF will switch to the LTFT low. From that point if the car is left to idle, the ECU will adjust the LTFT Low to allow for optimum AFR for idle.
A problem arises when you install hard pipes, cams, and sometimes even a turbo that the idle RPM has to be raised to allow for "best idle". Raising the idle RPM creates an issue where the MAF Hz value will not be low enough to allow the LTFT low to kick in and adjust. Since the switching points are based on load (in Hz), the RPM increase also increases the load (in Hz) and the end result is no LTFT low adjustment and cruddy idle.
By changing the switching values to something closer to where your car likes to idle will allow for the ECU to adjust the LTFT Low and, over time, idle should improve.
This is a HUGE find for those of us that want to keep the MAF (yes we have our feeble reasons).
I will load these and test my results with my HKS pipes, Green turbo, and Revolver cams. Truse me when I say this is not the easiest combo to get to idle correctly.
Thanks Matt for your hard and dilligent work. I knew you could do it ! !
Paul
It works a bit like this....
At 44Hz (in my case) the MAF will switch to the LTFT low. From that point if the car is left to idle, the ECU will adjust the LTFT Low to allow for optimum AFR for idle.
A problem arises when you install hard pipes, cams, and sometimes even a turbo that the idle RPM has to be raised to allow for "best idle". Raising the idle RPM creates an issue where the MAF Hz value will not be low enough to allow the LTFT low to kick in and adjust. Since the switching points are based on load (in Hz), the RPM increase also increases the load (in Hz) and the end result is no LTFT low adjustment and cruddy idle.
By changing the switching values to something closer to where your car likes to idle will allow for the ECU to adjust the LTFT Low and, over time, idle should improve.
This is a HUGE find for those of us that want to keep the MAF (yes we have our feeble reasons).
I will load these and test my results with my HKS pipes, Green turbo, and Revolver cams. Truse me when I say this is not the easiest combo to get to idle correctly.
Thanks Matt for your hard and dilligent work. I knew you could do it ! !
Paul
OK so loading this was not as easy as it first looked.
There was an issue with my scalings. It appears that there is 2 different scalings used for MAF calculations...
<scaling name="Airflow Hz" units="Hz" toexpr="x*6.25" frexpr="x/6.25" format="%.2f" min="0" max="1593.75" inc="6.25" storagetype="uint8" endian="big"/>
<scaling name="AirFlowHZ" units="units" toexpr="x/10.24" frexpr="x*10.24" format="%.0f" min="0" max="6400" inc="1" storagetype="uint16" endian="big"/>
Took me a while to get the MAF Scaling table, MAF Adjustment table, and the new LTFT Table to all work.
If anyone rescaled their MAF tables to read in Hz you may find difficulty in getting everything to look as it is supposed to.
The LTFT Table will nee the "Airflow Hz" while the MAF Scaling and Adjustment tables will need the "AirflowHz" scaling. The difference in the name will result in the tables working correctly. Make sure the space is between Ariflow and Hz in the scaling for the net LTFT table.
UGH That was confusing. Hope it make sense.
There was an issue with my scalings. It appears that there is 2 different scalings used for MAF calculations...
<scaling name="Airflow Hz" units="Hz" toexpr="x*6.25" frexpr="x/6.25" format="%.2f" min="0" max="1593.75" inc="6.25" storagetype="uint8" endian="big"/>
<scaling name="AirFlowHZ" units="units" toexpr="x/10.24" frexpr="x*10.24" format="%.0f" min="0" max="6400" inc="1" storagetype="uint16" endian="big"/>
Took me a while to get the MAF Scaling table, MAF Adjustment table, and the new LTFT Table to all work.
If anyone rescaled their MAF tables to read in Hz you may find difficulty in getting everything to look as it is supposed to.
The LTFT Table will nee the "Airflow Hz" while the MAF Scaling and Adjustment tables will need the "AirflowHz" scaling. The difference in the name will result in the tables working correctly. Make sure the space is between Ariflow and Hz in the scaling for the net LTFT table.
UGH That was confusing. Hope it make sense.
Last edited by Appauldd; May 11, 2009 at 08:23 AM. Reason: Found some errors in loading the table
Awesome! Nice find mattjin! Thank you for all of your hard work w/ disassembly/help/support.
I will give it a shot tonight, see how it goes for me...
Appauldd, I see you have been busy too, thank you for all of your help/support/disassembly as well, as I most certainly would have run into that issue w/ the .xml
Appauldd, I see you have been busy too, thank you for all of your help/support/disassembly as well, as I most certainly would have run into that issue w/ the .xml
I ran into the Scale naming problem on some of the roms after I already named it. It only showed up on 1 or 2 xml's where there was already a scale named "Airflow Hz" which confused me as to why it did not display the map correctly. You can always rename it and just make sure you pick the new name in your map.
The scale was created to use a 0-1600 Hz for 0-255, where it actually caps at 1593.75, with the divider being 6.25Hz (min adjustment). This reflected the Evoscan formula. Again, someone may find a more accurate scale display formula but this seems to work well for now.
If you stil have issues with the trims I will post up the rpm map as well. The numbers look a little low and for my rom they default at: 1406,1344,1094,1031 rpm.
The scale was created to use a 0-1600 Hz for 0-255, where it actually caps at 1593.75, with the divider being 6.25Hz (min adjustment). This reflected the Evoscan formula. Again, someone may find a more accurate scale display formula but this seems to work well for now.
If you stil have issues with the trims I will post up the rpm map as well. The numbers look a little low and for my rom they default at: 1406,1344,1094,1031 rpm.
Last edited by Mattjin; May 11, 2009 at 02:37 PM.
Wouldn't 6.274 be *just* closer? Not to nit pick, I realize why you did 6.25 (1600/256) but 0 still being 0 and 255 representing 1600 would be 6.25 if I'm thinking straight (unlikely).
There really isn't a need to be that specific. The numbers used currently are more than enough, and easy to work with. Good eye though.


