Thermal Management

The thermal management node does its best to manage the heat in the engine compartment of the car, trying to optimise for ambient conditions and driving style.

Components and Stock-Standard Operation

Radiator FanGetting rid of excess heat is done by means of a radiator for the engine coolant and by the condensor of the airconditioning system which is mounted in front of the radiator. Their heat removal capacity is increased by operating an electric radiator fan, which in this case happens to be a 2-speed jobbie. aka impulse and warp drive. 🙂

Standard operation is to not run the fan until the radiator thermoswitch detects a coolant temperature of 95°C or thereabouts. Radiator Fan SwitchThis results in the fan being run at low speed to try to remove excess heat from the coolant. If that’s not enough airflow and the temperature keeps rising to 105°C or more, then the thermoswitch causes the fan to run a maximum speed.

Meanwhile, whenever the airconditioning is switched on, the radiator fan also runs at the lower speed to promote airflow to remove heat from the refrigerant.

This may be completely unnecessary at higher road speeds and not significantly increase the airflow through the condenser or the radiator at all. A thermal management unit could use a road speed signal to be smarter about when to run the fan.

Coolant Temperature Sensor - InstrumentsOil Temperature SensorThe car is also blessed with two other temperature sensors, used by the instruments in the dashboard. An NTC coolant temperature sensor (G2) on the coolant flange on the front of the cylinder head. Another NTC sensor reports the oil temperature (G8) to the MFA.

There’s a coolant level sensor (G32) in the radiator expansion tank that is normally monitored by the instruments, producing aCoolant Level Sensor blinking temperature warning if there’s not enough coolant in the tank.

The engine has a high-temperature thermoswitch mounted on the cylinder head to prevent heat-soak from causing problems with the engine when the car is parked with the engine off. The thermoswitch closes at about 110°C, triggering an after-run relay to run the radiator fan at low speed to push out some of the heat under the engine lid.

Ambient air temperature is measured by a sensor at the front of the car, away from the radiator, for display in the MFA of the instrument panel. It provides information that will probably be useful to thermal management so this node will also capture that and make the temperature available on The LINbus for e.g. display via the instrument proxy node.

Compressor ClutchAirconditioning requires a compressor and when the HVAC controls require it, the compressor clutch is engaged on to pump heat from the inside of the car to the condensor at the front of the car. Several safety switches protect people and the system from worse stuff happening.

ThermoswitchA high-temperature thermoswitch unloads the engine by preventing the compressor from running when the engine gets too hot.

A low-pressure switch for the refrigerant prevents the compressor from running when there’s not enough refrigerant. in the system. That protects the compressor from damage

Last, but not least, a refrigerant high-pressure switch closes when there’s a high cooling load. The radiator fan switches to warp drive (maximum speed) to maximise airflow through the condensor and to increase the rate of heat removal.

Thermal Management Node

The thermal management node can do all of that, initially using the standard thermoswitches and sensors. A later implementation will replace the thermoswitches and sensors with 1-wire digital sensors, reducing the pin-count whicle improving operational flexibility, information quality and redundancy.

Failsafe circuit to run radiator fanWiring of the node must have a limp-home mode that allows the vehicle to be operated in a limited manner, if the node misbehaves. The failsafe is to use the ignition-on signal with an unloading relay to run the radiator fan at low speed whenever the ignition is switched on. This is easy to implement with a pair of relays and a pair of diodes.

When either the starter is running (50) or the node asserts AOK, it energises relay K1 which prevents the ignition-on signal (15) from energising the second relay K2, which, when energised, connects the battery (30) to the radiator fan’s V7 low-speed motor input.

Several measures can be taken to protect the engine, etc. from the consequences of a sensor or switch failure. To determine radiator fan speed can be regulated by using the coolant temperature sensor’s output, and failing that the inlet manifold high-temperature  and A/C high-temperature switches. If the engine temperature is detected to be excessive by any of the alternative, then the radiator thermoswitch is probably faulty.

Fan Strategy

The node will use the coolant sensor’s output to determine fan speed, with radiator thermoswitch, etc as additional information sources. Using a continuous signal from the sensor allows the radiator fan speed to be regulated at variable speed (using PWM), taking into account all the switch inputs as baseline.

If A/C has been enabled and the compressor clutch engaged, the fan speed will be set to be at least high enough to exceed a nominal, low speed, even if coolant temperature is still too low. When the compressor clutch disengages, the last fan speed will be maintained for a maximum period of time, or until the compressor clutch is again engaged; whichever comes first. That ensures that the condensor is cooled sufficiently, without imposing an unnecessary electrical load.

When the high-pressure refrigerant switch initially (first time after engines start) closes, the fan is run at maximum speed until the switch opens, whereupon fan speed will be reduced in small steps (down to the nominal minimum), each taking a nominal period of time (several seconds), until the switch again closes. On such a subsequent closure, the fan speed is quickly stepped up until the switch again opens. This asymetric saw-tooth approach hunts for a fan speed that is closely matched to the varying cooling load (and capacity).

If the engine is switched off, then the previous fan speed will be maintained for a short period (except if cranking for a restart) to remove condensor heat. Coolant temperature and battery voltage will then be used to determine the longer-term cool-down fan behaviour. The possibility of heat-soak from the block leading to an excessive engine compartment temperature is dealt with by the 110°C thermoswitch on the cylinder head. If that closes, then the fan will restart at low speed, provided the battery isn’t too weak.

The node’s own internal temperature is measured. If upon engine shutdown that temperature rises “dangerously” over several minutes, then the fan will be run at low speed to remove heat from the engine compartment.

If LINbus communications fail, detected by the master not talking to the node for a “long” time, the A/C clutch will disengage as there is a loss of command signal from the HVAC node; but fan-speed control will continue to operate based on available signals.


The engine has finite power output and an airconditioning compressor load is substantial. So it’d be nice if the load on the engine were taken into account in deciding if the compressor clutch should be engaged. Frequent cycling of the compressor can lead to premature replacement/repairs, so the instantaneous engine load must be used with care.

Engine load can be imported from the LINbus; or rather exported by the LINbus master when it exceeds the bounds set as “interesting” by the thermal management node during bus initialisation.

The arrival of “high load” information will be used by the node to disengage the compressor clutch. During acceleration, the load may change intermittently to a low one (during gear changes) and the compressor should not cut in again during those intervals. A return to less load should be maintained for 3 to 5 seconds before the compressor is again run.

When cruising at high speed, this may also impose what is a high load situation, but one doesn’t want to get a hot heat while doing it. So the node has to allow the compressor to run again as needed if there’s a constant, high load for many (>20 or so) seconds, the reasonable time that one could maintain “hard” acceleration in any gear.

It is also helpful to run the engine at lower temperature at higher load. The target operating temperature for the node under low load should be high to reduce fuel consumption, but heat removal at high power lbecomes critical, exascerbating e.g. knock. The node will manage fan speed to aim for a 90°C coolant temperature (at the cylinder head coolant flange) under high load and 110°C at other loads.

Due to thermal inertia, it’s not useful to switch willy-nilly between target temperatures. A high-load scenario may be engaged ASAP but would not be relaxed for a considerable period (e.g. 2 minutes) after the load is reduced as there may soon, again be high load.

Sleepy Time

The node will go to sleep, disabling all outputs, when instructed by the LINbus master and the ignition is off; or if the ignition is switched off and the fan hasn’t been run for a period of time. It will wake if the 110°C thermoswitch closes, the ignition is switched on or if the LINbus wakes it up.

Other Goodies

As the battery is close to the node and the node knows when the engine is being cranked for starting, it’s possible for the node to measure both “no-load” and cranking voltages. This can assist in quantitatively predicting end-of-life for the battery by e.g. another node recording such voltages along with ambient temperature.

Summary of I/O

Signal Type Direction Wire mm2
Battery (30) Analog, Power supply In 4
Ignition (15) Digital In 0.35
Starter (50) Digital In 0.35
Radiator Thermoswitch Digital, 2 bits In 0.35
Coolant Temperature Analog In 0.35
Coolant Level Digital In 0.35
Manifold 110C Digital In 0.35
A/C Coolant 119C Digital In 0.35
A/C Refrig. 3 Bar Digital In 0.35
A/C Refrig. High Pressure Digital In 0.35
Ambient Air Temperature Analog In 0.35
Node Temperature Digital, internal 1-wire In
Radiator Fan Motor PWM high current Out 2.5
A/C Clutch Digital power switch Out 1.0
AOK to fail-safe relay Digital, low power Out 0.35

Supply and chassis common wire sizes both 4mm2 on a power connector and 0.5mm2 for both also brought in on the separate LINbus connector.

LINbus Quantities

  • Road Speed
  • Coolant temperature
  • Oil temperature
  • Ambient air temperature
  • Node states bits: A/C clutch, A/C refrig. 2Bar/HighP, Coolant level, Manifold 110°C, Coolant 119°C, Radiator 95C/105°C
  • A/C enable / clutch engage
  • Engine load
  • Fan PWM value
  • Battery no-load voltage
  • Battery cranking voltage
  • Node temperature

Quantities in italics are “imported”. Others are local quantities available for export by request from the LINbus master. Obviously, some quantities are of interest at a greater frequency than others.