an explanation of how safc2 determines and uses both hi/low throttle maps to calculate the adjustment needed.

it interpolates intermediate values.

it goes off the assumption that throttle plate can be somewhat related to load on the engine.

i am also going off the assumption that safc is doing this in a linear fashion, it could be exponential, i can do a writeup on the exponential adjustment interpolation if someone thinks it's not linear.

so for example imagine this situation:

lo th=30

hi th=60

lo map @ 4000 rpm = +5

hi map @ 4000 rpm = -15

lets look at the adjustments it will make, for simplicity sake, lets assume that the engine is rotating at 4000 rpm regardless of throttle posititon:

0 throttle - lo map only is used , so +5 adjustment to airflow

10 throttle - lo map only is used, +5 adjustment

20 throttle - lo map only is used , +5 adjustment

30 throttle - low map only is used, +5 adjustment

40 throttle - this is where it gets a bit complicated,

it will use both of the maps and interpolate the value between lo and hi adjustment based on the throttle...

someone correct me if my math is off:

total adjustment points = hi - lo = -15-(+5) = -20

throttle difference = hi th - lo th = 60 - 30 = 30

adjustment points per throttle % = -20 / 30 = -0.66

adjustment at 10% above lo position = 10 * -0.66 = -6.66% towards hi throttle map

so at 40% throttle the adjustment will be 5+(-6.66)

so... 40% throttle both maps are used adjustment = -1.66

50% throttle both maps are used again, adjustment = -8.2 (5+(20*-0.66))

55% throttle both maps are used adjustmen = -11.5 (5+(25*-0.66))

60% hi map only is used adjustment = -15%

70% hi map only adjustment = -15%

and so on.

to sum this up

below lo throttle, only lo throttle map is used

above hi throttle, only hi throttle map is used

between - both maps are used on a sliding scale.

mine... are set at 60 - 80 or something like that, i keep changing them pretty often as i play with the safc.

hope this helps.

*edit: modified some of the math, not using abs() anymore, a more general approach*