Fan-Speed Regulators and Monitors
with SMBus/I2C-Compatible Interface
Maxim Integrated 21
MAX6650/MAX6651
The MAX6650 regulates fan speed in the following
manner. The output of an internal 254kHz oscillator is
divided by 128, generating a roughly 2kHz signal. This
signal is divided by 1 plus the value in the speed regis-
ter and is used as a reference frequency. For example,
02h in the speed register will result in a 667Hz [2kHz /
(02h+1)] reference frequency, which is then compared
against the frequency at the tachometer input divided
by the prescaler value. The MAX6650/MAX6651
attempt to keep the tachometer frequency divided by
the prescaler equal to the reference frequency by
adjusting the voltage across the fan. If the tachometer
frequency divided by the prescaler value is less than
the reference frequency, the voltage across the fan is
increased. Remember that the tachometer will give two
pulses per revolution of the fan. The following equations
describe the operation.
When in regulation:
[fCLK / (128 x (KTACH + 1))] = 2 x FanSpeed / KSCALE
where fCLK = oscillator frequency (either the 254kHz
internal oscillator or the externally applied clock), KTACH
= the value in the speed register, FanSpeed = the
speed of the fan in revolutions per second (Hz),
KSCALE = the prescaler value (1, 2, 4, 8, or 16).
Solving for all four variables:
KTACH = [(fCLK x KSCALE) / (256 x FanSpeed)] - 1
KSCALE = [256 x FanSpeed x (KTACH + 1)] / fCLK
FanSpeed = KSCALE x fCLK / [256 x (KTACH + 1)]
fCLK = 256 x FanSpeed x (KTACH + 1) / KSCALE
If the internal oscillator is used, setting fCLK to 254kHz
can further reduce the equations:
Equation 1: KSCALE = FanSpeed x (KTACH + 1) / 992
Equation 2: KTACH = (992 x KSCALE / FanSpeed) - 1
Equation 3: FanSpeed = 992 x KSCALE / (KTACH + 1)
Enter closed-loop mode by entering 10 into bits 5 and 4
of the configuration register.
Note that in equation 3, the fan speed is inversely pro-
portional to (KTACH + 1). This means the regulated fan
speed is a nonlinear function of the value written to the
speed register. Low values written to the speed register
can result in large relative changes in fan speed. For
best results, design the system so that small values
(such as 02h) are not needed. This is easily accom-
plished because an 8-bit speed register is used, and
fan-speed control should rarely need more than 16
speeds. A good compromise is to design the system
(by selecting the appropriate prescaler value) so that
the maximum-rated speed of the fan occurs when the
speed register equals approximately 64 (decimal).
Although 64 is a good target value, values between 20
and 100 will work fine.
The prescaler value also affects the response time and
the stability of the speed-control loop. Adjusting the
prescaler value effectively adjusts the loop gain. A larg-
er prescaler value will slow the response time and
increase stability, while a smaller prescaler value will
yield quicker response time. The optimum prescaler
value for response time and stability depends on the
fan’s mechanical time constant. Small, fast-spinning
fans will tend to have small mechanical time constants
and can benefit from smaller prescaler values. A good
rule of thumb is to try the selected prescaler value in
the target system. Set KTACH to around 75% of full
scale, and watch for overshoot or oscillation in the fan
speed. Also look for overshoot or oscillation when
KTACH is changed from one value to another (e.g., from
75% of full-scale speed to 90% of full scale). If there is
unacceptable overshoot or if the fan speeds up and
slows down with KTACH, set it to a constant value;
increase the prescaler value.
Enter the appropriate prescaler value in bits zero to 2 of
the configuration register.
Fan speed is a trade-off between cooling requirements,
noise, power, and fan wear. In general, it is desirable
(within limits) to run the fan at the slowest speed that
will accomplish the cooling goals. This will reduce
power consumption, increase fan life, and minimize
noise. When calculating the desired fan speed, remem-
ber that the above equations are written in rotations per
second (RPS), where most fans are specified in rota-
tions per minute (RPM).
Write the desired fan speed to the speed register.
Example:
Assume the following:
• 12V fan is rated at 2000RPM at 12V.
• Use the internal oscillator (fCLK = 254kHz).
• Desired fan speed = 1500RPM (25RPS).
First, calculate an appropriate prescaler value
(KSCALE) using equation 1. Attempt to get KTACH as
close to 64 as possible for the maximum speed of
2000RPM.
• Set FanSpeed = 33.3RPS (2000RPM/60).
• Set KTACH = 64.
• Solving equation 1 gives KSCALE = 2.18.