The ultimate solution to elegant fan control and monitoring in the PC would be a cooling fan with an I2C or SMBus interface built in. However, this doesn’t exist, at least not yet. A close emulation of this type of functionality can be achieved, though, by combining an LM81 hardware monitor IC with a cooling fan. This combination allows programming and monitoring of fan speed over the Serial Interface, as well as providing an Alarm output, particularly useful in SMBus environments. In addition, the LM81 can monitor the power supplies of both itself and the fan.
The LM81 provides a DAC for fan control. To drive a fan, simply amplify this signal with a circuit providing a low saturation voltage. To preserve the fidelity of the tachometer pulses from these fans, the fan voltage control must be performed on the high side of the fan rather than the ground side. These requirements are met by the topology of the fan drive circuit (Fig. 1).
In the figure, R2 and R3 form a feedback network that provides the gain needed to boost the 0- to 1.2-V DAC output to a 0- to 12-V (less saturation) output. R4 biases Q1 into its linear region. R4 can optionally be returned to −5 V if a 1k resistor is used. Q2 doesn’t incorporate any current limiting in the event the fan shorts, which often isn’t a problem, because many 12-V supplies include current limiting.
Optional current limiting is shown in Figure 1b if needed. The IRFD9110 FET specified is one of several tested, and it’s anticipated that this circuit will work satisfactorily with any FET chosen. At first glance it seems that stability and freedom from oscillation is a concern, but square-wave testing has shown plenty of phase margin on the circuit when tested with several fans.
Figure 2 depicts the complete I2C fan system along with an LM81 hardware monitor IC. The fan tachometer signal is returned to the LM81, which provides a count in an internal register that’s inversely proportional to fan speed. The LM81 compares this value to a programmable threshold. If the limit is exceeded, it asserts the INT# output, which can then be connected to any available open-collector interrupt line or the SMBus —Alert line.
Fans don’t start reliably at reduced voltages, so when programming the DAC for slow fan speeds, the DAC should always be commanded to full output, then returned to the low speed value. Fans will have to be characterized for their functional operating range, which begins from 5 to 7 V. Avoid operating the fan in this “stalled” region by commanding the DAC to zero, because the fan will dissipate power without moving. The circuit in Figure 1 provides up to an 11.8-V output into a 200-mA fan.