MAF Sensor

Overview

The Mass Air Flow (MAF) sensor measures the mass of air entering the engine. This may optionally be used to calculate the amount of fuel required to maintain the desired air/fuel ratio.

The MAF sensor is typically a hot wire or hot film sensor, which heats a wire or film to a constant temperature and measures the cooling effect of the air flow. The cooling effect is proportional to the mass of air flowing past the sensor.

The voltage output of the MAF sensor is often non-linear, so the ECU may apply a calibration curve to convert the raw voltage into a more useful linearized form.

MAF Sensor Options

Option Description
option iconMAF Use MAF as the “Engine Load” measurement?
option iconMAP Set to 0 if using MAF for Engine Load.
option iconLoad source Do not set if using MAF for Engine Load.
option iconMAF source Select an input channel to use for MAF. This could be an Analogue input or another source such as CAN bus.
option iconMAF source Bigend Swaps the bytes from the 16bit MAF source. This may be required if the source is from a little-endian (Intel) 16bit CAN signal.
channel iconMAF Raw Raw MAF sensor reading as obtained from the MAF source.
option iconMAF no Speed comp If ON, the MAF sensor reading is not compensated for engine speed. Otherwise, the MAF sensor reading is multiplied by the inverse engine speed and divided down.
option iconMAF no X16 If ON, the MAF sensor reading is not multiplied by 16, following speed compensation. This option does nothing if option iconMAF no Speed comp is ON.
table iconMAF Sensor MAF Sensor Table to convert raw MAF sensor voltage into a linearized form.
option iconMAF Cal Number of internal teeth over which to average the MAF sensor readings when running. Typically this would be set to 1, 2 or 3 revolutions; the actual value to set here would depend upon the number of internal teeth per revolution which should be configured in the option iconWheel Teeth option.
option iconMAF min Minimum MAF sensor reading, below which an error condition is indicated.
option iconMAF max Maximum MAF sensor reading, above which an error condition is indicated.
channel iconMAF Linear Linearized MAF reading, scaled using MAF (Load) Scalar.
channel iconMAF Linear Scaled Linearized MAF reading, scaled using MAF Scalar.
channel iconMAF as Load Compensated MAF reading, scaled using MAF (Load) Scalar.
channel iconMAF as Load Scaled Compensated MAF reading, scaled using MAF Scalar.
channel iconError MAF Indicates an error condition with the MAF sensor.

Flowchart

flowchart TD
    MAFMIN@{ shape: diamond, label: "< MAF Min"}

    MAFMAX@{ shape: diamond, label: "> MAF Max"}
    MAFNSPD@{ shape: diamond, label: "MAF no Speed comp"}
    NOMAFMUL@{ shape: diamond, label: "MAF no X16"}

    MAFRAW["MAF Raw"]

    MAF_Source(["MAF source"])-- RUNNING? -->MAFSMP(["MAF samples"])
    MAFSMP-->MAFAVG["Average"]-->MAFRAW
    MAFCAL(["MAF Cal [teeth]"])--"Window Size"-->MAFAVG
    MAF_Source--"NOT RUNNING"-->MAFRAW

    MAFRAW-->MAFMIN
    MAFMIN-- Y -->ERROR_MAF(["Error MAF"])
    MAFMIN-- N -->MAFMAX

    MAFMAX-- Y -->ERROR_MAF(["Error MAF"])
    MAFMAX-- N -->MAFTBLW["MAF Sensor Table"]
    SPEEDN(["− Engine Speed"])
    MAFTBLW-->MAFLIN(["MAF Linear [MAF Load Units]"])
    MAFLIN-->MAFLINSCALED(["MAF Linear Scaled [MAF Units]"])
    

    MAFLIN-->MAFNSPD
    MAFNSPD-- N -->SPEEDMUL["×"]
    MAFNSPD-- Y -->MAFLOAD
    SPEEDN-->SPEEDMUL

    SPEEDMUL-->NOMAFMUL

    NOMAFMUL-- N -->MUL16["×16"]
    NOMAFMUL-- Y -->MAFLOAD
    MUL16--> Overflow -->ERROR_MAF
    MUL16-->MAFLOAD

    MAFLOAD(["MAF as Load [MAF (Load)]"])

    MAFLOAD-- "MAF AND NOT MAP AND NOT "Load Source"" -->LOAD(["Engine Load [Load]"])
    MAFLOAD-->MAFLOAD_SCALED(["MAF as Load Scaled [MAF Units]"])