SD, AN and Friends
Last updated 2007-09-18 11:09 PDT

Lumpy Cams and Poor MAP Signals

Lumpy cams present problems with detecting a stable MAP signal at low RPM. There are many possible solutions to this problem, four are listed below. Simplified equations are used, ignoring all enrichments, compensation and injector opening.

  1. Using pure alpha-N (αN) solves the problem with idle and very low load operation, but gives rotten transitional behavior, poor tuning at mid-throttle and won't work at all with boost.

          PW = reqFuel *       VE(TPS,RPM) ; MS's current αN code.
  2. Combine the above with the base speed density (SD) equation,

          PW = reqFuel * MAP * VE(MAP,RPM) ; MS's current SD code.

    and form a hybrid αN-SD algorithm, as used in the Ferrari F40 (twin turbo V8; EFI332 post; Word formatted version):

          PW = reqFuel * MAP * VE(TPS,RPM)

    This is trivially accomplished in the MegaSquirt v2 code by commenting out a couple of instructions in the MAP_OVER_BARO section (see the yahoo archives for more) and running with αN turned on.

  3. Use a blending algorithm, which transitions from TPS to MAP as the principal variable across some set of RPM bins.

          loRPM = 2000
          hiRPM = 3000
          if RPM <= loRPM then
             PW   = reqFuel *       VE(TPS,RPM) ; Pure αN
          if RPM >= hiRPM then
             PW   = reqFuel * MAP * VE(MAP,RPM) ; Pure SD
             beta = (RPM-loRPM) / (hiRPM-loRPM)
             PWan =       VE(TPS,loRPM) * (1-beta)
             PWsd = MAP * VE(MAP,hiRPM) *    beta
             PW   = reqFuel * (PWan  + PWsd)

    This allows you to deal cleanly with both sides of the switching region and guarantees a reasonably controllable transition across it. Note that this is a completely general solution, since if you set lo/hiRPM to 25k, it's a pure alpha-N; if you set lo/hiRPM to 0 it becomes pure SD.

  4. Scale some part of the TPS signal into the MAP signal, but retain the SD equation. This idea is taken directly from Electromotive's TEC3.

          function f(TPS, MAP):
             Return interpolated curve instead of the simple ramp
             given in 3, above.
          beta = f(TPS,MAP)
          PW   = reqFuel * beta * VE(beta,RPM)

    I would guess that your VE table is going to look pretty strange when you mix these two variables in such a fashion, but it appears that it will work mostly the same as 3.

Not2Fast hosted by TrackFiends