Jump to content
LegacyGT.com

Tuning Engine Load Compensation


fahr_side

Recommended Posts

I'm going to put this here as I find there are a few people who want to perfect a tune they bought an OTS, e-tune or pro tune that perhaps didn't go the whole hog and deliver perfect driveability. Tuners are busy and time is money, so this is quite understandable. It takes time to dial in larger injectors perfectly and most owners don't want to pay for it.

 

Why would I do this?

 

If you've fitted larger injectors you may notice that your fuel trims (Long Term Fuel Trims or AFR Learning) bounce around a fair bit and may be able to feel surging or lurching or generally less than smooth response in closed loop. You may have fuel trims that are a bit staggered, like where A and C are positive values and B and D are negative values.

 

What are the underlying precepts?

 

These issues occur because fueling in Closed Loop is done in a pretty simple way, where the ECU watches the MAF signal and RPM to calculate load and RPM and then look up a value in a 3D table, apply corrections to that value, spray the fuel, then look at the AFR via the O2 sensor and make further corrections from there. You can probably imagine that different manifold pressures change VE (volumetric efficiency) to a high degree because of resonance in the intake manifold, intercooler etc. For example, the engine can be at the same rpm and MAFv but flow quite different amounts of air at (say) deep vacuum or slight boost because of the different charge density. Tweaking MAF scaling in the airflow ranges the correction is split into will not resolve these differences and it's easy to end up with a very jagged MAF curve, which is not the right way to fix this. These problems are magnified when larger injectors are fitted because the same small differences in IPW create much larger changes in AFR.

In each 32bit ROM there is at least one table that is used after looking up the base fuel requirement, called the Engine Load Compensation table. There may be one for cruise and one for non-cruise but in most ROMs they are the same anyway. It doesn't make much sense having a table for non-cruise when you'd normally be in OL (open loop) fueling if you're not cruising, so this was probably left for future development work. In most ROMs the table will be 14x11 cells and look like this:

http://i464.photobucket.com/albums/rr5/fahr_side/ELcomp1_zpsc1jvqqyg.png

You'll see the table is scaled by RPM and by MRP (Manifold Relative Pressure). You'll notice that in this ROM the RPM axis stops at 3k2rpm and MRP stops at 3.83psi. This is because beyond these ranges you're most likely to be in OL fueling and these corrections would not be applied to the final fuel base anyway.

 

So where do I start?

 

First off you want to be confident about your current MAF and injector scalings, plus injector latencies. If you're not, get those sorted first and then come back to this.

 

You do not need an aftermarket WBO2 setup to tune these tables, though since you have larger injectors you probably have one.

 

Next, set up a new profile in RR Logger to log just these parameters:

 

A/F Correction #1 (%)

A/F Learning #1 (%)

A/F Sensor #1 (AFR)

Engine Load (Direct)* (g/rev)

Engine Speed (rpm)

Manifold Relative Pressure (psi)

Mass Airflow (g/s)

Mass Airflow Sensor Voltage (V)

Throttle Opening Angle (%)

 

We are using the factory front O2 sensor data because that is what fueling is based on, and there are always small differences between sensor readings.

 

At CANbus speeds about 10 minutes of logging will fill up almost all the rows in a .csv file. You want to capture as broad a range as possible of OL driving, so that all conditions are represented. Cruise a gear lower than you normally would, to get data from higher RPM / lower MRP. Cruise up a hill in a gear higher than normal to get lower RPM / higher MRP data. Try not to waste space by idling for long, as all data from idle speed is rejected. Avoid rapid changes in throttle angle. Try to get data from as high in the load and rev ranges you can while staying in CL.

 

Go download this wonderful tool our benefactor Airboy made for us here: http://www.romraider.com/forum/viewtopic.php?p=53407&sid=67ed166d888c0539a98c501f8c95cabd#p53407

 

First, go to the 'ROM' worksheet and copy / paste your stock EL Comp table there. The values are not used for calculation at all, just the axes are grabbed to organize the correction values.

 

At the 'Input' worksheet you can import your first log file, select your parameters manually if 'Grab Headers' didn't work, and then 'Filter Data'. What this does is toss out all rows of data that are at idle speed or have large changes in throttle position where big corrections are inevitable. In the cells that are valid the short-term corrections and long-term trim values are added together to show how much total correction took place, and we can use that value to then adjust the compensation table to reduce both the correction and trim values in the next iteration of our tune.

 

I actually prefer working with revision 3 of this spreadsheet vs. the current R5, so I'll show you that.

http://i464.photobucket.com/albums/rr5/fahr_side/ELcomp2_zps9qqqnixn.png

So the output here shows you how much total correction had to be applied, cell by cell, in the effort to adjust AFR to stoich. The graph on the left will give you an idea of the average and most extreme corrections, and where you need to focus attention on.

At the right are is a table of numbers with the correction values arranged in MRP columns and RPM rows, like the table in the ROM. What you may notice is that the column values are changed. If you didn't put log data at (say) 3.87psi MRP in, you're not going to get correction data out. Many of us run greatly reduced CL-OL delay, or zero it altogether. Those with larger turbos will get into OL at much lower boost pressures because the switch is made according to load and RPM values, not MRP. The output is suggesting in this case we drop the 3.87psi column and add one elsewhere, in this case at 1.56psi. You will note there is never any data in the 700rpm row because this is filtered out as garbage. Idle fueling is not covered here and needs to be approached separately.

 

This is a good moment to select all the values in the table and see what the average is. In the example above the average of the whole table is actually zero. This means the basic injector setup and MAF scaling are good. If the average of your corrections is much more or less than zero then you have issues with MAF or injector scaling and latency still to address.

Below the table of correction values is a second table showing the number of data points which support the values above. You'll notice that numbers 10 or lower are greyed out, meaning we should treat the correction values with suspicion.

 

I find that the more data you have, the better the results are going to be. I will normally fill four or five logs with 10 minutes or so of data in CL, then run each one through the filter. Each time I'll copy the results from both the corrections and data point count tables and paste them into the columns alongside, making sure the RPM labels line up. After all the logs are filtered, and the results copied one after another off to the right, I average all the corrections and add all the data points together, like so:

http://i464.photobucket.com/albums/rr5/fahr_side/ELcomp3_zpsnlyxmzug.png

Yes I went a bit bonkers and averaged out the results from eleven logs on this one, to see if I could get the table right on the first try. Make sure the average function actually points to the same MRP column in each copied table and all the RPM labels line up. Remember the 700rpm row is not in play here.

I've highlighted in yellow the cells that came up with few data points (like <10) as you can't consider them reliable. In green are the cells that have correction values of more than +/- 2%. I do not try to get all my LTFTs to zero. I like to see all the LTFT values sitting at a few percent negative and let the system pull a little fuel from all four ranges. It's okay to try for zero but don't let it drive you crazy.

 

Here's a copy of the file above to save you a little time.

 

Now I go back to the table in the ROM and rescale the MRP axis. Where you have to relabel a column you can just interpolate the data from either side to populate the 'new' column. Here's an example of a rescaled table, but note it's not from the same ROM as the example above:

http://i464.photobucket.com/albums/rr5/fahr_side/ELcomp4_zpsyvluev36.png

 

Once you've done that, start applying the correction values you want to use. In my case I am ignoring anything under +/- 2% and only applying the correction values larger than +/- 2%. So, in this case for example for the cell on 1k4rpm and -10.64psi MRP shows us a correction of 4.3%. I'd ignore the first 2.0% and adjust the value in the ROM table up by 2.3, from -2.0 to 0.3, or as close as the input will let you. If you want to try for zero, use the whole adjustment value but be warned it usually ends up with you chasing your own tail.

 

One more step / sanity check. Copy just the values from your rescaled but unadjusted table and paste them into a blank spot on an Excel worksheet. Look at the average value. Once you've finished adjusting the table by the averaged out corrections, paste a copy of that into another spot and again check the average of those values. The difference between the two should not be that great, and will give you an idea how the LTFT values should move. If you have really big changes, like more than a few percent, go back and check your work.

 

Go flash the new ROM file to the car, and make more logs, rinse and repeat. If you follow the above instructions it should only take two or three rounds at most to get your B, C and D range LTFTs small, flat and very stable. In the example shown, using 11 logs to average out, I was able to get this job done in one go.

 

Questions? ;)

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Well, I'll be first in line to walk thru this for my own tune. Will provide a decent example of a real-life situation. Will get some logs of the correct parameters on my way home tonight after going back to closed loop.

 

Can I go thru this a few times to rough-in my comp table, then go back and check/fine tune injector scalar and latencies a tad more and then come back around to fine tune these tables? At the moment, SOMETHING is clouding my ability to really dial in my injector scalar and latency and this might be it.

 

EDIT: Tomorrow my new MAP sensor arrives so i'll probably delay my datalogging a little to flash the new tune for the new MAP and make sure things are still where i expect them.

* Build Thread * 26.53 MPG - 12 month Average *
Link to comment
Share on other sites

Thanks for posting. I'm going to go through this myself. My injectors are big sidefeeds that were absolutely atrocious running pump gas in the ways you describe. E85 significantly improved those issues, but there's a little room for improvement. I'll let you know how it goes. And subscribed.
Link to comment
Share on other sites

Yes Flinkly, you could wait until installing the new MAP sensor. Yes, you could grab some data logs first and we may see from that what your MAF / injector setup looks like. You should also post your MAF scaling and injector parameters.

Joeleodee, welcome to the party.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Got the new MAP sensor, but now that I've got it I'm seeing that it's incredibly unreliable (some lasting only a few months). So returning (will get a better one for more $).

 

 

Anyways, 5 logs of data, tried to do some non-normal driving to fill my table. Here's the result. Lower table is quantity of datapoints for that cell, orange is lower than 10 datapoints. Top table is the adjustments, orange is carried over from below (not enough data) and green is data outside +/- 2 adjustment value.

 

What'ya think? And I just add these adjustments to the current load comp table? Or subtract 2 from the values and add the remaining? I also like to keep my LTFT a little negative.

 

I also redid my PSI scale, -10.64 to +1.56 and did an even interpolation between.

 

http://i1191.photobucket.com/albums/z471/flinkly/Subaru/Tuning/LCT_1.jpg

 

 

Injectors are DW850s, MAF scaling is stock. Current/stock Load Comp table too.

 

http://i1191.photobucket.com/albums/z471/flinkly/Subaru/Tuning/LCT_Start.jpg

* Build Thread * 26.53 MPG - 12 month Average *
Link to comment
Share on other sites

Which MAP sensor did you get, the OMNI 3bar or 4bar? The 3bar one is fine. It's the 4bar version that has issues.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Good work Flinkly, you got a good range of data there. Give your spreadsheet another once-over for transcription errors to make sure you have the right numbers averaged out. I ignore everything in the +/- 2 range. Then I take all those larger than 2 and subtract 2, so for example 4.5 would become 2.5. Now add that 2.5 to the current value for that cell.

Anything under -2, do the same, so -5.5 becomes -3.5, then subtract that from the current value.

When you're finished average the whole table and compare to the original. If it's off by much you can increment the entire table up or down as needed until the table average is the same as stock. I also like to see the highest and lowest values being roughly equal, like 10 and -10.

 

You know the GM MAP sensors are very good eh? If you're okay with splicing wires and some bracketeering that's a good option.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Just set IAM initial value to 1.00 and be done with it.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Just some thoughts.

 

If "trying" to target -1% correction, could one just add 1 to all their correction data and let the macro provide adjustments to "0" (-1%)? Granted, don't get consumned by the drive to get an even -1%. ;)

 

Also, i don't have learning "on", so for faster/more data i could not log it and just add a column of zero to my csv. The cool thing is it still calculates a learned value, but applies 0.

 

 

Also, as for the tune revision, i haven't looked at the data but i still got a little stumble at my 1.7k mark like always, but it did feel generally smoother. We'll see how it ends up.

* Build Thread * 26.53 MPG - 12 month Average *
Link to comment
Share on other sites

I typically find if I do the calculated correction I'll overshoot the target. So, I'd add 0.5 to the whole table and see how that works. OTOH, the more data you crunch the better results you'll get.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Here's round two. i did a view of standard deviation of the averages of the 6 logs i did. orange for standard devs over .5. eek.

 

http://i1191.photobucket.com/albums/z471/flinkly/Subaru/Tuning/lcomp2.png

 

 

I still feel like i'm chasing something else, and it's not necessarily this. but we'll see. Was also suprised to see changes over 3% for this second round. I'll try another round after this probably and then we'll see.

 

EDIT: as far as standard dev, i am averaging ALL the data cells from each, so that could be it (regardless of the quality of the cells data, aka, the number of data points for that cell for that log). Probably messing with the results too.

 

Need to figure out some sort of weighted average based on data points per cell...

* Build Thread * 26.53 MPG - 12 month Average *
Link to comment
Share on other sites

I just ignore data that doesn't have 10 points behind it, and then log driving attempting to get into those ranges.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Once you've done that, start applying the correction values you want to use. In my case I am ignoring anything under +/- 2% and only applying the correction values larger than +/- 2%. So, in this case for example for the cell on 1k4rpm and -10.64psi MRP shows us a correction of 4.3%. I'd ignore the first 2.0% and adjust the value in the ROM table up by 2.3, from -2.0 to 0.3, or as close as the input will let you. If you want to try for zero, use the whole adjustment value but be warned it usually ends up with you chasing your own tail.

 

I understand why you're ignoring the cells that suggest changes <2%, but can you explain why you're subtracting 2 from the cells that you are making changes to?

I may be not understanding correctly, but ignoring the <2% cells and subtracting 2 from the suggested changes seems like two totally different things.

 

My car is [almost] stock and I'm doing this just as a exercise in tuning.

Excellent write-up by the way!

Link to comment
Share on other sites

yeah, this doesn't seem to be the droid i'm looking for, at least for my "right before 2k" stumble (the one i hit ALL THE TIME while DD'ing). it's still right there after 2 runs of this.

 

Not to say any of this is "bad". i get the jist and point, just isn't the solution to the drivability issues i've got.

 

i need to just buy and do my build, then pay for a good tune. :spin:

* Build Thread * 26.53 MPG - 12 month Average *
Link to comment
Share on other sites

I understand why you're ignoring the cells that suggest changes <2%, but can you explain why you're subtracting 2 from the cells that you are making changes to?

I may be not understanding correctly, but ignoring the <2% cells and subtracting 2 from the suggested changes seems like two totally different things.

 

My car is [almost] stock and I'm doing this just as a exercise in tuning.

Excellent write-up by the way!

 

I'd guess that he's suggesting to lower the % change so that you slowly creep up or down to the target. When you're dealing with lots of data in a log, there is a lot of noise and it's usually best to be more conservative on the change. I do the same on other platforms, constantly rounding down or up, whichever is more conservative.

Link to comment
Share on other sites

I use a nice java program that has all of these tools built in one. It's been referenced before. The really nice part about it for this table and the iat comp table is that you can automatically change the corrections to be a specific percent. For example, I don't want the tool to apply 100% corrections based on the data, so I change it to 50%.

 

Information about tool found here:

 

http://www.romraider.com/forum/viewtopic.php?f=32&t=10481

Link to comment
Share on other sites

I understand why you're ignoring the cells that suggest changes <2%, but can you explain why you're subtracting 2 from the cells that you are making changes to?

I may be not understanding correctly, but ignoring the <2% cells and subtracting 2 from the suggested changes seems like two totally different things.

 

I'd guess that he's suggesting to lower the % change so that you slowly creep up or down to the target.

Yes, partly it's to avoid overshooting targets but also I like to have this table and the MAF scaling set up to force LTFTs slightly negative. The aim is therefore not to get zero errors and trims.

 

yeah, this doesn't seem to be the droid i'm looking for, at least for my "right before 2k" stumble (the one i hit ALL THE TIME while DD'ing). it's still right there after 2 runs of this.

 

Not to say any of this is "bad". i get the jist and point, just isn't the solution to the drivability issues i've got.

 

It's good to get this out of the way so you can eliminate it from your list of possible causes.

 

I use a nice java program that has all of these tools built in one. It's been referenced before. The really nice part about it for this table and the iat comp table is that you can automatically change the corrections to be a specific percent. For example, I don't want the tool to apply 100% corrections based on the data, so I change it to 50%.

 

Information about tool found here:

 

http://www.romraider.com/forum/viewtopic.php?f=32&t=10481

 

Thanks. I'll take a look when I get a chance.

 

fahr_side, is this a tuned map? Its not at all smooth, much like what youre trying to avoid with the MAF scaling.

 

 

Yes. There is a difference between tweaking the MAF scaling and this 3D table. You can be at the same MAFv at different RPM and MRP and have very different STFTs in those conditions. My preference is to have a smooth MAF curve and use the EL comp table to get fueling errors as low as possible. If that means using some largish corrections then so be it. Note that the table I posted is from my own GH8, which has an intake and larger injectors.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Thank you. I agree, I'd rather see - fuel trims as well. So do you do the opposite if trims are positive? Over-correct to a small extent? Personally, I'd keep doing the same but slowly go over the target. Nice to know you are constantly correcting a rich mixture, rather than a lean one. So if for some reason it's not in closed loop, at least it's rich.

 

I'll take note to not be too OCD on the smoothing of this table. I thoroughly enjoy cranking down the resolution on one of my monitors and smoothing the 3d maps. I have a civil background, so it's much like grading or surface modeling in 3d.

Link to comment
Share on other sites

I get the EL Comp table to a point where the total of LTFT and STFT are in the +/-2% range, then look at the average of all the values in the table. I'm looking for a small positive value there, and that the highest and lowest compensations are pretty even, like +10% and -10%. If that's not the case I'll tweak MAF scaling slightly so I can bump the entire table up or down slightly to balance it.

 

 

Sent from a device using some software.

Obligatory '[URL="http://legacygt.com/forums/showthread.php/2008-gh8-238668.html?t=238668"]build thread[/URL]' Increased capacity to 2.7 liters, still turbo, but no longer need spark plugs.
Link to comment
Share on other sites

Started messing with my buddy's FRS this past weekend. Got it really close (< -1%) with just MAF scaling. But I'm going to start playing with this table now to get the noise down. I'm pretty sure it's called CL Fueling Target Compensation A and B, which is an adder or subtractor (ie: -0.35). There is also a Primary Open Loop Fueling Additive, which appears to be a multiplier (ie: 1.01), but shouldn't have any affect in CL.

 

I'm really close to bringing the laptop on days I commute with my wife in her 2.5i just to get more experience with the Subie ECU. Looking forward to road tuning everyday during lunch hour and to/from work in the OBXT once it's done.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...

Important Information

Terms of Use