摘要
如今的系统要在越来越小的封装内实现不断增加的性能,系统热耗散成为了一个十分严重的问题。为了避免热关机甚至系统故障,维持适当的温度十分关键。因而,许多系统需要外加风扇来保持足够的空气流通。本应用笔记介绍了风扇控制模块的概况,提供了一个利用MAX6870监控六个风扇的简单控制电路。
风扇模块概述
大型电信、网络系统经常使用高性能处理器,从而在一个简单的机架上实现更多功能。例如,一个曾经支持12条ADSL的线卡现在可以支持64条,之前能够耗散24W (每条ADSL为2W)功率的电路板现在必须耗散128W的功率。用强劲的冷空气气流降低相关热阻,以达到散热要求。
大多数电信系统包含很多风扇。为保证在一个风扇出现故障的情况下系统仍能正常工作,系统经常放置超过理论所需数目的风扇(N+1结构),这样,一个系统可能会用到6至8个风扇。每个风扇都有自己的电源,使风扇可以很容易地替换而不需要关闭整个系统。一个子机架风扇组(图1)可能包括多个风扇模块(譬如6个),它们由-48V电池总线供电,且由一个风扇控制模块统一控制。
图1. 典型的子机架风扇模块
基本的风扇模块(图2)包含一个隔离型DC-DC转换器,根据风扇类型它可以将-48V电池电压转换成+12V或+24V。在转换器之前使用一个热插拔控制器,允许在系统不掉电的情况下更换风扇。同时每个风扇为控制模块提供一个与转速成比例的数字输出(PWM或PFM)。
图2. 风扇模块的系统框图
这种类型的风扇系统可以有很宽的芯片选择范围。各种各样的热插拔控制器可以满足不同性能级别的需求。譬如,Maxim的MAX5901只提供一个简单的解决方案,而MAX5920则可以提供更高的精度,这两种控制器都可以直接由-48V驱动。隔离电源可以选择MAX5021;内置功率MOSFET的高集成度转换器可以选择MAX5043,它只需要一个变压器、一个电容、一个输出二极管和几个电阻就可以提供50W的输出功率,而且不需要散热片。
风扇控制单元可以集成到系统内部,这种控制方式需要给多个风扇模块提供一个接口,同时还必须能够检测每个风扇模块是否工作正常。当一个风扇出现故障时,它必须能够通知主控制单元。另外,我们还希望它能够诊断并定位究竟是哪个风扇出现了故障。这种控制器可以通过很多方式实现上述功能。例如,通过计时器和分离器件组成的阵列来实现。但随着风扇数量的增加,分离器件的数量也增加,增大设计难度。另外一种方法利用微处理器(µC)的I/O口,可以减少分离器件数目,但需要适当编程。
第三种而且也是相对简单的替代方法是使用高集成度、EEPROM可配置、内置ADC的16位可编程电源排序器/监控器。例如,MAX6870,它包括6路可配置的输入电压检测器、4个通用输入、2个看门狗、8个可编程输出以及4kb用户EEPROM。可以通过I²C兼容串行接口进行读写和编程。除了检测电压、看门狗信号、外部温度以及其他逻辑输入信号外,该器件还能实现诸如风扇控制的功能,最多可同时检测10个风扇。
6风扇控制系统
为了便于阐述,我们先介绍一个风扇的控制系统,然后扩展到6风扇系统。
我们定义报警信号用于判决被检测风扇是否转动。目前大多数风扇都可以提供一个集电极开路输出信号(VOC),它通过一个电阻上拉到外部电压(VS) (本例从4V上拉到30V)。风扇每转一圈,该VOC输出几个(M)幅度在0V到VS间的脉冲(图3)。
图3. 图2风扇模块的输出
如果风扇以每秒N转的速度转动, 则VOC每秒产生N × M个脉冲。输出是一组频率为N × M赫兹的方波。如果将该输出接至MAX6870的一个可编程输入端,当风扇停止转动时MAX6870的其中一个输出端PO_将提供指示。
如果VS = 5V,输出脉冲的范围就是0V到5V。根据风扇停止时的电压(VS或0V),设定输入欠压或过压门限为2.5V,譬如当输入电压高于(低于) 2.5V时监控器输出为“真”。该配置下,当风扇开启时,PO_输出不被触发,输出端产生5V到0V的连续脉冲。如果风扇停止转动,则触发输出,电压将保持高电平或低电平,具体取决于风扇的工作极性设置。
这个方案重要的一点是选择一个尖峰滤波器为每个PO_输出提供合适的时间常数。该滤波器一定要能容忍由于风扇电源抖动造成的频率脉冲突变。对于MAX6870而言,所需的时间常数在25µs到1600ms之间。
例如,当M = 2, N = 54rps时, VOC的脉冲频率为108赫兹,周期为9.26ms。如果需要严格控制风扇,选择PO_抗尖峰时间常数为25ms,大约是1.35转。考虑到风扇电源的波动(以及任何热效应的影响),如果风扇停止转动约2秒钟,则认为风扇已经出现故障。在这个例子中,1.6秒的暂停时间比较合适。这意味着PO_报警会在风扇出现故障后变高(或低,取决于编程设置) 25ms或1.6s。
上述例子说明了一个风扇的控制。对于6风扇系统,仍可使用MAX6870,并扩展到6个输入和6个输出。假设每个风扇模块都有独立的转速输出,我们可以使用上述架构用一个控制器分别控制每路风扇。输出可以定义为开漏和线或方式,提供一路报警信号(图4)。如果需要将信号极性反相或在触发报警前插入额外延时,可以将上述信号连至一个GPI_和多个PO_,并且增大时间常数。
图4. 基于MAX6870电源排序器/监控器的6风扇控制器
器件配置通常是一件十分耗时的工作,而MAX6870不需要软件工程师为微处理器或其他器件编程。Maxim提供图形界面的评估板,大大简化了配置过程(图5)。
图5. MAX6870编程界面
通过简单地指向界面中的某一个模块并输入适当的数值(如输入信号、时序等),工程师可以十分容易地配置MAX6870。经过适当配置后,点击“Load to Memory”按键对芯片装载设置。MAX6870是第一款为复杂系统设计的多输入控制器。由于精度高、易于编程等特点,大大简化了系统设计。
类似文章发表于EEPN 2006年5月。