Abstract
Controlling fan speed as a function of temperature is a useful technique for reducing system noise and increasing the fan's lifetime. Integrated circuits (ICs) that can be used to control fan speed are discussed.
Brushless DC fan motors can be controlled using a variety of methods. The simplest method is on/off switching with a single transistor. For variable control of a fan's speed, Maxim offers several products with either linear outputs for driving the power supply of a 2- or 3-wire fan, or with PWM outputs for driving the control input of a 4-wire fan.
Regulating Fan Speed
When a fan's speed must be controlled accurately, consider using a fan controller with closed-loop RPM control. The MAX6650/MAX6651 were the first fan-controller ICs to make fan-speed regulation possible. The MAX6650/MAX6651 are closed-loop fan-control ICs that accept feedback from the tachometer output of a 3-wire fan. This makes programming fan speed straightforward without the user having to worry about startup or slow-speed reliability issues. Although both the MAX6650/MAX6651 can drive multiple fans (with tach feedback from only one of those fans), the MAX6651 has a provision to monitor the tachometer signals of up to four fans.
Figure 1. The MAX6650 is a true fan-speed regulator because it includes a tachometer output fan in its feedback loop.
Figure 1 depicts a typical application for the MAX6650 which regulates fan speed based on a code programmed into its fan-speed register. The code forces the fan tachometer period to be equal to the scaled register value. Because typical fans produce two tachometer pulses per revolution, the required fan speed register value is calculated as:
Where:
![]()
KTACH = value programmed into the fan speed register
tTACH = period of the tachometer signal
KSCALE = prescalar value (set in configuration register of the MAX6650/MAX6651 from 1 to 16 with a default of 4)
fCLK = MAX6650/MAX6651 clock frequency (254kHz, typ)
Other Advantages of the MAX6650/MAX6651
The MAX6650/MAX6651 not only regulate fan speed, but also perform a wealth of other functions. There are watchdog functions that detect when the control loop is not regulating, when fan speeds are beyond programmed watchdog limits, and other general purpose digital functions. Since these subjects are beyond the scope of this article, refer to the MAX6650/MAX6651 data sheet for details on all other functions.
The MAX6650/MAX6651 free the designer from the complex issues associated with closed-loop amplifier design, leaving only selection and installation of the pass transistor. Once a given pass transistor has been selected, if the following equation is satisfied then no additional heatsinking is necessary:
Where:![]()
TJMAX = maximum allowable junction temperature from transistor manufacturer's data sheet
TA = maximum expected ambient temperature
PD = power dissipation (same as Equation 3 above)
θJ-A = thermal resistance, junction to ambient, from transistor manufacturer's data sheet
If the equation is not satisfied, a heatsink must be selected to satisfy the following:
Where:![]()
RθSA = heatsink thermal resistance (from heatsink manufacturer's data sheet)
RθJC = pass transistor junction-to-case thermal resistance (from pass transistor manufacturer's data sheet)
The possibility of a total short circuit across the fan has not been discussed. If this happens, then the full current available from the fan power supply will flow through the pass transistor. If this condition is a consideration, then that current and voltage value should be used in all the power dissipation and heatsinking calculations. Alternatively, current limiting circuitry could be included on the pass transistor, such as the circuit shown in Figure 2. Calculate the value of the current limit resistor according to:
Where ILIMIT is the desired value of current limit. Note that this current limit circuit is temperature sensitive. The 0.6 term in the equation is actually the base-emitter voltage of the current limit transistor which varies according to -2.2mV/°C. This can be useful in that it acts to reduce the current limit as temperature rises.![]()
Figure 2. When current limiting is necessary for pass transistors, this circuit provides that function.
Control Up to Four 3-Wire Fans with the MAX6620
When you need RPM control of more than one fan, the MAX6620 provides great flexibility. Not only does it control up to four fans independently, but it also has a programmable output voltage ramp rate. This ensures that fan-speed changes happen slowly enough to make them virtually inaudible to anyone near the equipment. Figure 3 shows a typical implementation of the MAX6620 controlling four 3-wire fans.
Figure 3. The MAX6620 shown here is a 4-channel linear fan-speed controller using external pass transistors to supply variable power to the fan. The MAX6620 monitors tachometer signals from the fans and adjusts the power-supply voltage so that the desired tachometer frequency is achieved.
Controlling 4-Wire Fans with the MAX6639
A 4-wire fan simplifies the fan-speed control challenge by providing a "speed control" input. This input is usually intended to accept a PWM input signal whose duty cycle determines the fan's speed. In some fans the speed control input accepts a voltage signal instead.
The MAX6639 monitors the tachometer outputs of two fans and adjusts the duty cycles of its PWM outputs to force the fans to the correct speeds. As with the MAX6620, the MAX6639 includes several features such as detection of fan failures and adjustable PWM ramp rate to help reduce the audibility of fan-speed changes. In addition, the MAX6639 includes 2 channels of temperature sensing and a programmable temperature-to-RPM control algorithm that enables automatic control of fan RPM as a function of temperature. Figure 4 shows a typical implementation of the MAX6639 controlling a pair of fans.
Figure 4. MAX6639 controlling two 4-wire fans. The MAX6639 measures two temperatures and can control fan RPM based on the measured temperature.
{{modalTitle}}
{{modalDescription}}
{{dropdownTitle}}
- {{defaultSelectedText}} {{#each projectNames}}
- {{name}} {{/each}} {{#if newProjectText}}
-
{{newProjectText}}
{{/if}}
{{newProjectTitle}}
{{projectNameErrorText}}