Jump to content

Help Controlling AFR's at low load on BMW S14 Engine


MazdaMan

Recommended Posts

Greetings All, 

I need some help tuning the engine in my sports car -  a 1990 BMW M3.  The engine is a 2.5L 4-cylinder with individual throttle bodies, large volume intake manifold and long duration / high lift cams. Power output is ~300 HP at the flywheel.

I'm running a ViPec i44 ECU using PCLink G4+ software, version 5.6.7.3632. Fuel equation mode is set to TRADITIONAL and Equation Load Source is set to MAP. Fuel Table axis are engine speed and TPS.

The issue I have is that the *accurately* mapping the fuel table is exceptionally difficult at low speed and low loads (e.g. < 20% TP Main). This leads to the AFR being far off the target when rowing through the gears. This can be seen in the attached screencap of datalog.  Lambda oscillates between lean and rich of target. I've tried playing around with the closed loop lambda gains and update rate table, but no setting has been able to properly control to the target.

The manifold pressure seems to vary a lot (likely due to the ITB's and cams) , so I'm considering switching to baro pressure as the equation load source. I may also try 4D/5D fuel mapping, but would like a second (or third or forth!) opinion. 

Cheers,

-h-

 

Log_Snip.JPG

CLL_Settings.JPG

22-09-09_ROAD_WS.llg

Link to comment
Share on other sites

Is it any better with CLL turned off?  Some of it appears to be the CLL update rate is too high at light loads causing an oscillation.  As a quick test to determine the transport delay you can try holding it at light load/low RPM with CLL off, then do a step change to lambda target (say 10% richer), whatch how long it takes for the measured lambda to change by a similar percentage.  If it takes say 1 second for a fuel change to be seen by the sensor then your update rate should be 1Hz.  If it takes say 0.5sec then 2Hz.  You would be surprised at long the delay is at low load.  

It looks like accel enrichment is causing the worst of the rich areas.  MAP could be playing a part, do you have an idle valve? 

What is the lambda controller?  Topping out at 1.075 lambda is a bit odd.

 

 

Link to comment
Share on other sites

I've tried turning of CLL. It 

10 hours ago, Adamw said:

Is it any better with CLL turned off?  Some of it appears to be the CLL update rate is too high at light loads causing an oscillation.  As a quick test to determine the transport delay you can try holding it at light load/low RPM with CLL off, then do a step change to lambda target (say 10% richer), whatch how long it takes for the measured lambda to change by a similar percentage.  If it takes say 1 second for a fuel change to be seen by the sensor then your update rate should be 1Hz.  If it takes say 0.5sec then 2Hz.  You would be surprised at long the delay is at low load.  

It looks like accel enrichment is causing the worst of the rich areas.  MAP could be playing a part, do you have an idle valve? 

What is the lambda controller?  Topping out at 1.075 lambda is a bit odd.

 

 

I've tried turning of CLL. It doesn't seem to improve the lambda. It's interesting you mention the accel enrich... I setup a lot of accel enrich to try to make the lambda oscillations safer (i.e. trying to bias the lambda error rich). Do you think it's too much accel enrich?

I do have an IAC. It's a solenoid type using closed-loop control. Lambda controller is an ECM AFX2. The 1.075 is upper bound based on voltage.

 

The engine does have a solenoid type IAC with closed loop control. 

Link to comment
Share on other sites

46 minutes ago, Brad Burnett said:

Simple question.... (I do play with a ton of ITB's)

Were the throttles sync'd at idle? 

I find that most lambda issues with ITB cars is that a lot of people dont bother to sync the throttles.  This is typically apparent at low openings as you have mentioned. 

That's a good point. Yes, I did sync the throttles per the BMW procedure.

Link to comment
Share on other sites

Since you have an idle valve you will need to keep equation load source set to MAP, this is the only way the variable mass of air flowing through the idle have can be compensated for.  

When you say "synced per the bmw procedure", what is that procedure - does it use a synchrometer or manometers? I wouldnt trust any of the mechanical methods such as feeler gauges etc.  

Can you attach a copy of the tune.

Link to comment
Share on other sites

1 hour ago, Adamw said:

Since you have an idle valve you will need to keep equation load source set to MAP, this is the only way the variable mass of air flowing through the idle have can be compensated for.  

When you say "synced per the bmw procedure", what is that procedure - does it use a synchrometer or manometers? I wouldnt trust any of the mechanical methods such as feeler gauges etc.  

Can you attach a copy of the tune.

For the syncing procedure you set / equalize the length of the pushrods that actuate the throttle plates. Then, you use a quad manometer to equalize pressure across each cylinder. Tune is attached.

22-09-08_ImprovingFuelTab1.pclr

Link to comment
Share on other sites

Sweet if its done with manometers it should be good.  

There is nothing too out of place in your map, there is quite a bit of unusual stuff though, it would be nice to see a log with some of it simplified a bit.  I would like to see a log with the following changes if you are keen:

  • CLL disabled
  • 4D fuel disabled.
  • IAT trim disabled
  • Change injector timing to 360deg. 
  • Zero out short PW adder. 
  • Reduce accel enrichment hold to 4 events and increase decay to 5%.  

All of these changes will likely mess up the tune a bit so it will need a bit of work on the main fuel table afterwards.  

As for the wideband - the analog output range you are using is not the default.  Can you confirm during boot up the 3rd digit shows a dash at the bottom of the screen.

 

Link to comment
Share on other sites

8 hours ago, Adamw said:

Sweet if its done with manometers it should be good.  

There is nothing too out of place in your map, there is quite a bit of unusual stuff though, it would be nice to see a log with some of it simplified a bit.  I would like to see a log with the following changes if you are keen:

  • CLL disabled
  • 4D fuel disabled.
  • IAT trim disabled
  • Change injector timing to 360deg. 
  • Zero out short PW adder. 
  • Reduce accel enrichment hold to 4 events and increase decay to 5%.  

All of these changes will likely mess up the tune a bit so it will need a bit of work on the main fuel table afterwards.  

As for the wideband - the analog output range you are using is not the default.  Can you confirm during boot up the 3rd digit shows a dash at the bottom of the screen.

 

Thanks, I'll can get such a log. I'm curious, what do you consider to be unusual about the map? 

Also... I understand disabling CLL and 4D for diagnostic purposes, but what might the injector timing and short PW adder do?

Link to comment
Share on other sites

Your short PW adder is about 10 times a typical value at say 1.0ms where you do spend a lot of time.  Your SPWA table is also linear which is not normal at all, the purpose of the SPWA is to correct small non-linearities in the injector behavior. 

Your injector timing is very late in the cycle, typically you want the injection event to finish just before the intake valve opens, at low RPM/TP, with the current values in your table you would be finishing injection after the cylinder has already done its inhale, some of the fuel would only make it into the next intake cycle rather than the intended one.  Effects from incorrect injector timing are most noticable during low load transients.  

For the IAT, you should only have IAT trim or Charge temp approximation enabled - not both.  With both you are getting twice as much fuel adjustment for air temp that you should be.  The values in your charge temp table are probably a bit on the large side for ITB's also, but I didnt want to mess the tune up too much by telling you to change that also.  I dont think it is contributing much to the problem.  

CLL disabled because that lambda seems very slow to respond.  It appears in some places the CLL is correcting for an event that happened half a second ago and has already passed.  Did you confirm that the 3rd digit on the wideband display shows the low dash at boot up?

 

Link to comment
Share on other sites

On 9/14/2022 at 4:35 PM, Adamw said:

Your short PW adder is about 10 times a typical value at say 1.0ms where you do spend a lot of time.  Your SPWA table is also linear which is not normal at all, the purpose of the SPWA is to correct small non-linearities in the injector behavior. 

Your injector timing is very late in the cycle, typically you want the injection event to finish just before the intake valve opens, at low RPM/TP, with the current values in your table you would be finishing injection after the cylinder has already done its inhale, some of the fuel would only make it into the next intake cycle rather than the intended one.  Effects from incorrect injector timing are most noticable during low load transients.  

For the IAT, you should only have IAT trim or Charge temp approximation enabled - not both.  With both you are getting twice as much fuel adjustment for air temp that you should be.  The values in your charge temp table are probably a bit on the large side for ITB's also, but I didnt want to mess the tune up too much by telling you to change that also.  I dont think it is contributing much to the problem.  

CLL disabled because that lambda seems very slow to respond.  It appears in some places the CLL is correcting for an event that happened half a second ago and has already passed.  Did you confirm that the 3rd digit on the wideband display shows the low dash at boot up?

 

Aha, that makes sense. IAT trim and charge temp approximation were already set when I bought the kit for my car, so I left them alone as it seem to work OK. I tried advancing the inj timing by 90 deg for all points in the table. The lambda oscillations didn't seem much different, but the car felt stronger and a tad smoother. Advancing the injection also seem to make the car run richer everywhere, which makes sense given what you said. 

O2 sensor shows lambda = 1.097 on the G4 at boot up (see attached log). I believe that matches what the lambda display on the O2 conditioner shows as well. I'll double check that tonight and get a log with CLL inactive (see attached ECU log).

I reached out to the injector mfg to get information on the characterization (e.g. SPWM). Unfortunately, the injectors are old enough that they don't have the info. I see that you once posted the correct info on this forum. Can you repost the settings? The original post had these in an LTE file format which I cannot open. Would prefer them in a Excel format but a screenshot of the settings would suffice. Injectors are Injector Dynamics ID725's. Rail pressure is constant @ 3 bar.

ECU Log 2022-09-15 7;04;24 pm.llg

Link to comment
Share on other sites

That log just has 30seconds of idle.  

The info for the ID725's is in the injector dynamics library.  Link SPWA uses the GM format.  Here is their excel file if you want it:  https://help.injectordynamics.com/helpdesk/attachments/15286295  However, the LTE file is a link table file so easier than typing in manually.  Instructions below:

HUb9Mjt.png

Link to comment
Share on other sites

8 minutes ago, Adamw said:

That log just has 30seconds of idle.  

The info for the ID725's is in the injector dynamics library.  Link SPWA uses the GM format.  Here is their excel file if you want it:  https://help.injectordynamics.com/helpdesk/attachments/15286295  However, the LTE file is a link table file so easier than typing in manually.  Instructions below:

HUb9Mjt.png

Thanks. I'm not clear on exactly what your are looking on the O2 sensor measurement at boot up. Can you clarify?

Link to comment
Share on other sites

During bootup it will first display 8888, then the next screen should look something like below.  The first 2 digits are the sensor type (LSU4.2 in this example), the 3rd digit has the dash at the bottom (narrow afr range), the third digit is the fuel type (looks like 6 but is inferring G for gasoline).

LVOC3z7.png

Link to comment
Share on other sites

Gotcha. It reads "4.9_L". Just reviewed the manual and L is correct as I have the analog output configured to show lambda rather than AFR. The transfer function converting the AO to lambda is correct. The conditioning unit reads the same lambda as does the G4+ program.

Link to comment
Share on other sites

  • 3 weeks later...

Hi.

also into s14 in this range of tuning.

Dont know if youre getting it any better? 
But remember, a s14 2.5 300 hp NA.. you probably got quite «big» cams, overlap.. making reversion and pulses in the intake airbox.

These engines makes a big hole in the torque curve somewhere between 3000-4000 rpm, depending on setup.

So what are your specs? What and where is peak torque and hp?

 

Nils

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...