IRF520 模块风扇转了就停?5V 栅压不足是元凶

Cartoon of a red IRF520 MOSFET module between an Arduino Uno and a small DC fan that is slowing to a stop

风扇接在 IRF520 场效应管(MOSFET)模块上转一会儿就停,多半说明晶体管只开了一半。IRF520 的栅极需要大约 10 V 才能完全导通——Arduino 的 5 V 只能让它半开,损失的电压变成了热量,电机也就带不动了。绕过模块直接接电源能正常转,是因为风扇拿到了全额电压。

为什么风扇接在 IRF520 模块上会转着转着就停?

模块上的 IRF520 是一颗标准栅极功率 MOSFET,本来是设计给能提供 10 V 以上栅压的驱动电路用的。在 5 V 栅压下它只被部分增强:它不是一个闭合的开关,而更像一个半欧到几欧的电阻,串在你的风扇回路里。

这个电阻正好解释了症状:风扇低速时电流很小,所以能起转——但随着风扇加速,电流需求上升,半开 MOSFET 上的压降增大,电机端电压随之塌陷,直到风扇停转。发热是证据,不是诱因:从通电的第一刻起,缺失的那部分电压就一直在晶体管里烧成热量。旁路测试能转,证明电源和风扇都没问题——罪魁祸首是栅极驱动。

这并不代表这块模块是废品——在它的能力范围之内它确实好用,这篇指南要做的就是把这个范围老老实实画清楚。

IRF520 的栅极阈值电压到底是什么意思?

IRF520 数据手册标注的栅极阈值电压是 2.0–4.0 V,测试条件是漏极电流仅 250 µA。Vgs(th) 是晶体管刚刚开始导通的电压,而不是它真正能用的导通电压——这是所有 MOSFET 数据手册上最容易被误读的数字。“阈值电压 2–4 V,我的 Arduino 输出 5 V,那肯定够”——这条推理正是眼前这起故障的来源。

真正该看的是导通电阻的标定条件:IRF520 那个著名的 0.27 Ω,是在 Vgs = 10 V 下测出来的,所有招牌参数——9.2 A 漏极电流、低损耗——全都以这个栅压为前提。5 V 下你拿到的是一个打了折扣、更烫的版本;3.3 V 下几乎什么都拿不到。

栅极电压(Vgs) 数据手册怎么说 你的电机实际感受
2–4 V(阈值) 刚刚开始导通——测试电流 250 µA 基本没用;顶多抖一下
3.3 V(ESP32 引脚) 不少个体只是刚过阈值 又弱又不稳,全看个体抽签
5 V(Uno 引脚) 典型转移曲线约 2 A——高阈值个体远低于此 小负载能用;损失的电压变成热
10 V(标定条件) 导通电阻最大 0.27 Ω,9.2 A 额定值才成立 卖点宣传的完整性能
一扇门只开一条缝与完全敞开的对比卡通图,用来说明 MOSFET 的部分导通与完全导通
阈值电压只是门闩刚松开的那一刻。IRF520 这扇门要 10 V 栅压才能完全敞开——5 V 下它只是虚掩着,硬挤过门缝的电流全在产生热量。

5 V 栅压下模块到底能开关多大电流?

IRF520 模块的商品页通常印着“0–24 V、最大 5 A”——这些数字描述的是接线端子和晶体管的极限规格,不是 5 V 栅压能兑现的东西。严谨的供应商会直接降额说明:IRF520 并不完全兼容 5 V 逻辑,而在 3.3 V 逻辑下合理的上限约为 1 A

在 5 V 栅压下,把连续电流预算放在 1 A 左右才算实在。数据手册的典型转移曲线显示 5 V 栅压下约 2 A——但那是“典型个体”的数字,考虑到 2.0–4.0 V 的阈值电压分布,高阈值个体的表现远低于此;按 1 A 做预算,整袋里最差的那颗也能过得舒服。在这个预算之内它是个称职的小开关;往印刷的 5 A 硬推,FET 就得耗散那些它根本没拿到足够栅压去避免的功率。

红色 IRF520 模块严重发热、却只把一小部分功率送到直流电机的卡通图
半开意味着晶体管把差额吃掉了。电机没拿到的那部分电压,正在把散热片烤热。

IRF520 模块自带续流二极管吗?

IRF520 模块存在好几个版本:有的在负载两端带了保护二极管,更多的只有 MOSFET、两个电阻和一个指示 LED。要检查的是你手上这块,不是商品图:断电并断开所有连接后,用万用表二极管挡正反两个方向测负载端子(V+ 和 V−)——一个方向读数约 0.2–0.7 V 说明装了二极管(肖特基类型读数在低端);两个方向都开路就是没装。

不管有没有,只要负载是有刷电机或风扇,都请外加一个续流二极管——一颗普通的 1N4007 级整流二极管跨接在电机两端,带色环的一端(阴极)朝向 V+。它给电机断电瞬间的电压尖峰一条安全的泄放回路,不让尖峰反复锤打晶体管——物理原理和我们继电器模块安全指南里的线圈二极管一模一样。

IRF520 模块怎么接 Arduino Uno?

IRF520 模块分三个区域:3 针排针(SIG、VCC、GND)接控制信号,一对接线端子接负载电源,另一对接负载——具体哪对是哪对,以你这批板子的丝印为准。这套接法针对普通的两线直流风扇或电机;四线电脑风扇需要把 PWM 打在它专用的控制线上。

模块端子 接到 说明
SIG Uno D9 支持 PWM 的引脚,用于调速
VCC Uno 5V 排针供电,给指示电路用
GND(排针) Uno GND 必须共地——不共地就没法开关
电源端子对(VIN / GND) 负载电源 + / − 小 140 电机用 5V 台式电源
负载端子对(V+ / V−) 电机红线 / 黑线 续流二极管跨接电机两端,色环朝 V+

这颗 3V 140 小电机是绝佳的第一个负载,远在预算之内;由于它是 3 V 电机接在 5 V 电源上,程序里限制了 PWM 占空比,让它的等效电压保持在合理范围。软启动斜坡则避免堵转电流冲击把共用电源拉垮、让 Uno 复位。

// IRF520 模块 + Arduino Uno——PWM 电机调速,带软启动
// 控制端:SIG -> D9,VCC -> 5V,GND -> GND(与负载电源 GND 共地)
// 负载端:小直流电机接 V+ / V-,续流二极管跨接电机两端(色环朝 V+)

const int MOTOR_PIN = 9;    // PWM 引脚
const int MAX_PWM   = 150;  // 3V 电机接 5V 电源的占空比上限(150/255 x 5V = ~2.9V)
                            // 只有电机额定电压与电源电压一致时才用 255

void setup() {
  pinMode(MOTOR_PIN, OUTPUT);
  // 软启动:缓慢升速,避免堵转电流冲击
  // 把电源拉垮、让开发板掉电复位
  for (int duty = 0; duty <= MAX_PWM; duty++) {
    analogWrite(MOTOR_PIN, duty);
    delay(15);               // 从静止到巡航大约 2 秒
  }
}

void loop() {
  analogWrite(MOTOR_PIN, MAX_PWM);   // 巡航
  delay(4000);
  for (int duty = MAX_PWM; duty >= 0; duty--) {  // 缓慢停下
    analogWrite(MOTOR_PIN, duty);
    delay(10);
  }
  delay(2000);
  for (int duty = 0; duty <= MAX_PWM; duty++) {  // 缓慢重启
    analogWrite(MOTOR_PIN, duty);
    delay(15);
  }
}

想在自己动手接线之前,先看看这块模块带动真实负载的样子:

Arduino Uno 通过红色 IRF520 模块驱动小直流电机、电机两端跨接续流二极管的卡通接线图
能跑的接法:D9 信号进 SIG,共地,负载独立供电,续流二极管跨接电机、色环朝 V+。

手上是 3.3 V 开发板,或者负载更大,怎么办?

用 ESP32 或任何 3.3 V 开发板直接驱动 IRF520 模块,是选错了零件——3.3 V 只能勉强够到阈值电压的抽签线,我们的 ESP32、ESP8266 与 Uno 对比就讲过这道逻辑电平分水岭。教科书式的解法是换一颗逻辑电平 MOSFET(IRLZ44N 一类),它在 5 V 栅压下就能达到额定导通电阻。

对 3.3 V 开发板、以及任何超出 1 A 预算的负载,继电器模块才是实在的答案:它的光耦输入用 3.3 V 就能可靠触发,触点也完全不理会栅极那套物理——我们的自动浇花系统就是这样开关水泵的。要是你想要 PWM 调速,那就留着 IRF520 模块,用 Uno 这类 5 V 逻辑的板子来驱动它。

我们从真实客户那里见过的常见错误

本文标题里的那桩谜案。一位客户的反馈大意是:“IRF520 fan spins then stops (bypass ok)”(IRF520 风扇转了就停,直连正常)。旁路测试做得很聪明——它排除了风扇和电源的嫌疑。解法:这台风扇的电流超出了模块在 5 V 栅压下的预算,于是改走继电器路线。

用 3.3 V 开发板驱动 SIG。电机只会抖一下、嗡嗡响,或者这块模块能用、另一块一模一样的却不能用——这是阈值电压抽签的表现,不是板子坏了。换 5 V 逻辑的开发板,或者改用继电器模块。

没有共地。负载单独供电、排针 GND 却没接回 Uno,开关就会时灵时不灵、半死不活。栅极电压是相对模块地测量的;把两个地连起来。

按印刷的 5 A 做预算。那个数字的前提是 Arduino 根本给不出的栅极驱动——5 V 栅压下按 1 A 左右规划,并留意散热片温度。

省掉续流二极管。不装也许能跑上几个星期,但每一次断电尖峰都是一次赌博,而一颗二极管就能把这份赌注清零。

常见问题

IRF520 模块能配 ESP32 或 ESP8266 用吗?

不能直接用。3.3 V 栅压下 IRF520 只是勉强过了阈值,表现因个体而异,电流能力也大打折扣。改用继电器模块(它的光耦输入 3.3 V 就能工作),或者换 5 V 逻辑的开发板来驱动模块。

为什么只带一个小电机,我的 IRF520 模块还是发烫?

5 V 栅压下晶体管只是部分导通,会实实在在地压掉一部分电压并把它耗散成热。温热属正常;烫到不能碰说明负载超出了 5 V 栅压的预算——减小电流,或者改用继电器。

IRF520 模块能做 PWM 调速吗?

能——这正是它的看家本领,普通继电器做不到。在 PWM 引脚上用 analogWrite;在 Uno 上,D9 引脚的频率约为 490 Hz,电机在这个频率下发出轻微啸叫属正常现象。

小风扇小电机也真的需要续流二极管吗?

装上。有刷电机每次断电都会反踢一个电压尖峰,而 PWM 意味着 Uno 上每秒几百次断电。IRF520 不装往往也能活下来,但一颗整流二极管能把“往往能活”变成“有保护”。

IRF520 模块是个烂产品吗?

不是——它是一块不错的板子,只是商品页的数字常常偏乐观。在它的能力范围内(5 V 信号、1 A 左右、PWM 调速、电机加续流二极管)它便宜、简单、可靠。超出这个范围,就改走继电器路线。

最后更新:2026年8月。有问题?WhatsApp 联系我们

Leave a Reply

Your email address will not be published. Required fields are marked *