ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

主板PWM风扇电路设计:从啸叫根源到PCB布局完整避坑指南

主板PWM风扇电路设计:从啸叫根源到PCB布局完整避坑指南 “风扇啸叫”这个问题做主板或者做整机散热方案的工程师十有八九都撞上过。明明风扇本身没问题一上PWM调速就开始“嘶嘶”或者“吱吱”叫声音不大但特别烦人最后背锅的往往是风扇厂家。说实话很多时候问题出在主板这一侧的PWM风扇电路和PCB布局上。这篇文章就围绕主板PWM风扇电路的设计展开从控制原理、电路结构、元件选型到PCB布局避坑把我在实际项目中踩过的坑和验证过的做法一起捋出来。不管你是刚入门做硬件的新人还是被啸叫问题折腾过几次的工程师这篇文章都能给你一个可以直接参考的完整方案。1. 风扇为什么会啸叫——先搞懂PWM调速的原理1.1 PWM调速的本质不是在降压而是在“斩波”很多人第一次接触PWM风扇电路时容易把它跟线性调速混为一谈。线性调速是通过改变风扇供电端的电压大小来控制转速而PWM调速完全不同它是让风扇的电源引脚在“全开”和“全关”之间快速切换通过改变导通时间占空比来等效调节平均电压。打个比方线性调速就像用水龙头控制水流大小而PWM调速就像用高速开关的阀门阀门要么全开要么全关只是开的时间比例不同。对于风扇电机这种负载它内部的转子惯性会起到“平均”作用占空比高转得快占空比低转得慢。这里有个关键点PWM调速的开关频率和占空比直接决定了啸叫是否会出现。风扇内部的驱动电路特别是霍尔传感器驱动的无刷电机对供电电压的跳变非常敏感如果PWM频率落在可听范围内或者频率过高导致驱动芯片响应异常就会产生让人抓狂的噪声。1.2 啸叫的物理来源不止是“共振”那么简单我在排查啸叫问题时第一反应通常会去想“共振”但实际上PWM风扇啸叫的来源主要有三个第一是电磁啸叫。PWM开关动作会在风扇的线圈上产生高频电流纹波线圈在变化的磁场中会产生微小的机械振动这种振动频率如果落在20Hz到20kHz的可听范围内就会被耳朵捕捉到。尤其是在占空比很低比如20%的情况下电流脉冲的间隔拉长每一次开关冲击都变成“咔哒”声连续起来就成了“吱吱”声。第二是驱动芯片的响应问题。风扇内部的驱动芯片通常有自己的使能逻辑和反馈环路如果PWM频率过高超过芯片内部放大器的响应带宽芯片会进入一种“跟不上节拍”的状态输出波形畸变导致转子抖动。这种抖动往往伴随着明显的噪声而且转速越低越明显。第三是电路板本身的振动。这个经常被忽略——主板或者风扇插座附近的陶瓷电容如果恰好落在PWM频率的谐波点上会产生可闻的“啸叫”。这种噪声源头甚至都不在风扇上排查方向一错就白忙半天。考虑到这些问题PWM频率的选择就很关键了。Intel和AMD的公版设计规范里主板风扇接口的PWM频率推荐值通常是25kHz。为什么是25kHz因为这个频率高于人耳听觉上限20kHz正常情况下人听不到这个频率本身的开关噪声。但实际项目中我发现25kHz在部分风扇上仍然可能产生可闻噪声原因是谐波或者驱动芯片内部混频产生的差频落入了可听范围。后面会详细说怎么处理。2. 主板PWM风扇电路的整体设计思路2.1 四针风扇接口的标准定义设计主板PWM风扇电路之前先要把接口标准理清楚。目前主流的主板风扇插座都是四针的四根引脚的定义是固定的引脚信号名功能说明1GND电源地212V风扇供电正极通常直接接12V电源3TACH/FG转速反馈信号开漏输出输出频率与转速成正比4PWM调速控制信号5V电平开漏或推挽驱动重点说一下1脚和2脚虽然我在有些资料里看到“PWM四针风扇正负极”的说法但在实际设计中正极接12V、负极接GND是固定的PWM和FG都有各自的规范和注意点。3脚TACH信号是风扇内部的霍尔传感器输出的每转一圈通常会输出两个脉冲具体看风扇设计主板需要通过这个脉冲频率计算出风扇的实际转速。4脚PWM信号的电气规格需要特别注意规范里要求是5V逻辑电平但输入阻抗和驱动能力因风扇而异。部分老款风扇的PWM输入内部没有做上拉如果主板侧的驱动电路直接用开漏输出可能会出现在低占空比时电压不足、风扇停转或者转速异常的问题。2.2 主控侧PWM产生方式从MCU到专用EC主板端的PWM信号从哪里来根据不同产品定位主要有三种方式第一种是用主板上的EC嵌入式控制器直接产生。EC内部通常集成了多个PWM定时器可以输出频率可调、占空比可调的PWM信号。这种方案的好处是灵活可以通过EC的固件做各种温控策略。第二种是用独立的MCU产生比如很多DIY玩家用STM32F103的定时器输出PWM来控制调速风扇。STM32F103的定时器PWM输出模式算是非常典型的应用但这里我不展开讲代码只说硬件上要注意的MCU的GPIO驱动能力有限通常需要经过一级缓冲或者使用推挽输出模式不能直接驱动长距离的排线。第三种是直接用硬件PWM控制器芯片比如一些Super I/O芯片内部自带风扇控制模块。这种方案适合对稳定性要求高的服务器主板因为独立硬件的故障率比跑固件的方案低一个数量级。不管用哪种方式产生PWM信号主板端都需要做电平转换和驱动增强。EC或MCU的GPIO通常是3.3V电平而风扇接口的PWM信号规范是5V电平两者之间要加一级电平转换或驱动电路。2.3 我常用的PWM驱动结构开漏上拉RC直接说结论我目前在主板风扇电路上用的方案是开漏输出的驱动管加一个上拉电阻到5V再加上一个RC低通滤波器。整体结构如下主控芯片的PWM引脚3.3V电平通过一个限流电阻接到NPN三极管或NMOS管的基极栅极三极管MOS管的集电极漏极接上拉电阻到5V同时接RC滤波器滤波后的信号接到风扇插座的PWM引脚。这个驱动结构有两个作用第一个作用是电平转换。开漏输出结构搭配上拉电阻输出的高电平由上拉电压决定接5V就是5V的高电平轻松满足风扇PWM信号的5V规范。第二个作用是缓冲隔离。主控芯片的引脚不直接承担驱动电流而是由三极管MOS管来切换既保护了主控引脚也避免了风扇内部的干扰信号通过引脚反窜进主控。RC低通滤波器的作用稍后会详解简单说它可以降低PWM信号的上升沿和下降沿斜率减少电磁干扰同时也能抑制一部分啸叫。3. 核心电路细节与元件参数计算3.1 驱动管选型MOS管和三级管怎么选PWM信号本身是低压小电流信号驱动管的选型并不需要追求大电流能力但有几个关键参数必须注意第一是开关速度。PWM频率25kHz周期40微秒理论上要求驱动管的开关时间远小于40微秒一般建议开关时间不超过1微秒。普通的小信号NPN三极管比如MMBT3904开关时间在几十纳秒到几百纳秒不等基本够用如果追求更低的损耗和更干净的波形可以用2N7002这种小信号NMOS管栅极电容小开关速度更快。第二是耐压和电流。上拉电阻那边的电压是5V驱动管承受的电压也就5V左右20V耐压的管子绰绰有余。电流方面上拉电阻一般用1kΩ到10kΩ最大电流也不会超过5mA所以小信号管子完全能承受。第三是封装和散热。这个级别的功耗完全不需要考虑散热SOT-23封装已经是最常规的选择能用0402电阻就不要用0603给PCB省点面积。我个人的习惯是默认用2N7002来做PWM驱动管原因是栅极驱动电压门槛低3.3V的GPIO可以直接驱动不需要额外做电平匹配而且SOT-23封装的手工焊接和批量贴片都方便。如果项目里没有2N7002的库存用MMBT3904 NPN三极管做共射极开关也是完全可以的但要记得基极串联一个限流电阻阻值选1kΩ到4.7kΩ之间。3.2 RC参数计算兼顾EMI和响应速度RC低通滤波器的参数是整个电路里最需要仔细计算的环节。R和C的取值直接决定PWM信号的上升沿时间和波形完整性。先明确一个原则RC滤波器在PWM信号通路上的作用不是把方波变成正弦波只是把跳变的边沿“缓一缓”把高频分量滤掉一部分。如果RC时间常数太大PWM信号会变成三角波风扇内部驱动芯片可能无法正确识别高电平阈值导致转速失控。如果RC时间常数太小滤波效果不明显啸叫问题照样存在。我常用的经验公式是上升沿时间约等于2.2倍RC时间常数2.2×R×C。对于25kHz的PWM一个完整的周期是40微秒我一般把上升沿时间控制在1到3微秒之间。这样既过滤掉了高频谐波又不至于把方波破坏得太严重。具体计算示例选R10kΩC100pF时间常数为1微秒上升沿约2.2微秒。这个参数在25kHz频率下表现稳定我用过的几款主流风扇包括台达、AVC、猫头鹰都能正常识别没有出现转速漂移或停转问题。如果风扇线缆比较长或者电磁环境比较恶劣可以把C加大到220pF甚至在风扇插座旁边再加一个100pF的落地电容做二次滤波。但切记不要超过470pF否则低转速时信号波形畸变严重。3.3 TACH信号处理开漏输出和上拉的微妙关系TACH转速反馈信号是风扇内部霍尔传感器的开漏输出也就是说风扇内部只是把一个开关管的一端拉到地另一端需要外部上拉电阻提供高电平。这个上拉电阻的取值非常有讲究。先看TACH信号的电气特性风扇每转一圈输出2个脉冲部分风扇输出1个或4个假设风扇最高转速3000RPM那么每秒转50圈TACH脉冲频率最高就是100Hz。看这个频率好像随便选个电阻都行但实际上问题出在脉冲的上升沿和下降沿的对称性上。TACH信号是开漏输出下降沿是风扇内部管子主动拉低的速度很快但上升沿是靠外部上拉电阻对寄生电容充电实现的速度取决于RC时间常数。如果上拉电阻太大比如100kΩ上升沿变得很慢脉冲宽度测量不准确主板EC算出来的转速就会偏高或者偏低。我测试过的结果是上拉电阻选10kΩ比较均衡既能提供足够的驱动能力又不会让上升沿太慢。如果主控端的输入引脚有施密特触发器那上拉电阻选15kΩ或22kΩ也可以抗干扰能力反而更好。这里有一个很容易踩的坑TACH信号和PWM信号如果走线靠得太近PWM信号的跳变会通过寄生电容耦合到TACH上导致EC检测到错误的转速甚至误报风扇故障。后面PCB布局章节会专门说这个问题。4. PCB布局布线避坑指南4.1 地线分区和回流路径是重中之重风扇电路在PCB上看起来就是一个插座加几个分立元件但恰恰是这种“看起来简单”的电路最容易在布局时被随意处理最后出一堆莫名其妙的EMI问题。我设计主板或转接板时对风扇电路的地线处理有一个很明确的规则风扇接口的GND引脚必须直接、独立地回到主板的电源地平面绝对不能和PWM信号的地混在一起走。为什么这么较真因为风扇的电流不小一般0.2A到0.5A高转速风扇甚至到0.8A。风扇运行时GND线上会有持续的电流纹波如果这句地线和PWM信号的参考地共用一段细走线PWM信号的有效电平就会被地电位波动干扰。尤其是在占空比切换的瞬间地弹噪声可能会让PWM信号的阈值判断出错风扇控制就会出现随机抖动和噪声。具体操作上我通常会在风扇插座旁边放一个100nF的陶瓷电容和一个10μF的电解电容直接跨接在12V和GND之间。这两个电容的作用是给风扇提供一个低阻抗的本地电源回路减少瞬间大电流对主板全局电源的影响。4.2 PWM走线的3W原则和包地处理PWM信号的走线宽度和间距业界常规的做法是遵循3W原则即信号线与周围其他走线的间距至少是线宽的3倍。对于PWM信号我建议间距加宽到5到10倍线宽原因很简单这个信号是一个固定频率的方波谐波含量丰富是典型的干扰源。如果PCB空间允许给PWM信号做包地处理是最稳妥的方案。所谓包地就是在PWM走线的两侧各铺一条接地铜皮用过孔连接到地平面形成一个“地墙”把信号围起来。这就好比给信号线穿了件屏蔽服可以有效降低对外辐射和对外部干扰的敏感度。但包地要包完整才有意义。我见过不少设计走线包地了但只在起点和终点各打了一个过孔中间一大段地墙悬空那基本等于没包而且悬空的铜皮还会当天线用把噪声辐射得更远。正确做法是包地的铜皮每隔3到5毫米就打过孔连接到地平面确保整条地墙电位一致。4.3 TACH和PWM的交叉避让前面提到TACH信号受PWM干扰会导致转速误报这在布局阶段就要规避。具体做法是TACH和PWM这两条信号线尽量减少平行走线长度如果无法避免平行间距至少要不小于地线间距的两倍。还有一点很多人会忽略TACH信号的上拉电阻位置。上拉电阻应该靠近主控端的接收引脚放置而不是靠近风扇插座。为什么因为上拉电阻和TACH线上的寄生电容共同决定了上升沿时间如果电阻放在主控端整条走线的寄生电容都参与了RC充放电上升沿会变慢如果电阻靠近接收端走线电容的充电路径更短信号完整性更好。这个细节在实际测试中影响挺明显的。有一次在验证一块转接板时TACH信号测出来上升沿有近3微秒的拖尾EC读数忽高忽低排查了半天发现就是上拉电阻位置放错了挪到接收端后问题立刻消失。4.4 覆铜和过孔别让噪声有缝隙可钻在设计完风扇电路区域后我建议在风扇插座周围做完整的接地覆铜让所有地过孔形成一张密集的地网。这不仅是为了散热更关键的是为高频噪声提供最低阻抗的回流路径。许多PCB设计工具里可以设定覆铜与走线之间的安全间距我习惯设定为0.3mm以上避免覆铜边缘与信号线之间的寄生电容太大。另外过孔不要打在信号线上特别是PWM信号线过孔的寄生电容和电感会使信号边沿变差这在高速信号里是常识但在低频PWM上反而容易被忽视。风扇插座的机械固定脚如果连接的是PCB地一定要确保固定孔的周围有足够的过孔连接内外层地平面。机械固定脚的地连接能显著降低插座本身的EMI辐射这是我在对比测试中验证过的。5. 常见问题与排查技巧实录5.1 风扇啸叫问题排查流程如果你的电路做出来之后风扇确实出现了啸叫不要急着改风扇型号先按这个流程排查一遍第一步确认PWM频率。用示波器测量风扇插座PWM引脚的波形确认频率是不是在25kHz附近。如果频率低于18kHz啸叫几乎是必然的直接改固件的定时器参数把频率调上去就行。第二步查看PWM信号边沿。看波形上升沿和下降沿有没有明显过冲。过冲说明驱动管开关速度过快、RC滤波不足增加RC时间常数可以缓解。欠冲边沿太缓则说明RC时间常数过大信号已经变形需要减小C值。第三步检查占空比与噪声的关系。把占空比从小到大慢慢调同时听噪声变化。如果噪声只在某个占空比区间出现多半是风扇驱动芯片的内部振荡频率和PWM频率产生了差频这个通过微调PWM频率可以解决。第四步对比验证。把同一台风扇插到另一款主板或直接接12V电源不接PWM如果噪声消失说明问题就在你的驱动电路上如果噪声还在那就要怀疑风扇本身了。5.2 转速检测不准或检测不到转速检测问题分两种完全检测不到和读数偏高偏低。完全检测不到先量TACH引脚有没有被拉高。用万用表量风扇插座TACH和GND之间的电压应该在5V左右。如果是0V大概率是上拉电阻虚焊或者阻值选得太大比如100kΩ都没拉起来换10kΩ再试。读数偏高偏低多数是上升沿过缓导致的。TACH脉冲宽度测量是基于电平阈值比较的如果上升沿要花很长时间才过阈值等效于脉冲宽度变窄EC计算出的转速就会偏高。这时候把上拉电阻改小或者检查TACH走线是不是太长、寄生电容太大。另一个我踩过不少次的情况是TACH信号上串联了磁珠或电阻导致上升沿恶化。有些设计为了防EMI在TACH线上加磁珠但磁珠在高频时呈现高阻会让上升沿变慢。如果一定要加磁珠选几十欧姆阻抗的低频磁珠或者干脆不加。5.3 PWM信号PWM故障保护功能的误解关于“PWM故障保护”这个词网上讨论热度一直很高但很多理解是有偏差的。它并不是说PWM信号本身出现了故障后自动保护而是指主板EC通过PWM信号和TACH信号的对比判断风扇是否正常工作。具体逻辑是EC输出一个PWM占空比后会在一定时间内等待TACH信号返回对应的转速脉冲。如果PWM有输出但是TACH完全没有反馈EC就会判定风扇失效进入故障保护状态比如全速运转报警或者直接断电保护。这个机制对电路设计有一个重要影响TACH信号不是可有可无的它的可靠性直接影响系统的安全策略。在服务器主板设计里这个故障保护功能是硬性的如果TACH电路设计不当导致EC误判风扇损坏后果轻则报警重则触发整机断电。所以前面说的TACH上拉电阻、走线避让这些细节在关键设备上真的要较真。5.4 用示波器实测一次完整波形最后分享一个实操案例。有一次帮朋友调一块基于STM32F103的调速风扇板现象是转速低时噪声很大转速高时反而安静。示波器接在PWM驱动管的输出端发现波形在低占空比时出现了严重的振铃每个脉冲的上升沿和下降沿都有大幅过冲幅度甚至超过了5V的电平范围。这个振铃会直接耦合到风扇内部导致电机驱动紊乱啸叫就是这么来的。排查发现问题出在RC滤波器的C取值上。原设计用了1nF的电容RC时间常数达到10微秒理论上应该把边沿缓得足够平滑但实际上正因R和C都偏大驱动管输出端的阻抗和电容之间产生了谐振。把C改成100pFR保持10kΩ过冲明显减小啸叫也消失了。这个案例说明一个道理RC滤波器不是越大越好过大反而可能和走线电感形成LC谐振。参数计算完了之后一定要结合实测波形做微调不能图纸看着没问题就完事。6. 从原理图到量产设计验证清单6.1 原理图设计时的自查点原理图阶段就把潜在问题消灭掉比后期改板子省成本得多。我一般在原理图评审时会检查这几个点PWM驱动管基极或栅极的限流电阻是否到位。没有限流电阻驱动管可能因为瞬间电流过大而损坏也可能导致主控引脚过流。三极管基极限流电阻选1kΩ到4.7kΩMOS管栅极串联电阻选10Ω到100Ω。上拉电阻的供电网络是否干净。PWM的上拉电阻接5V这个5V最好从主板的5V电源直接引出不要在5V和地之间再串磁珠之类的滤波元件否则上拉电平可能被拉低到4V以下。风扇插座引脚定义是否和结构件一致。这是一个低级但致命的错误原理图里画反了PWM和TACHPCB上再怎么也救不回来。我习惯在原理图里把风扇插座的引脚定义以表格形式标注在图纸边缘评审时一目了然。6.2 PCB评审时重点关注的几个点PCB布局评审时我的关注点集中在元件位置和走线上。风扇插座的位置尽量靠近板边这样风扇线缆走线短不容易被其他信号干扰也方便整机装配。但如果插座靠近板边要特别注意ESD问题因为风扇线缆是裸露在机箱外面的容易引入静电放电。插座附近要放ESD保护器件比如压敏电阻或TVS管放置在插座引脚和地之间。走线方面12V到风扇插座的供电线要足够宽。我一般按照1A/mm²的载流能力来估算0.5A的风扇电流至少用0.5mm宽的走线。如果是多层板最好通过过孔引到电源层用完整的铜皮来供电这样散热和载流能力都比走线好得多。PWM信号和TACH信号放同一层的话尽量用差分走线的思路来处理即便它们不是差分信号保持同样的间距和长度对信号完整性也有好处。如果板层充裕我倾向于把PWM放在内层两边都是参考地平面抗干扰能力最好。6.3 量产前的波形和EMI测试设计验证的最后一步是整机测试。除了上面说的波形检查我还会做一次EMI预扫重点看PWM频率及其谐波点有没有超标。虽然这个测试通常在实验室里做但PCB设计阶段可以先做个简单的判断PWM信号走线是否经过接插件或排线如果是接插件和排线是最容易辐射噪声的地方建议在接头处预留一个到地的100pF电容位。另外风扇线缆的长度对波形影响很大。线缆越长寄生电容和电感越大波形边沿越差。如果线缆长度超过30厘米建议在风扇端并联一个100pF到220pF的电容对改善波形和EMI都有帮助。量产还有一个容易忽略的坑不同批次的风扇供应商PWM输入端的内部电路可能略有差异。同一个设计在A厂商风扇上完全正常换到B厂商就出现低速抖动。所以在物料选型阶段最好把市场上主流的几款风扇都拿来做兼容性测试记录每款的波形响应确保你的设计有足够的余量。EFM8BB10F8I-A有些低成本的方案会用这个型号的MCU来做风扇控制它的SMBus接口可以直接读取风扇的转速和温度信息如果你的设计用了类似的芯片注意它的PWM输出引脚要选择带有强驱动的端口否则信号质量可能不达标。7. 写在最后的经验之谈做主板PWM风扇电路设计这件事看起来是个“配角”电路但恰恰是因为它涉及了功率、模拟、数字和EMC四个领域所以细节特别多。我个人做了这么多年硬件最大的体会是风扇啸叫这类问题解决起来往往不是靠某一个“神药”式的设计而是靠每一个环节都做对一点点。如果你现在正被风扇啸叫折磨建议不要急着换方案先按顺序检查PWM频率、RC参数、驱动管选型、TACH走线这几个点。很多时候问题就出在其中一个被忽略的细节上。调试的时候手边常备一个示波器用波形说话比什么都准确。设计这块电路的时候还要记得风扇是机电一体化的东西它不像纯半导体器件那样“讲道理”不同的风扇有不同的电气特性。保持对波形和噪声敏感度多做几次兼容性测试你的设计才会真正稳得住。
返回列表