Programmable Fan Controllers
Overview of Fan-Control ModulesLarge telecom and networking systems often employ high-performance processors that allow greater functionality within a single "rack." For example, a line card that once supported 12 ADSL lines can now support up to 64 lines. As a result, circuit boards that once dissipated 24W (2W per ADSL line) must now dissipate 128W. That level of dissipation can be accommodated with a strongly forced flow of cool air that reduces the pertinent thermal resistance.
Most telecom systems include a large number of fans. To ensure proper operation in the event of a fan failure, the system usually includes more fans than needed (N+1 structure), so a typical system might have six to eight fans. Each fan has its own power supply, so the fans are easily replaced without powering down the system. A sub-rack fan assembly (Figure 1) includes multiple fan modules (six in this case), supplied by a -48V battery bus and monitored by a fan-control module.
Figure 1. A typical sub-rack of fan modules.
A basic fan module (Figure 2) includes an isolated DC-DC converter that converts the -48V battery power to +12V or +24V, depending on the fan type. A hot-swap controller precedes the converter to allow fan replacements without powering down the system, and each fan produces a digital output (PWM or PFM) proportional to its rate of rotation for use by the control module.
Figure 2. Block diagram of a fan module.
A wide choice of ICs can be used in this type of fan system. Numerous hot-swap controllers, for instance, are available with different levels of performance. The MAX5901, for example, offers a simple solution, while the MAX5920 offers high accuracy. Both can operate directly from a -48V supply. The MAX5021 is well suited for an isolated supply, whereas the MAX5043 is ideal for a highly integrated converter with power MOSFETs on board. The MAX5043 requires only a transformer, capacitor, output diodes, and a few resistors to produce 50W without needing a heatsink.
A fan-control unit can be integrated to complete this system. Such control must provide an interface with many fan modules, and it must be able to detect whether a module is not working properly. When a fan fails, it must flag the master control unit. It is also desirable to diagnose and identify which fan has failed. Such a controller can take many forms. It can be implemented, for example, with an array of timers and additional discrete components. As the number of fans increases, however, the number of discrete components increases, making this approach less desirable. Another technique, multiple serial I/Os on a microcontroller (µC), minimizes discrete components but requires proper programming.
A third and fairly simple alternative utilizes a highly integrated, EEPROM-configurable, programmable hex power-supply sequencer/supervisor with ADCs. The MAX6870, for example, includes six configurable input voltage detectors, four general-purpose inputs, two configurable watchdogs, eight programmable outputs, and a 4kb user EEPROM. All are available and programmable via an I²C-compatible serial interface. Besides monitoring voltage, watchdog signals, external temperature, and other logic input signals, the device can function as a fan controller, with the ability to monitor up to 10 fans.
Implementing a 6-Fan SystemTo illustrate, we will first introduce a single-fan system, and then extend the system to six fans.
We begin by defining an alarm signal that asserts if the monitored fan stops. Most of the fans currently available offer an open-collector (VOC) output signal that can be pulled up to an external voltage level (VS) using a resistor. (The pullup in our example is from 4V to 30V.) Such a VOC output pulses from 0V to VS several times M for each turn of the fan (Figure 3).
Figure 3. Output details for the fan module in Figure 2.
If the fan spins at N revolutions per second, then VOC produces N × M pulses each second. The output is a square wave with a frequency of N × M Hz. If this output is connected to one of the MAX6870 programmable inputs, then one of its PO_ outputs asserts when the fan stops turning.
If, for example, VS = 5V, the output pulses between 0V and 5V. Depending on the voltage level when the fan stops (VS or 0V), set the input under- or overvoltage threshold to 2.5V, such that the monitor output is true when the input voltage is above (below) 2.5V (and vice versa). In this configuration the PO_ output is de-asserted while the fan is turning, and the output voltage pulses between 5V and 0V continuously. If the fan stops turning, the output asserts, and the voltage is held either high or low depending on how the fan's active polarity is programmed.
It is important for this implementation to choose a glitch filter that provides the correct time constant for each PO_ output. The filter must, however, be sufficiently relaxed to allow frequency-pulse transients due to oscillation in the fan supply. For the MAX6870, the required time constants range from 25µs to 1600ms.
Consider, for example, a scenario in which M = 2 and N = 54rps. The VOC pulsing frequency is therefore 108Hz, and the pulse period is about 9.26ms. If strict control of the fan is needed, select a PO_ deglitch time constant of 25ms, which corresponds to about 1.35 turns of the fan. Considering fan-supply oscillations (and any restrictions due to thermal characteristics), we assume that a fan has failed if it stops for about two seconds. For this example, a 1.6s timeout is appropriate. That means the PO_ alarm goes high (or low, depending on the programming) 25ms or 1.6s after the fan failure.
The example above shows how to implement the function for one fan. For a 6-fan system, we use just one MAX6870, and extend the above to six inputs and six outputs. That arrangement allows one monitor for each of the six fans, assuming an independent tachometer output from each fan module. The outputs can be configured as open drains, and OR'd together to provide one alarm signal (Figure 4). If the opposite signal polarity or an extra delay is needed before the alarm asserts, connect the above common signal to a GPI_ pin and one more PO_ output, and add a further time constant.
Figure 4. A 6-fan monitor based on the MAX6870 supply sequencer/supervisor.
It might appear time consuming to configure such a device, but the MAX6870 does not require a software engineer to write code for the controlling µC or other device. Maxim makes available an evaluation kit whose graphical user interface simplifies the configuration process (Figure 5).
Figure 5. Screenshot of the MAX6870 programming software.
By simply pointing to a block of the interface and typing the appropriate value (input signal, timing, etc.) an engineer without software experience can easily configure the MAX6870. Once the setup is satisfactory, program the IC and ready it for the application by clicking the "Load to Memory" button. The MAX6870 is the first multi-input controller designed for complex system monitoring. Accurate and configurable, it simplifies the design of modern systems.
A similar article appeared in the May 2006 issue of EEPN.