AUTO-320 · Lesson 9 of 12 · 20 min

Automatic climate control electronics

Harold Kemp's SUV comes back in November, months after its compressor and condenser were replaced in Lesson 3, with a new and unrelated complaint. "I set it to 21 (70) and leave it on auto," Harold says, "and it roasts me. The fan runs high, the air is hot, and twenty minutes later I'm turning it down to 17 (62) to get comfortable. My wife says it's the same on her side." The air conditioning and the heater both work. What does not work is the system's judgement, and that makes this a job about sensors, a module and the logic that connects them.

Automatic climate control lets the driver choose a temperature instead of a blower speed, a vent setting and a blend position. A control module reads several sensors, works out how much heat to add or remove, and sets the blower, the doors, the recirculation and the compressor to get there and stay there. This lesson explains the sensors the module uses, how it decides what to do, how it shares information with the other modules on the vehicle, and how to diagnose a system that controls badly when every part seems to work.

What the module is trying to do

The driver's setting is not a vent temperature. It is a target for how the cabin should feel. To hit it, the module estimates how much heating or cooling the cabin needs right now. If the cabin is much hotter than the target, it runs maximum cooling: cold air, high blower, panel vents and often recirculation. As the cabin approaches the target, it raises the outlet temperature, slows the blower and, in cold weather, shifts air toward the floor. In steady driving, it trims the outlet temperature and blower continuously to balance the heat coming into or leaving the cabin. Most modules also manage warm-up, holding the blower low on a cold morning until the coolant is warm enough to give useful heat, and manage fog prevention, running the compressor and fresh air when the glass is at risk.

The module works out its demand from a weighted combination of the difference between the set temperature and the in-car temperature, the outside temperature and the sun load, each of which changes how much heating or cooling the cabin needs. The figure shows the idea. A single number, sometimes called the target outlet temperature or blend demand, then drives the blend door, the blower speed and the mode. Every maker tunes this differently, but every system depends on its sensors telling the truth.

A block diagram of automatic climate control. On the left, inputs: driver set temperature, in-car temperature sensor with its aspirator, ambient temperature sensor, sun load sensor, evaporator temperature sensor, duct temperature sensors, coolant temperature and high-side pressure from other modules over the network. In the centre, the climate control module calculates a heating or cooling demand. On the right, outputs: blower speed, blend door positions, mode doors, fresh-recirculation door and the compressor request sent to the engine control module.
Automatic climate control: sensors in, a calculated demand, and blower, doors and compressor out.

The sensors

Most climate control temperature sensors are thermistors: small resistors whose resistance changes with temperature. The common type, a negative temperature coefficient or NTC thermistor, has a high resistance when cold and a low one when hot. The module supplies it with a 5 volt reference through a fixed resistor and reads the voltage at the junction, which falls as the sensor warms. An open circuit makes the sensor read extremely cold, and a short to ground makes it read extremely hot; most modules recognize both and set a code.

  • The in-car temperature sensor measures the cabin air, usually from a small grille in the dashboard or headliner. A thermistor in still air would read slowly and be fooled by sun on the grille, so the sensor is aspirated: a small fan, or a tube connected to the HVAC case that uses the blower's airflow, draws a steady stream of cabin air across it.
  • The ambient, or outside air, temperature sensor usually sits behind the front bumper. Because it can be heated by the engine and the road when the vehicle is stopped, the module filters its reading, for example by updating it only slowly or only when the vehicle is moving.
  • The sun load sensor, a photodiode on top of the dashboard, measures the intensity of sunlight, and on some vehicles its direction, so the module can add cooling on a sunny day and favour the side of the cabin in the sun.
  • The evaporator temperature sensor, in the evaporator fins or just downstream, lets the module prevent freezing and control a variable compressor's output.
  • Duct or discharge temperature sensors measure the air actually leaving the HVAC module, so the module can close the loop on its blend doors.
  • Some vehicles add a humidity and windshield temperature sensor near the mirror, so the module can see fog coming and prevent it.

Other information arrives over the network. The engine control module shares the coolant temperature, engine speed and the air conditioning high-side pressure; the body module shares the vehicle speed and whether doors are open. The climate module in turn sends its compressor request to the engine control module, which decides whether to grant it. A fault on the network can therefore produce strange climate behaviour, such as no heat because the module has no coolant temperature and assumes the engine is cold.

# NTC thermistor: resistance to temperature with the beta equation, and the voltage the module reads
import math
r25, beta = 10000, 3950          # a typical 10 kilohm sensor, illustrative
pullup = 10000                   # module's fixed resistor to the 5 V reference
def temp_from_r(r):
    return 1 / (1 / 298.15 + math.log(r / r25) / beta) - 273.15
for r in (32650, 19900, 12490, 10000, 6530, 4370):
    t = temp_from_r(r)
    v = 5 * r / (r + pullup)
    print(f"sensor {r:6,} ohm: {t:5.1f} C, module reads {v:4.2f} V")
Output
sensor 32,650 ohm:   0.6 C, module reads 3.83 V
sensor 19,900 ohm:  10.3 C, module reads 3.33 V
sensor 12,490 ohm:  20.1 C, module reads 2.78 V
sensor 10,000 ohm:  25.0 C, module reads 2.50 V
sensor  6,530 ohm:  34.9 C, module reads 1.98 V
sensor  4,370 ohm:  44.9 C, module reads 1.52 V

How the module decides

A simplified version of the module's logic shows why a faulty sensor causes the kind of complaint Harold describes. The module compares the cabin temperature with the setting, adds a correction for the outside temperature and the sun, and uses the result to choose the outlet temperature and blower speed. If the in-car sensor reads colder than the cabin really is, the module believes the cabin is cold and keeps adding heat. The cabin gets hotter and hotter, but the sensor never sees it, so the module never backs off.

# A simplified automatic climate demand (illustrative tuning, not any maker's)
def demand(set_t, in_car, ambient, sun_w_m2):
    error = set_t - in_car                     # positive means the cabin needs heat
    outside = 0.25 * (set_t - ambient)         # colder outside needs more heat
    solar = -0.008 * sun_w_m2                  # sun adds heat, so less heating is needed
    return error * 2.0 + outside + solar
def outputs(d):
    outlet = max(5, min(60, 30 + d * 2.2))
    blower = min(100, 25 + abs(d) * 6)
    return outlet, blower
for label, in_car in (("sensor reads true cabin air", 23.5), ("sensor reads stale cold air", 15.0)):
    d = demand(21, in_car, -5, 150)
    outlet, blower = outputs(d)
    print(f"{label:<28} in-car {in_car} C: demand {d:+5.1f}, outlet {outlet:4.1f} C, blower {blower:3.0f} %")
Output
sensor reads true cabin air  in-car 23.5 C: demand  +0.3, outlet 30.7 C, blower  27 %
sensor reads stale cold air  in-car 15.0 C: demand +17.3, outlet 60.0 C, blower 100 %

With the sensor reading the true cabin temperature, slightly warm, the module calls for a mild outlet temperature and a gentle blower. With the sensor reading 8 °C (15 °F) too cold, it calls for hot air and a much higher blower, exactly what Harold feels. Turning the setting down to 17 (62) fools the module into reducing its demand, which is why that made him comfortable.

Diagnosing Harold's system

Kiran starts with codes; there are none, which rules out an open or shorted sensor. Next she looks at the scan tool's sensor data with the SUV parked in the shop for an hour. Every temperature should read close to the shop's air temperature of about 19 °C (66 °F): ambient, in-car, evaporator and the duct sensors all read within a degree or two of each other, except the in-car sensor, which reads about two degrees lower. That is suspicious but not conclusive.

She runs the system on auto at a setting of 21 (70) and records data for fifteen minutes. The duct sensors show the outlet air reaching 55 °C (131 °F), the blower stays near 80 percent, and a thermometer on the dashboard reads a cabin temperature of 27 °C (81 °F) and rising. The in-car sensor reads only 18 °C (64 °F). The module is doing exactly what its sensor tells it to. Kiran holds a piece of tissue at the in-car sensor's grille: it should be drawn gently toward the grille by the aspirator, and it does not move at all.

Behind the lower dashboard trim, she finds the aspirator hose, a small plastic tube that runs from the sensor housing to a fitting on the HVAC case, hanging loose. The fitting at the case end was knocked off, probably when the evaporator was replaced during the Lesson 3 repair, at another shop's subcontracted dash removal. Without airflow, the sensor sat in a pocket of still air behind the dashboard that stayed cool, well below the cabin temperature, while the cabin heated up. She reconnects the hose and secures it with a clip, checks that the tissue is now drawn to the grille, and repeats the test. The in-car reading now tracks the dashboard thermometer within about a degree, and the system settles to a comfortable 21 °C (70 °F) cabin with a quiet blower.

# In-car sensor check: compare with a reference thermometer over a drive (readings every 3 minutes)
reference = [19.0, 22.5, 25.0, 26.5, 27.0]
sensor_before = [17.0, 17.6, 18.0, 18.1, 18.2]
sensor_after = [19.2, 22.0, 24.6, 26.1, 26.8]
def worst(ref, sens):
    return max(abs(r - s) for r, s in zip(ref, sens))
for label, data in (("aspirator hose loose", sensor_before), ("hose reconnected", sensor_after)):
    w = worst(reference, data)
    print(f"{label:<22} largest error {w:4.1f} C: {'fault' if w > 2.0 else 'tracks the cabin'}")
Output
aspirator hose loose   largest error  8.8 C: fault
hose reconnected       largest error  0.5 C: tracks the cabin

Testing sensors directly

When a sensor's reading is in doubt, it can be tested off the vehicle or in place. With the connector unplugged, a thermistor's resistance is measured with an ohmmeter and compared with the maker's chart at a known temperature; warming the sensor in the hand should make an NTC sensor's resistance fall steadily. With the connector in place, back-probing the signal wire shows the voltage the module sees, and comparing it with the scan tool's reading checks the wiring. A sun load sensor can be tested by shading it and shining a light on it while watching its reading. An ambient sensor that reads too warm after the vehicle has been stopped in traffic is usually working normally; its strategy expects heat soak and corrects once the vehicle moves.

Many climate control modules also have a built-in self-test or diagnostic mode, entered with a button sequence on the control panel or through the scan tool. It can sweep the doors through their travel, run the blower through its speeds, display sensor values and stored codes, and run the door calibration from Lesson 8. Running it at the start of a diagnosis, and again after a repair, is a quick way to confirm the system's basic functions.

Modules, software and the network

Climate control modules are computers and, like engine and transmission modules, they can have software faults that a maker corrects with an update. They can also have configuration settings, such as whether the vehicle has a rear unit, heated seats or a particular compressor, that must match the vehicle. A replacement module usually has to be programmed or configured to the vehicle with the maker's software; installing a used module from another vehicle often gives odd behaviour or no communication. And because so much of the system's information comes over the network, a climate complaint can be caused by a fault in a completely different module. Kiran's scan tool shows a network topology view that lists every module and whether it is communicating; checking it takes a minute and can save an hour.

Worked problem

No heat on a cold morning

An automatic system gives cold air for twenty minutes on a winter morning, then works normally. The coolant temperature on the engine module reaches normal in eight minutes. What should be checked?

Show solution
  1. The climate module holds the blower low until it thinks the coolant is warm, for warm-up control.
  2. Check what coolant temperature the climate module itself receives over the network.
  3. If the climate module's coolant value is missing or lags, look for a network or engine module communication problem.
  4. If its value matches, check the blend door and the heater core flow as in Lessons 7 and 8.

Answer: Compare the coolant temperature the climate module sees with the engine module's value before suspecting the heater.

Common mistakes

  • MistakeReplacing the climate module because the system controls badly.

    InsteadCheck every sensor reading against the real temperatures first.

  • MistakeIgnoring a loose aspirator hose or a blocked in-car sensor grille.

    InsteadConfirm air is drawn across the in-car sensor.

  • MistakeTreating a heat-soaked ambient reading as a fault.

    InsteadAmbient sensors are filtered; check the reading once the vehicle is moving.

  • MistakeInstalling a used module without configuring it.

    InsteadProgram and configure replacement modules to the vehicle.

  • MistakeForgetting that other modules supply climate inputs.

    InsteadCheck network communication and shared values.

Summary and key terms

  • Automatic climate control sets blower, doors and compressor to reach a set cabin temperature.
  • The module's demand combines in-car, set, ambient and sun load inputs.
  • Most temperature sensors are NTC thermistors; open reads cold, short reads hot.
  • The in-car sensor must be aspirated to read the cabin air accurately.
  • A sensor that reads wrong but in range sets no code and causes poor control.
  • Compare every sensor with the real temperatures and with each other after a cold soak.
  • Self-tests, network checks and correct configuration are part of every diagnosis.
Automatic climate control
A system that controls blower, doors and compressor to hold a set cabin temperature.
NTC thermistor
A sensor whose resistance falls as its temperature rises.
In-car temperature sensor
A sensor that measures cabin air temperature, usually aspirated.
Aspirator
A small fan or air tube that draws cabin air across the in-car sensor.
Sun load sensor
A photodiode that measures sunlight intensity on the vehicle.
Ambient temperature sensor
A sensor that measures outside air temperature, usually behind the bumper.
Target outlet temperature
The outlet air temperature the module calculates it needs.
Self-test
A built-in routine that checks sensors, doors and blower and shows codes.

Practice problems

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

  1. What does an open circuit in an NTC sensor's wiring make it read?

    Show answer

    Extremely cold.

  2. Why must the in-car sensor be aspirated?

    Show answer

    So that a steady stream of cabin air passes it; still air or sun on the grille would make it read wrong.

  3. After a cold soak, all sensors should read about the same. What does one reading several degrees off suggest?

    Show answer

    That sensor, its location or its airflow is faulty.

  4. Why might a climate complaint be caused by another module?

    Show answer

    The climate module receives coolant temperature, pressure and speed over the network.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz