As I've been rounding out understanding the different variables that can impact the VE tuning process (using the narrowband sensors) I've been getting closer to re-enabling the MAP sensor input to RF.
The VE tuning process is impacted by a range of factors, so I've found in order to get really repeatable results it's necessary to do at least the following:
- Disable the MAP sensor input to RF.
- Ensure that you're using aq_rel_rf not the standard AQ_REL variable.
- Ensure that you filter out accel enrichment BA_F_TI (this is transient but certainly has an impact, I log it and then exclude records where it is active)
- Disable TETV (tank ventilation) during logging runs. This has an enormous, and non-predictable/repeatable impact on lambda measurements. (Important to note that after each such run I immediately follow with a drive where TETV is enabled to allow the tank to vent).
- Take rf_korr into account. In order to do this I calculated an adjusted version of LA_F_REGLER1 that has been multiplied by logged rf_korr.
Having settled on this procedure I have excellent repeatability between runs.
This weekend the temperature was bang on 20C so I decided I would take the opportunity to do a couple of final VE tuning runs focusing on the area the MAP sensor is active in so that I can then re-enable the MAP sensor. I reconfigured my CAN logging for the necessary parameters and did a test drive. I noticed the following in the logs:
Those spikes that don't have a corresponding aq_rel_rf spike are the MAP sensor input going floating. Interestingly the effect got worse the more the engine warmed up. So seemed pretty clear it was going to be a mechanical connection issue in the wiring harness. I replaced all the connectors on the harness extension (fortunately I had these on hand as spares). And did another check:
Much better! I couldn't find any obvious issue with the old connectors, but clearly the issue was there somewhere!
With that sorted I then did my final VE tuning runs to lock in the area of kf_rf_soll that the MAP sensor will operate in.
The MAP sensor input itself is used to calculate an actual m (airmass) value which is then divided by nominal m to get rf_p_saug (rf from MAP sensor). The MAP sensor input to RF calculation is only active in this area:
X axis is N (RPM) and Y axis is p_saug (MAP pressure)
At idle the sensor is active through to light-medium load, and at higher RPM it's active only at light load. Why would BMW go to all that effort and limit it to that range? Because that's where it's needed, and it's where it's effective.
Below is two slightly different views of the same data. We can see that at aq_rel between 0 and 1.5 (out of 100!) the MAP to aq_rel response is linear and at a slope that provides good definition. Above this (1.5-100) the slope flattens out a lot and pretty much anything high load starts to look the same. We can see there is slight shift based on N (RPM).
The area of the curve that kf_rf_p_saug_i_gain targets is the first part where the MAP sensor input is useful. At higher loads where the MAP sensor slope is too flat the RF calculation relies on aq_rel_rf alone.
Why do we bother with all of this? Because calculating rf_soll (CSL Alpha N table) is just a calculated value based on throttle opening. It doesn't properly take into account real world conditions. The MAP sensor measures the actual pressure in the ITBs at a moment in time and therefore can calculate the actual airmass. This is why the MAP sensor gives smoother response at idle/part throttle driving.
When running M3 cams the MAP sensor calculations actually need to be adjusted to account for the different cams. Otherwise the MAP integrator tends to bounce off one or other of it's limits (I've got a log somewhere from nearly a year ago that demonstrates this, but can't find it at the moment). This doesn't mean it isn't helping, but it's not able to fully adjust (also the end result it's targeting is based on CSL cams not M3 cams).
With this adjusted for we can see rf_p_saug_i sitting comfortably within its limits, able to adjust up/down as needed. We can also see in this snapshot evidence of rf_p_saug_i (the integral) change being suspended under load conditions.
Very cool.
Where to next? I'll do some more logging on this, In particular I want to get some more logs of idle conditions, etc. to see if I can reproduce the same very steady idle that Bry5on is finding. I'll also log a range of driving conditions to observe how the MAP sensor influences RF calculation (basically real-world logging of the behavior I'm expecting to see based on the disassembly work).

Leave a comment: