AUTO-230 · Lesson 1 of 12 · 22 min

Combustion, air-fuel ratio and emissions

Spring comes to Ridgeline Auto Service in Denver the way it always does: a week of warm wind, a snowstorm, and then a row of vehicles with their check-engine lamps lit. Marty Kowalchuk calls it emissions season. Cold starts all winter have loaded up oxygen sensors and fuel injectors, potholes have cracked exhaust parts, and drivers who ignored an amber lamp in January finally book an appointment. Kiran Dhaliwal has finished her electrical term, and Marty tells her that this term is about what the electrical systems are for. "Every sensor and module you tested last term exists to do one job," he says. "Burn the right amount of fuel, at the right moment, and clean up what comes out of the tailpipe."

Her first job of the term is a maintenance service on Ines Moreau's 2019 hybrid. While the car is on the hoist, Marty uses its exhaust to start the lesson. He points out the two oxygen sensors, the close-coupled catalytic converter tucked against the cylinder head, and the long underbody pipe. "Before you can diagnose any of this," he says, "you need to know what the engine is trying to make in the cylinder, and what it makes instead when something goes wrong." This lesson covers the chemistry of combustion, the air-fuel ratio and lambda, the pollutants an engine produces and why, and how altitude changes the air an engine breathes.

What burns in an engine

Gasoline is a blend of hundreds of hydrocarbons, molecules made of hydrogen and carbon atoms, plus additives and, in most of North America, up to about 10 percent ethanol. When a hydrocarbon burns completely with enough oxygen, every carbon atom becomes carbon dioxide (CO₂) and every hydrogen atom becomes water (H₂O). The energy released by forming those new bonds is what pushes the piston down. Air is about 21 percent oxygen and 78 percent nitrogen by volume, with small amounts of argon and other gases. The nitrogen does not burn, but it passes through the cylinder and is heated along with everything else, and that matters for emissions.

Complete combustion of a simple fuel such as octane can be written as a balanced chemical equation. Real gasoline has no single formula, but the idea is the same: a known mass of fuel needs a known mass of oxygen to burn completely, and because oxygen is only part of the air, the engine needs about fifteen times as much air as fuel by mass.

\[2\,\text{C}_8\text{H}_{18} + 25\,\text{O}_2 \;\to\; 16\,\text{CO}_2 + 18\,\text{H}_2\text{O}\]

Combustion in an engine is never perfect. The mixture is not perfectly even, the flame cannot reach the thin layer of mixture next to the cool cylinder wall or into the crevice above the top piston ring, and the burn has only a few milliseconds to finish before the exhaust valve opens. So the exhaust always contains, besides carbon dioxide, water and nitrogen, small amounts of unburned and partly burned fuel, carbon monoxide, oxides of nitrogen and, on some engines, fine particles of soot. Those are the pollutants that emission controls exist to reduce.

The air-fuel ratio and lambda

The air-fuel ratio (AFR) is the mass of air divided by the mass of fuel in the mixture. The ratio at which there is exactly enough oxygen to burn all of the fuel, with none of either left over, is called the stoichiometric ratio. For pure gasoline it is about 14.7 to 1. Ethanol carries some oxygen in its own molecule, so it needs less air: pure ethanol is about 9.0 to 1, and a 10 percent ethanol blend is about 14.1 to 1. A mixture with more air than stoichiometric is lean; one with less is rich.

Because the stoichiometric ratio changes with the fuel, engineers and scan tools often use lambda (λ) instead. Lambda is the actual air-fuel ratio divided by the stoichiometric ratio for the fuel being burned. A lambda of 1.00 is stoichiometric whatever the fuel; 0.90 is 10 percent rich; 1.05 is 5 percent lean. Many scan tools display the commanded equivalence ratio, which is lambda by another name, and wide-band air-fuel sensors are really lambda sensors.

\[\lambda = \frac{\text{AFR}_{\text{actual}}}{\text{AFR}_{\text{stoich}}}\]

Modern gasoline engines run at lambda 1.00 almost all of the time, not because it gives the most power or the best economy, but because the three-way catalytic converter only works well inside a very narrow window around it. Slightly rich mixtures, around lambda 0.85 to 0.90, give the most power, and older engines used them at full throttle; slightly lean mixtures, around lambda 1.05 to 1.10, give the best economy on engines that can tolerate them. Outside a band of roughly ±1 percent around stoichiometric, though, a three-way catalyst cannot clean up all three main pollutants at once. Everything in this course about fuel trims, oxygen sensors and catalyst monitors comes back to that one number.

# Air-fuel ratio and lambda for two fuels (stoichiometric AFR by mass)
stoich = {"gasoline, no ethanol": 14.7, "gasoline with 10 % ethanol (E10)": 14.1}
measured_afr = [12.9, 14.1, 14.7, 15.5]
for fuel, s in stoich.items():
    print(fuel)
    for afr in measured_afr:
        lam = afr / s
        state = "rich" if lam < 0.99 else ("lean" if lam > 1.01 else "stoichiometric")
        print(f"  AFR {afr:4.1f}:1 -> lambda {lam:4.2f} ({state})")
Output
gasoline, no ethanol
  AFR 12.9:1 -> lambda 0.88 (rich)
  AFR 14.1:1 -> lambda 0.96 (rich)
  AFR 14.7:1 -> lambda 1.00 (stoichiometric)
  AFR 15.5:1 -> lambda 1.05 (lean)
gasoline with 10 % ethanol (E10)
  AFR 12.9:1 -> lambda 0.91 (rich)
  AFR 14.1:1 -> lambda 1.00 (stoichiometric)
  AFR 14.7:1 -> lambda 1.04 (lean)
  AFR 15.5:1 -> lambda 1.10 (lean)

The pollutants and where they come from

Hydrocarbons (HC) in the exhaust are fuel that did not burn or burned only partly. They come from mixture trapped in crevices and quenched against cold walls, from misfires, where a whole cylinder's charge goes out unburned, and from rich mixtures. They are measured in parts per million. Hydrocarbons react with oxides of nitrogen in sunlight to form ground-level ozone, the main ingredient of summer smog, and some, such as benzene, are toxic in their own right. A misfire is the quickest way to raise HC: one dead cylinder on a six-cylinder engine sends a sixth of the fuel straight into the exhaust, where it also overheats the catalyst.

Carbon monoxide (CO) is produced when there is not enough oxygen to finish turning carbon into carbon dioxide, so it rises steeply as the mixture goes rich. It is colorless and odorless, and it binds to the hemoglobin in blood far more tightly than oxygen does; that is why engines are never run in a closed shop without exhaust extraction, as AUTO-110 stressed. In exhaust gas analysis, CO is measured as a percentage and is the clearest single indicator of a rich mixture.

Oxides of nitrogen (NOx), mainly nitric oxide and nitrogen dioxide, form when the nitrogen and oxygen in the air combine in the heat of combustion. They are not made from the fuel at all; they come from the air, and they form fastest when peak combustion temperatures are high and there is spare oxygen, which happens with slightly lean mixtures, high loads, advanced spark timing and hot engines. NOx contributes to smog, acid rain and fine particle pollution. The difficulty for engineers is that the conditions that cut HC and CO, hot and lean, tend to raise NOx, and the conditions that cut NOx tend to raise the other two.

Particulate matter (PM) is fine soot. Diesels have always produced it, and gasoline direct-injection engines produce more than port-injected engines because fuel sprayed straight into the cylinder can wet the piston and walls, especially when cold. Carbon dioxide is not toxic in the way the others are, but it is the main greenhouse gas from vehicles, and the amount produced is fixed by how much fuel is burned. The only way to cut a vehicle's CO₂ is to burn less fuel.

A graph with lambda on the horizontal axis from 0.8 to 1.2 and relative emissions on the vertical axis. Carbon monoxide is very high at lambda 0.8 and falls steeply to almost nothing just lean of 1.0. Hydrocarbons are high when rich, reach a minimum slightly lean of 1.0, and rise again when very lean as misfires begin. Oxides of nitrogen peak just lean of 1.0, at about 1.05, and fall on both sides. A narrow shaded band at lambda 1.00 is labeled catalyst window.
Engine-out emissions against lambda: no mixture is good for all three, which is why the catalyst window at lambda 1.00 matters so much.

Reading the exhaust

Before scan tools could show fuel trims and sensor data, technicians diagnosed mixture problems with a four-gas or five-gas exhaust analyzer, and many shops still use one. It samples the tailpipe and reads HC in parts per million, CO and CO₂ in percent, oxygen (O₂) in percent and, on five-gas machines, NOx in parts per million. The readings fit together in a pattern. A healthy warm engine with a working catalyst shows almost no HC or CO, very little oxygen and close to 15 percent CO₂, which is about the most an engine can make; high CO₂ is a sign of efficient combustion. A rich mixture raises CO and lowers O₂. A lean mixture or a vacuum leak raises O₂ and often NOx. A misfire raises both HC and O₂, because the unburned cylinder pushes fresh mixture, including its oxygen, straight out. An exhaust leak ahead of the probe dilutes everything and lowers CO₂.

Kiran tests Ines's hybrid at a warm idle, which on this car means asking the hybrid system to keep the engine running in service mode. The analyzer reads 4 ppm HC, 0.02 percent CO, 15.1 percent CO₂ and 0.1 percent O₂. Marty nods. "That is what clean looks like," he says. "Remember those numbers, because the next car with a problem won't look like that."

# Rough interpretation of warm tailpipe readings (illustrative thresholds, after the catalyst)
def read(hc_ppm, co_pct, co2_pct, o2_pct):
    notes = []
    if co2_pct < 13.5: notes.append("low CO2: poor combustion or a leak diluting the sample")
    if co_pct > 0.5 and o2_pct < 0.5: notes.append("high CO, low O2: rich mixture")
    if o2_pct > 1.5 and hc_ppm < 100: notes.append("high O2: lean mixture, vacuum leak or air leak in the exhaust")
    if hc_ppm > 150 and o2_pct > 1.5: notes.append("high HC and O2: misfire")
    return notes or ["readings fit a healthy engine and catalyst"]
tests = {"Ines's hybrid": (4, 0.02, 15.1, 0.1), "example A": (40, 1.8, 13.2, 0.2),
         "example B": (380, 0.3, 12.4, 3.1), "example C": (15, 0.05, 13.0, 2.4)}
for name, r in tests.items():
    print(name, "->", "; ".join(read(*r)))
Output
Ines's hybrid -> readings fit a healthy engine and catalyst
example A -> low CO2: poor combustion or a leak diluting the sample; high CO, low O2: rich mixture
example B -> low CO2: poor combustion or a leak diluting the sample; high HC and O2: misfire
example C -> low CO2: poor combustion or a leak diluting the sample; high O2: lean mixture, vacuum leak or air leak in the exhaust

Air density and altitude

An engine's fuel system has to match the mass of air, not its volume, because the stoichiometric ratio is a ratio of masses. Air density depends on pressure and temperature: warm air and thin air both carry less oxygen in each cylinder-full. At Denver, about 5,280 ft above sea level, the normal barometric pressure is about 24.6 inHg, roughly 18 percent less than at sea level, so a naturally aspirated engine takes in about that much less air on each stroke and makes about that much less power. The fuel system does not need to be adjusted for this, because the engine computer measures the air, using a mass airflow sensor or a manifold pressure sensor with a barometric reading, and meters fuel to suit. It does mean that numbers quoted in service information for sea level, such as typical mass airflow at idle or full-load manifold vacuum, read differently in the shop, and Lessons 4 and 5 adjust for it.

\[\rho = \frac{p}{R\,T}\]

In the equation, ρ is air density, p is absolute pressure, R is the gas constant for air, 287 J/(kg·K), and T is the absolute temperature in kelvins. The code below compares the mass of air an engine can draw into one cylinder at sea level and in the shop on a cool spring morning.

# Air density and air mass per cylinder-full at sea level and at the shop
R = 287.0                         # J/(kg K), gas constant for air
def density(p_kpa, t_c):
    return p_kpa * 1000 / (R * (t_c + 273.15))
cyl_l = 0.6                        # one cylinder of a 3.6 L V6, in L
for place, p_kpa, t_c in (("sea level", 101.3, 15), ("the shop (5,280 ft)", 83.3, 10)):
    rho = density(p_kpa, t_c)
    grams = rho * cyl_l            # kg/m3 times L gives g
    print(f"{place:<22} {p_kpa * 0.2953:6.1f} inHg  {t_c * 1.8 + 32:3.0f} F  density {rho:5.3f} kg/m3  air per cylinder {grams:4.2f} g")
grams_fuel = density(83.3, 10) * cyl_l * 0.85 / 14.7
print(f"fuel for one cylinder at 85 % filling, lambda 1: {grams_fuel * 1000:5.1f} mg")
Output
sea level                29.9 inHg   59 F  density 1.225 kg/m3  air per cylinder 0.73 g
the shop (5,280 ft)      24.6 inHg   50 F  density 1.025 kg/m3  air per cylinder 0.62 g
fuel for one cylinder at 85 % filling, lambda 1:  35.6 mg

How emission controls fit together

Every emission control system on a modern gasoline vehicle attacks one of the pollutants at one point in its life. Precise fuel metering with closed-loop oxygen sensor feedback keeps lambda in the catalyst window. The ignition system, with timing controlled by the engine computer, burns the mixture completely and avoids misfires. Exhaust gas recirculation, whether by an external valve or by valve timing, lowers peak combustion temperature and NOx. The three-way catalytic converter oxidizes HC and CO to CO₂ and water and reduces NOx to nitrogen. Positive crankcase ventilation sends blow-by gases back to be burned instead of venting them. The evaporative emission system captures fuel vapor from the tank. Gasoline particulate filters, on some newer direct-injection engines, trap soot. On-board diagnostics watches all of them and lights the malfunction indicator lamp when one stops working well enough. Each of these has a lesson in this course.

Ines's hybrid has one more trick. Hybrids stop and start their engines many times on every trip, and a catalyst that cools down stops working. Her car's engine computer schedules warm-up deliberately: on a cold start it runs the engine at a steady speed with retarded spark timing, which sends more heat into the exhaust and lights off the catalyst within a few seconds, before the hybrid system is allowed to shut the engine down. "That's why her engine runs on a cold morning even when she's sitting still," Marty says. "Customers think something is wrong. It is doing exactly what it should."

Worked problem

Lambda from an air-fuel ratio

A wide-band sensor on an engine burning E10 reports an air-fuel ratio of 13.4 to 1. What is lambda, and is the mixture rich or lean? What would the same reading mean on gasoline without ethanol?

Show solution
  1. E10 stoichiometric AFR ≈ 14.1, so λ = 13.4 / 14.1 = 0.95.
  2. λ below 1 means rich: about 5 percent more fuel than stoichiometric.
  3. Without ethanol, stoichiometric is 14.7, so λ = 13.4 / 14.7 = 0.91, about 9 percent rich.
  4. This is why scan tools that show lambda directly are easier to read than raw AFR.

Answer: λ ≈ 0.95 on E10 (5 percent rich); λ ≈ 0.91 on straight gasoline.

Common mistakes

  • MistakeThinking a rich mixture gives a cleaner exhaust because there is more fuel to burn.

    InsteadRich mixtures raise HC and CO sharply; the catalyst needs lambda very close to 1.00.

  • MistakeBlaming the fuel for high NOx.

    InsteadNOx comes from the nitrogen in the air, formed by heat and spare oxygen.

  • MistakeReading high HC with high O₂ as a rich mixture.

    InsteadThat pattern means unburned mixture passing through: a misfire.

  • MistakeExpecting sea-level airflow and vacuum numbers in a high-altitude shop.

    InsteadThinner air means less mass flow and lower manifold vacuum; correct for barometric pressure.

  • MistakeTreating a hybrid's engine running at a stop on a cold morning as a fault.

    InsteadThe control system is heating the catalyst before it allows the engine to shut down.

Summary and key terms

  • Complete combustion of gasoline produces carbon dioxide and water; real engines also produce HC, CO, NOx and particles.
  • The stoichiometric air-fuel ratio is about 14.7:1 for gasoline and about 14.1:1 for E10.
  • Lambda is the actual AFR divided by stoichiometric; 1.00 is correct for any fuel.
  • HC comes from unburned fuel and misfires, CO from rich mixtures, NOx from heat and spare oxygen.
  • A three-way catalyst needs lambda within about ±1 percent of 1.00 to clean up all three.
  • Exhaust gas readings fit patterns: rich, lean, misfire and exhaust leak each look different.
  • Air density falls with altitude and temperature, so a high-altitude engine breathes less air mass.
Stoichiometric ratio
The air-fuel ratio with exactly enough oxygen to burn all of the fuel.
Lambda (λ)
Actual air-fuel ratio divided by the stoichiometric ratio for the fuel in use.
Hydrocarbons (HC)
Unburned or partly burned fuel in the exhaust.
Carbon monoxide (CO)
A toxic gas produced when there is not enough oxygen to burn carbon fully.
Oxides of nitrogen (NOx)
Gases formed from the air's nitrogen and oxygen at high combustion temperatures.
Particulate matter (PM)
Fine soot particles, produced mainly by diesels and direct-injection engines.
Catalyst light-off
The temperature at which a catalytic converter starts to work effectively.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. An engine burning E10 runs at an AFR of 14.8:1. What is lambda?

    Show answer

    14.8 / 14.1 ≈ 1.05, about 5 percent lean.

  2. Which pollutant is the best single indicator of a rich mixture?

    Show answer

    Carbon monoxide.

  3. Tailpipe readings show 420 ppm HC and 3.5 percent O₂ at idle. What is the likely problem?

    Show answer

    A misfire, sending unburned mixture and its oxygen into the exhaust.

  4. Why does an engine make less power at altitude?

    Show answer

    The air is less dense, so each intake stroke draws in less mass of oxygen.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz