news 2026/10/7 7:07:08

低成本PWM风扇控制器PCB设计实战:从原理图到打样调试全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
低成本PWM风扇控制器PCB设计实战:从原理图到打样调试全流程

这款方案最打动人的不是“能用”,也不是“开源”,而是“2块钱的元器件成本,还能把功能做全”。如果只把它当成一个普通的风扇调速模块,你大概率会错过它真正的价值:从原理图选型、PCB布局到成本控制,整套流程本身就是一堂非常好的低成本嵌入式硬件设计课。这篇文章是该系列的第 3 篇,前两篇已经把需求和原理图方案基本定下来了,这一篇我们完整走一遍 PCB 设计阶段的决策过程、关键步骤和验证方法。如果你正准备做类似的小型硬件开源项目,或者想弄清楚“为什么别人的板子能那么便宜”,这篇内容值得收藏。

1. 一个“2块钱包”的风扇控制器,PCB 到底在设计什么

风扇控制器这种产品看起来很简单:一个 MCU 输出 PWM,一个 MOS 管负责驱动风扇,再加一两个按键和 LED,电路图半小时就能画完。但真正做过的人知道,麻烦全在后面。

第一是成本问题。2 块钱的元器件预算,意味着主控要便宜、MOS 管要便宜、阻容要便宜,连 PCB 面积都要控制在很小的尺寸。省成本不能靠找最便宜的料,而是靠选型时算清楚每一分钱花在哪里。

第二是信号问题。PWM 信号本身不复杂,但风扇是感性负载,MOS 管开关瞬间会产生很大的电流变化,如果 PCB 布局走线不合理,轻则转速波形难看,重则干扰温度采样、导致按键失灵,甚至让 MCU 复位。

第三是散热问题。这个项目里 MOS 管要持续流过几安培的电流,铜箔宽度、过孔数量、敷铜面积,都会直接影响长期可靠性。

第四是可制造性问题。个人开源项目大多没有量产条件,板子通常是手焊或者小批量贴片。焊盘大小、元件封装、丝印位置、测试点,都要考虑手工焊接的体验。

所以说到底,PCB 设计在这个项目里承担的职责不是“把网表变成板子”,而是要在成本、性能、可制造性三者之间做出取舍。这块板子能不能稳定跑起来,有一半的答案在原理图里,另一半就在 PCB 上。

2. 硬件方案回顾与 PCB 设计边界

做 PCB 设计之前,先要把上一阶段确定的硬件方案梳理清楚。这不是废话,因为后面所有的布局布线决策都取决于你选了什么主控、什么功率器件、什么供电方案。

从功能需求看,这款风扇控制器需要具备:

  • 至少 1 路 PWM 输出,频率建议 25kHz 左右;
  • 驱动能力覆盖常见 12V 电脑风扇,峰值电流至少 2A;
  • 温度采集接口,支持 NTC 热敏电阻;
  • 手动/自动模式切换;
  • 低成本的显示方案,比如 LED 指示灯或 OLED 小屏;
  • 供电输入兼容 5V 或 12V 环境。

围绕这些功能,BOM 成本大致可以压到下面这个量级:

功能模块器件参考型号数量成本量级
主控8位或 Cortex-M0 内核 MCUSTC8G1K08 / GD32E230 / STM32C01111 元左右
PWM 功率输出N-MOSFETAO3400A 等低压逻辑电平 MOS10.2 元左右
温度采样NTC 热敏电阻 + 电阻10k NTC + 10k 分压电阻1+10.1 元左右
供电低压差 LDO 或小 DC-DC根据输入电压选择10.2 元左右
按键/指示轻触按键 + LED + 限流电阻2 个按键 + 2 个 LED若干0.2 元左右
接插件排针/接线端子2.54mm 排针或 XH2.54若干0.3 元左右

这么算下来,单纯元器件成本确实可以控制在 2 元附近,前提是你没有算 PCB 打样费、焊接费用和运费。这也是为什么标题里说“2 块钱”——它指的是 BOM 物料成本,而不是整个项目的落地成本。

这里还需要明确一个设计边界:显示方案不同,成本差异会非常大。如果只用一个 LED 表示工作状态,电路和 PCB 都非常简单;如果要上 OLED 显示屏,成本会立刻增加 10 元以上,而且 PCB 面积、接插件数量、MCU 引脚资源都要重新考虑。我看到的开源方案通常会把 PCB 上预留扩展焊位,默认版本不带屏幕,但留出 I2C 或 SPI 接口,让用户自己焊屏。这个思路很适合低成本项目,PCB 阶段也建议按“兼容显示扩展”来做。

3. 原理图设计要点:低成本的秘密都在这里

原理图阶段看似简单,其实决定了 PCB 阶段的大部分问题。这里挑几个关键电路逐个说明。

3.1 主控最小系统

低成本方案里,主控选择可以走两条路线:一是 8 位 MCU,比如 STC8G、STM8 这类,价格很低,开发环境也简单;二是 Cortex-M0 内核 MCU,比如 GD32E230、STM32C0 系列,性能更强,适合后期扩展 PID、曲线拟合等功能。

无论选哪一颗,最小系统都要包含电源去耦电容、复位电路、调试接口。特别要注意的是,如果这颗 MCU 是 QFN 封装或者引脚很密的 TSSOP 封装,PCB 设计时焊盘间距、过孔位置都需要提前规划,不然量产焊接良率会很受影响。

去耦电容不要只画一个 100nF。MCU 供电引脚旁边放一个 1uF~10uF 的电解或陶瓷电容,加上 100nF 高频去耦电容,是小系统稳定工作的基础。这部分成本不超过 0.05 元,完全没有必要省。

3.2 PWM 功率输出电路

功率输出级是整块板子的核心,也是最容易出问题的地方。

常见做法是 MCU 的 PWM 引脚直接驱动 N-MOSFET,用逻辑电平 MOS 管(Vgs(th) 比较低的那种),这样不需要额外的栅极驱动芯片。例如 AO3400A 这类,Vgs 在 4.5V 时导通电阻很低,3.3V 驱动也能凑合,但如果 MCU 的 IO 电压只有 3.3V,需要仔细看一下数据手册里的导通电阻曲线,确保在低 Vgs 下流过 2A 电流时压降可以接受。

栅极串联一个 10Ω~47Ω 的电阻,可以减缓 MOS 管的开关速度,降低 EMI 和电压尖峰。这个电阻的成本可以忽略,但对波形质量影响很大。

风扇电机是感性负载,MOS 管关断瞬间会产生反向电动势。如果风扇是两线制的,需要在电机两端并联一个续流二极管;如果风扇是四线 PWM 调速的,则不需要在板子上额外加续流二极管,但要在接口附近预留位置。

值得注意的是,很多电脑风扇的额定电流只有 0.1A~0.5A,启动瞬间电流会高一些,2A 的驱动能力已经留出了足够余量。如果你打算用来驱动更大功率的直流电机或水泵,MOS 管的封装和 PCB 走线就要重新评估了。

3.3 温度采样电路

NTC 热敏电阻最常见的是 10k 阻值,B 值 3435 或 3950。电路形式上就是一个分压器:供电电压通过固定电阻和 NTC 串联,中间节点接到 MCU 的 ADC 引脚。

这个电路本身没有任何难度,但 PCB 布局时要考虑一个重要问题:NTC 放在哪里。如果是板载温度采样,NTC 应该放在靠近发热源的位置,比如 MOS 管旁边,或者板子边缘以便接触被测对象。如果你想把 NTC 外置,就需要在板子上留一个 2pin 连接器,这个时候 PCB 布局反而简单了,把 NTC 放在接插件旁边即可。

ADC 参考电压 Vref 如果是 MCU 的电源电压,那么 VCC 的稳定性会直接影响温度读数。所以在供电设计时,不要偷懒直接把 VCC 给 ADC 做参考,有条件的话用内部参考电压或者单独的分压稳压,能明显提高温度测量精度。

3.4 供电方案

供电部分的选择,直接影响整块板子的发热和效率。

如果输入只有 5V,而且负载只有 MCU 和风扇,用一颗 LDO 是最简单的做法。但大多数机箱风扇是 12V 供电,如果 MCU 需要 3.3V,用 LDO 从 12V 降到 3.3V,压差接近 9V,即使电流只有 20mA,功耗也有 0.18W,虽然不高,但白白浪费。

更合理的设计是:12V 直接给风扇供电,3.3V 供电再单独由 LDO 或小 DC-DC 从 12V 降压。对于电池供电或输入电压比较高的场景,用 DC-DC 更划算。参考搜索里提到的“升压降压电路 PWM”相关讨论,这类小功率 DC-DC 的 PCB 布局其实比很多人以为的敏感,反馈电阻采样点的位置会影响输出电压纹波,后续章节会专门讲到。

3.5 显示与输入

按键是机械触点,按下和释放瞬间会有抖动,硬件上可以加 RC 滤波,但大多数情况在固件里做软件消抖就够了,PCB 上把按键焊盘布置在板边,方便外壳开孔。

LED 指示灯要串限流电阻,电流控制在 2mA~5mA 即可,不必太大。如果选用 0603 封装的 LED,手焊接起来略费眼睛,但成本更低。

显示接口建议采用标准 I2C 的 OLED 屏连接器,比如 4pin 的 1.27mm 或 2.54mm 排针。这样默认不焊屏幕,板子依然能通过串口或者 LED 工作;后续加屏幕,直接插上模块就能用,固件也只需要适配 I2C。

3.6 原理图检查清单

在进入 PCB 阶段之前,强烈建议做一次系统性的原理图检查:

  • 每个电源引脚都有去耦电容;
  • MOS 管栅极有串联电阻,源极接地可靠;
  • NTC 分压点没有接错,ADC 引脚不超过 MCU 耐压;
  • PWM 引脚和风扇驱动级匹配,不会倒灌电流;
  • 接插件引脚定义清晰,反接时有保护或有明确标识;
  • 所有器件都有采购渠道,封装与实物一致。

这些检查看起来琐碎,但每条都对应一个实际的“翻车”场景。比如接插件反插,轻则无法工作,重则烧毁 MOS 管或 MCU 引脚。

4. PCB 布局:把电流路径画在脑子里

原理图只是“电路逻辑”,PCB 布局才是把逻辑变成物理世界的第一步。很多新手只看连通性,根本不在意电流方向,结果做出来的板子功能时好时坏,这就是布局出了问题。

4.1 板框与尺寸

低成本板子的第一原则是面积越小越好。PCB 打样价格通常按照面积和拼板数量计算,面积减半,成本几乎减半。2 块钱成本目标的板子,尺寸一般控制在 20mm x 20mm 到 30mm x 30mm 之间,具体取决于你想塞多少个接插件。

常见做法是画成矩形,四角加 2.2mm 或 3mm 的安装孔,方便用铜柱固定在外壳里。如果是嵌入到机箱内部使用,甚至可以不要安装孔,直接用排针固定在主板上,这样面积还能再小一点。

PCB 板厚默认 1.6mm,除非有特殊需求,否则不用改。板材用 FR-4,2 层板,铜厚 1oz。这些参数都是常规工艺,嘉立创、捷配这一类的打样工厂都能直接生产,不会产生额外费用。

4.2 布局分区:功率区与控制区

整个板子要分成两个明显的区域:功率区和控制区。

功率区包括:电源输入接插件、MOS 管、续流二极管(如果有)、风扇接插件。这一部分的电流大、dv/dt 高,布线要短粗。

控制区包括:MCU、晶振、去耦电容、按键、LED、NTC 分压电路。这一部分是弱信号,布线要远离功率区的开关节点。

两个区域的“分界线”就是 MCU 的 PWM 输出引脚到 MOS 管栅极的那根走线。这根走线是信号的桥梁,布局时尽量让它短,并且不要和温度采样的模拟信号平行走长距离。

在这个板子上,因为功率不大,不需要像开关电源那样做严格的“热回路”分区,但养成这个习惯,以后做大功率 PCB 会少踩很多坑。

4.3 关键器件位置

  • MCU 放在板子中心偏一侧,引脚朝外,方便布线;
  • 去耦电容尽可能靠近 MCU 电源引脚,中间不要有其它走线穿过;
  • MOS 管放在功率输入和风扇接口之间,源极朝地,漏极朝风扇;
  • NTC 电阻如果外置,放在接插件旁边;如果内置,放在 MOS 管附近,但同时要通过走线远离数字信号的干扰;
  • 按键放在板边,LED 放在按键旁边,方便外壳开孔和指示;
  • 调试接口(SWD 或串口)放在板子一侧边缘,短排针露出即可。

其中最容易忽略的是去耦电容的位置。很多人原理图画得没有问题,但因为布局时电容离 MCU 太远,导致效果很差。去耦电容的物理位置比容值选取更重要,这是一个经常被低估的经验值。

5. PCB 布线:这只是 2 层板,但别小看它

2 层板的布线自由度不如 4 层板,但只要设计合理,应付这个项目绰绰有余。布线时重点把握以下几个方面。

5.1 PWM 信号走线

PWM 信号从 MCU 出来到 MOS 管栅极,走线宽度不需要特别宽,10mil 就够。但这条线要尽量短、尽量直,不要绕圈,不要穿过有干扰的区域。

更重要的规则是:PWM 走线不要和温度采样 ADC 走线平行。数字信号边沿跳变会产生耦合噪声,如果 ADC 线正好平行走了 2cm,温度读数就会抖动,甚至在 PWM 占空比变化时出现明显毛刺。如果无法避免平行,就要拉开距离,或者在地线之间插入一根地线隔离。

5.2 功率回路与铜箔宽度

风扇电流从电源接口流入,经过 MOS 管,再经过风扇回到电源地,这是一个闭合回路。PCB 设计的关键是让这个回路的面积尽量小。

MOS 管的源极到地、电源地到风扇接口的地,这两段是功率地回路的核心。铜箔宽度的估算很简单:1oz 铜厚下,1mm 线宽大约能承受 1A~2A 的电流(具体还取决于温升和环境),考虑到过孔和接插件的损耗,建议功率走线至少做到 1mm~1.5mm 宽,必要时在铺铜区域整片连接。

如果使用过孔换层,不要只打一个过孔。功率路径上的过孔至少打两个,最好呈阵列排列,否则单孔过流能力有限,还可能成为热瓶颈。

5.3 地线处理

2 层板的地的设计直接决定了 EMC 表现。这块小板的功率电流不大,地线可以不用做太复杂的隔离。推荐的做法是:

  • 底层大面积铺地,作为公共参考地;
  • 顶层功率区和控制区的地通过短而宽的走线连接到底层地平面;
  • 不要在功率地和控制地之间做“单点接地”的割裂设计,除非是更大的系统、更敏感的模拟电路。

很多新手听到“单点接地”就到处割地,结果把地平面割得支离破碎,反而增加了回路面积,干扰更严重。对这个项目来说,完整的底层地平面就是最好的参考设计。

5.4 EMC:MOS 管开关边沿

MOS 管每秒钟开关 25000 次,每次开关都会产生高频噪声。减缓开关边沿的一个常见方法就是增大栅极串联电阻,从 10Ω 改到 33Ω 或 47Ω,MOS 管开关损耗略增,但噪声明显下降。对风扇控制器这类负载,这个折中是值得做的。

续流二极管要靠近电机接口放置,越近越好。如果留的位置太远,续流路径变长,关断尖峰还是会通过走线辐射出去。

5.5 敷铜与测试点

板子画完之后,在顶层空余区域也要敷铜,敷铜接地。顶层敷铜会降低布线难度,也能提高 EMC 性能。注意敷铜不要形成“死铜”——那些孤岛状的铜皮,既没有电气连接,还可能成为天线,建议手动删除或调整走线把它们连上地。

测试点虽然是可选项,但对调试很重要。至少留出以下测试点:GND、VCC、PWM 输出、ADC 温度点、MOS 管栅极。用普通的 1.27mm 或 2.54mm 排针孔代替专用测试点即可,成本为零,调试时万用表和示波器探头都有地方放。

6. 从 PCB 到生产文件:导出的不只是 Gerber

画完 PCB 不等于事情结束了,生产文件的导出和检查同样重要。这里以主流免费 EDA 软件为例,流程大致如下。

首先是 DRC。DRC 是 Design Rule Check 的缩写,它会按照你设置的线宽、间距、过孔尺寸等规则检查整个板子。导出 Gerber 前必须跑一遍 DRC,把所有错误清零。常见的错误包括:

错误类型典型原因处理方式
clearance violation两条走线间距小于规则设定调整走线或修改间距规则
unconnected pin引脚没有连接到任何网络回到原理图检查电气连接
missing solder mask焊盘被大面积绿油覆盖重新设置阻焊开窗区域
stubs过孔或走线分支过长删除短桩或调整走线走向

DRC 通过之后,再执行“生成 Gerber”操作。输出的文件包括:顶层线路层、底层线路层、顶层阻焊层、底层阻焊层、顶层丝印层、钻孔文件、板框层。把这些文件打包压缩,上传到打样工厂的网站,就能看到 3D 预览图。

这里要注意的坑是:丝印层不要写太多文字。MCU 型号、版本号、电源电压标注这些是必要的,但任何过小的文字在 PCB 生产时都可能因为工艺精度问题变得模糊。丝印文字高度一般建议不小于 0.8mm,线宽不小于 0.15mm。

板子的版本信息非常建议写在丝印上。开源项目迭代快,板子版本写清楚,后期反馈问题时,大家才知道你说的是哪一版。

7. BOM 成本审计:2 块钱到底怎么省的

很多人看到“2 块钱全功能”这个标题,第一反应是“这怎么可能”。实际上,低成本硬件项目的核心逻辑不是把每个器件买到最便宜,而是从系统层面减少器件数量、降低工艺要求。

先说数量。如果一颗 MCU 内部已经有高速 PWM 和 ADC,就不需要额外买 PWM 芯片和 ADC 芯片;如果 MOS 管可以直接用 MCU 的 PWM 驱动,就不需要栅极驱动芯片;如果可以用软件消抖,就不需要按键的 RC 滤波电路。每减少一个器件,省下的不只是一颗料的钱,还有 PCB 面积、焊接工时和潜在的故障点。

然后是封装选择。0603 电阻电容比 0805 便宜且占面积小,但也更难手焊;贴片 LED 比直插 LED 贵一点点,但省掉了人工插件成本。对个人玩家来说,选择自己能焊接的封装等级很重要。

下面是一份参考级物料清单,价格按常见电商零售价估算:

类别器件封装数量估算成本(元)
主控Cortex-M0 MCUTSSOP20 或 SOP811.0~1.5
MOSN-MOSFETSOT-2310.1~0.2
电阻0603 10k / 10Ω / 47Ω06036~80.1
电容0603 100nF / 10uF06033~40.1
NTC10k 热敏电阻060310.1
LED0603 灯珠060320.1
按键轻触开关4pin SMD20.2
接插件排针或 XH2.54直插3~40.3

合计大约 2 元出头。注意这只是元器件成本,没有包括 PCB 板费、焊接费和快递费。但即使加上这些摊薄成本,做 10 块板子,平均每块的成本也远低于买一个成品控制器。

需要特别提醒的是,BOM 成本审计不能只看采购价。如果为了省 0.1 元选了非常规封装,焊接时报废几块板子,成本反而更高。开源项目的初衷本来就是让更多人能自己复现,“能买到、能焊上”比“绝对低价”更重要。

8. 焊接、烧录与验证调试

PCB 打样回来之后,进入实际焊接和调试阶段。焊接顺序建议从电源到信号:先焊电源部分的电容和 LDO,再焊 MCU 最小系统,然后是 MOS 管和接插件,最后焊按键、LED 和显示接口。

焊完先不要急着插风扇。第一步用万用表量电源对地阻抗,确认没有短路;第二步上电量各电源电压是否正常;第三步用示波器看 PWM 输出波形。

下面是 PWM 初始化代码的一个参考示例,以 STM32 的 HAL 库为例,重点展示如何把定时器配到 25kHz 左右。实际芯片不同,寄存器会不一样,思路是通用的:

/* 文件路径:src/pwm.c * 以 STM32 Cortex-M0 内核 MCU 为例,定时器时钟 64MHz */ #include "pwm.h" #include "stm32f0xx_hal.h" TIM_HandleTypeDef htim2; TIM_OC_InitTypeDef sConfigOC; void FAN_PWM_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); /* PA0 复用为 TIM2_CH1 */ GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* 64MHz / 64 = 1MHz;1MHz / 40 = 25kHz */ htim2.Instance = TIM2; htim2.Init.Prescaler = 64 - 1; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 40 - 1; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init(&htim2); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 20; /* 初始占空比 = 20/39 ≈ 51% */ sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); } void FAN_PWM_SetDuty(uint16_t percent) { if (percent > 100) percent = 100; if (percent < 10) percent = 10; /* 低于10%可能无法启动风扇 */ __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, (uint32_t)(percent * 39 / 100)); }

这段代码里的几个细节值得注意。PWM 频率选择 25kHz,是因为这个频率超过了人耳可听范围,能有效避免风扇电机发出高频啸叫。占空比下限设置在 10%,是为了保证风扇有足够的启动电流,许多风扇在占空比过低时无法启动。如果需要风扇完全停转,应直接切断输出或使用独立的开关控制,而不是把占空比设到 0%。

温度到占空比的映射,推荐用分段线性插值,不要写一堆 if-else 嵌套:

/* 文件路径:src/control.c * 温度-占空比映射,分段线性 */ int16_t temp_to_duty(int16_t temp) { if (temp <= 35) { return 10; /* 低速 */ } else if (temp < 60) { return 10 + (temp - 35) * 70 / (60 - 35); /* 线性段 */ } else { return 100; /* 高温满转 */ } }

固件编译完成后,烧录命令可以参考 ST-Link 搭配 STM32CubeProgrammer 的命令行方式:

STM32_Programmer_CLI -c port=SWD mode=HOTPLUG \ -w build/fan_controller.hex -v -rst

烧录成功后,用示波器探头接在 MOS 管漏极,观察 PWM 波形。正常波形应该方波干净、边沿没有严重过冲;转风扇时用万用表量风扇电源电压,确认占空比变化会引起有效电压变化。

如果没有示波器,也可以用逻辑分析仪看 PWM 引脚,甚至用一个 LED 串联电阻接到 PWM 输出,通过肉眼观察亮度变化来粗略判断占空比是否在调整。当然,做嵌入式开发,示波器是迟早要添置的工具,尤其涉及 MOSFET 开关电路时,没有示波器很难定位振铃和尖峰问题。

9. 常见问题与排查方法

PCB 调试阶段会遇到的问题,很多有很强的规律性,下面这张表直接按现象排查:

问题现象可能原因排查方式解决方案
上电后 MCU 不工作电源电压异常或去耦电容虚焊万用表测量 VCC/GND;检查复位引脚补焊去耦电容;确认 LDO 输出正常
PWM 无输出定时器未启动或引脚复用错误示波器测量 MCU PWM 引脚;核对 GPIO 配置检查初始化代码;确认引脚映射
MOS 管发热严重栅极驱动电压不足或开关频率过高示波器看 Vgs 波形是否完整;测导通压降换用逻辑电平 MOS;调大栅极电阻
风扇有啸叫PWM 频率刚好落在可听范围改变频率到 25kHz 以上调整定时器分频系数
温度读数跳变ADC 走线受 PWM 干扰万用表量 NTC 分压点是否稳定调整 ADC 采样时序;走线加地线隔离
按键偶尔失灵没有软件消抖或接触不良示波器抓按键引脚波形增加延时消抖;检查按键封装
12V 供电时 MCU 烧毁LDO 输入电压超过极限查看 LDO 数据手册耐压更换耐压更高的 LDO 或加预降压
风扇不转MOS 管未导通或 PWM 占空比过低测 MOS 管漏极电压提高最小占空比;检查风扇供电

最值得说的是 MOS 管发热问题。风扇电流不大,MOS 管发热通常不是导通损耗导致的,而是“开关损耗”。MOS 管在开通和关断的过渡过程中,电压和电流同时非零,瞬时功耗比导通时高很多。如果你的 PWM 频率从 25kHz 改成 100kHz,开关损耗会明显上升。解决办法不是换更大电流的管子,而是降低 PWM 频率或者增大栅极电阻,让开关过程不要那么“暴力”。

10. 最佳实践与工程建议

这块板子虽然小,但已经是完整的嵌入式硬件产品。把它当成一个正经项目来做,而不是“画完了能跑就行”,会更快提升你的硬件设计能力。

第一,给板子做版本管理。PCB 丝印上写 V1.0、V1.1,同时把开源工程放进 Git 仓库,每次改版都打 Tag。对开源项目来说,别人拿到你的仓库时,能清楚知道自己下载的是哪个版本,反馈问题时也不容易混乱。

第二,保留调试接口。SWD 或串口调试口不要省。很多个人项目为了省面积把调试口去掉,结果固件刷不了、问题难定位,返工成本远大于那几颗排针的钱。调试接口选 2.54mm 间距、5pin~6pin,成本不超过 0.1 元,价值非常高。

第三,焊接时备好助焊剂和万用表。SOT-23 封装的小 MOS 管和 0603 电阻,新手手焊容易虚焊。焊完每颗器件都用万用表通断档或者对准原理图检查一遍,特别是电源网络的短路检查,必须在通电前做。

第四,注意输入反接保护。如果这个控制器是用于 DIY 机箱或 3D 打印机的,使用者有可能把 12V 电源接反。最少在电源入口串联一个肖特基二极管,或者使用 P-MOS 防反接电路。如果追求 2 块钱成本,一个二极管是最低限度保护。

第五,这是 12V 直流低压项目,不是 220V 市电项目。画板时不需要考虑爬电距离,但也不要看到“风扇”两个字就拿到 220V 交流风扇上使用。MOS 管、稳压器件、电容耐压值全都是按 12V 设计的。

第六,对外开源时把制造文件也一并放出来。Gerber 文件、BOM 列表、贴片坐标文件、固件源码、使用说明,一个都不能少。很多人做开源项目只放原理图,别人想复现还要自己画板子,门槛一下就高了。真正的开源硬件项目,“可复现性”比“代码美观”重要得多。

11. 总结与后续学习方向

这篇文章围绕 PWM 风扇控制器的 PCB 设计,从方案选型、原理图要点、PCB 布局布线、生产文件导出,到焊接调试和常见问题排查,算是一条完整的链路。如果你照着这个思路做了一块自己的板子,得到的绝不仅仅是一个能控制风扇转速的小模块,更是一套“低成本硬件设计”的方法论——如何控制 BOM、如何做布局取舍、如何在信号质量和成本之间找平衡。

做完这块板子之后,值得继续深入的方向有这么几个:

一是把控制算法做精细。目前用的是线性温控曲线,进阶可以做 PID 闭环、温度变化率预测、多风扇同步控制。这些算法在依赖 PWM 的项目里非常通用,换到其它电机控制场景也是同一套思路。

二是往更高功率的电机控制扩展。PWM 控制直流电机、水泵、散热风扇的原理一致,但功率变大后,MOS 管的选型、PCB 的热设计、栅极驱动的方式都会变化。你可以对比这颗 2 块钱的小板子和一个 500W 电机驱动器之间的设计差异,理解会深刻很多。

三是结合无线模块做远程监控。在 PCB 上预留串口或者 I2C 接口,接入 ESP8266、ESP32 之类的 WiFi 模块,风扇控制器的数据就能上报到上位机或云端。这也是很多开源项目从“能用”走向“好用”的关键一步。

如果后续有时间,我打算把固件部分的实现细节、开源的完整仓库链接以及实际使用中的波形图再整理一篇,方便大家直接对照复现。这篇文章可以先收藏,等你开始画板子的时候,再翻出来对照检查一遍,一定比闷头画完再改版要省事得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 7:06:07

用一个 API 接入 GPT-Image-2 与 Nano Banana:TaoToken 图像生成能力实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 7:05:30

ccswitch 最新安装包 windows,mac,linux 三平台部署与 TaoToken 接入指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 7:04:54

GLM-5.3 编码与网络能力深度解析:从 API 调用到涌现行为

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 7:04:51

GitHub Copilot 开发提效指南:用 TaoToken 统一 Key 打通 AI 编码工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华