应广单片机PMS150C温控PWM风扇控制器开发案例:电路、BOM、代码与量产参数|逐高电子

整理编辑:逐高电子技术开发部 / 日期:2026-6-18

应广PMS150C温控PWM风扇控制器:低成本4线风扇调速完整方案

基于低成本8位MCU、10K NTC热敏电阻和25kHz PWM输出,实现4线风扇智能调速,适用于电源、UPS、工控盒、LED驱动电源和小型散热模块。

PMS150C / PFS154 10K NTC测温 4线风扇PWM 25kHz调速 可量产案例

很多散热产品并不需要复杂MCU,只需要根据温度自动调节风扇转速。本文给出一个可落地的PADAUK应广单片机温控PWM风扇方案:电路可画板,BOM可采购,代码可移植,参数可调试。

国产AV麻豆MAG剧集

一、应用痛点:风扇全速运行不是最优解

在开关电源、UPS、LED电源、功放、网络设备和小型工控盒中,风扇常被设计成上电即转或温控开关式启停。这样虽然简单,但存在噪音大、风扇寿命短、低负载无效功耗高、灰尘堆积快等问题。

采用温控PWM调速后,设备可以在低温时低速或停转,在高温时自动加速,从而兼顾散热、噪音、寿命和成本。

二、方案规格

项目 推荐参数
主控MCU PADAUK PMS150C-U06;开发阶段可用PFS154
输入电压 12V DC,给风扇供电
MCU供电 5V,由78L05/ME6206-5.0等LDO产生
风扇类型 标准4线PWM风扇,12V供电,PWM控制脚
PWM频率 约25kHz,符合常见PC风扇PWM控制习惯
温度检测 10K NTC,B=3950,配1K下拉电阻
默认阈值 低温40℃降速(滞回),高温50℃升速
典型应用 电源散热、UPS、小型工控盒、LED驱动电源、充电器、功放散热

三、芯片型号选择

1. 量产主推:PMS150C-U06

PMS150C-U06为SOT23-6封装的低成本8位OTP MCU,适合固定功能、大批量、成本敏感的控制场景。本方案只需要1路PWM输出和1路比较器输入,PMS150C资源足够。

2. 开发调试推荐:PFS154

PMS150C为OTP一次性烧录,程序写错后芯片无法擦除。开发阶段建议使用PFS154或仿真器调试温度阈值、PWM频率和风扇兼容性,确认无误后再切换PMS150C量产。

型号 建议用途 说明
PMS150C-U06 量产降本 SOT23-6,成本低,OTP
PFS154 开发验证 可重复烧录,更适合调试
PMS152 / PMS154C 功能扩展 需要更多IO、LED或TACH检测时可选

四、硬件电路设计

1. 系统连接框图

12V输入
  ├── 4线风扇 +12V 供电
  └── LDO稳压到5V
        ├── PMS150C VDD
        ├── 10K NTC温度检测分压
        └── PA3输出25kHz PWM → 风扇PWM控制脚

2. 电源电路

J1-1  +12V输入 ──┬── 风扇Pin2(+12V)
                 └── LDO输入
J1-2  GND ───────── 风扇Pin1(GND)、MCU GND

LDO输出:+5V → PMS150C VDD、NTC分压上端

推荐在LDO输入端放置1uF电容,输出端放置100nF电容,并在MCU VDD/GND旁边就近放置100nF去耦电容。

3. NTC温度检测电路

+5V
 │
[TH1] 10K NTC,B=3950
 │
 ├── T_OUT → PMS150C PA4 / Comparator+
 │
[R1] 1K,1%
 │
GND

温度升高时,NTC阻值下降,T_OUT电压发生变化。PMS150C使用内部比较器和16档内部参考电压判断温度区间。该方案不是高精度温度计,但足够实现风扇分段调速。

阈值与温度映射说明:以 10K NTC(B=3950)配 1K 下拉电阻为例,40℃ 时分压约 0.38V,45℃ 时约 0.42V,50℃ 时约 0.46V。比较器参考电压档位 0x04、0x05、0x06 分别对应约 0.38V、0.42V、0.46V。如使用不同 B 值或不同分压电阻,需重新计算阈值。

4. 4线风扇PWM接口:量产建议用开漏驱动

重要优化:4线PC风扇的PWM控制脚通常按开集电极/开漏信号设计。MCU直接推挽输出在实验中可能可用,但量产建议增加2N7002或NPN三极管做开漏接口,提高兼容性。
推荐开漏接口:

PMS150C PA3 ── 100Ω~1k ── 2N7002 Gate
2N7002 Source ─────────── GND
2N7002 Drain ──────────── 风扇PWM Pin4
Gate到GND:100k下拉,可选

风扇Pin1:GND
风扇Pin2:+12V
风扇Pin3:TACH,可预留
风扇Pin4:PWM控制输入

如果风扇内部没有PWM上拉,可在PWM线上增加4.7k~10k上拉到5V;多数标准4线风扇内部已有上拉,实际需按风扇规格书确认。

五、BOM清单

位号 名称 推荐参数/型号 数量 说明
U1 MCU PMS150C-U06 1 SOT23-6,量产主控
U2 LDO 78L05 / ME6206-5.0 / HT7550-5.0 1 12V转5V
Q1 MOS管 2N7002 1 PWM开漏驱动,推荐增加
TH1 NTC 10K,B=3950 1 贴近散热片或发热源
R1 分压电阻 1K,1% 1 NTC下拉
Rg 栅极电阻 100Ω~1K 1 PA3到2N7002 Gate
Rpd 下拉电阻 100K 1 Gate下拉,防止上电误动作
C1 输入电容 1uF/25V 1 LDO输入滤波
C2 输出电容 100nF 1 LDO输出滤波
C3 NTC滤波 10nF~100nF 可选 T_OUT抗干扰
J1 电源接口 2Pin 2.54mm 1 12V输入
J2 风扇接口 4Pin 2.54mm 1 接4线风扇
TVS1 TVS管 SMBJ12A等 可选 12V输入浪涌保护

六、控制逻辑与参数

采用双阈值滞回控制,避免风扇在临界温度附近频繁启停。

温度 ≥ 50℃:PWM占空比逐步增加
40℃ ≤ 温度 < 50℃:保持当前转速(死区)
温度 < 40℃:PWM占空比缓慢降低

升速阈值:50℃   // TRIGGER_HIGH = 0x06
降速阈值:40℃   // TRIGGER_LOW  = 0x04
滞回死区:10℃   // 防止临界点抖动

温度越高:每个控制周期增加的占空比越多
控制周期:约164ms
PWM范围:0~255
应用场景 降速阈值(滞回) 升速阈值 说明
静音优先设备 35℃ 45℃ 提前低速散热,温度波动小
普通电源散热 40℃ 50℃ 推荐默认参数
高温容忍设备 45℃ 55℃ 降低风扇运行时间和噪声

七、参考代码

版权提示:国外参考项目采用GPL协议。商业项目不要直接复制原项目源码闭源量产,建议按本文逻辑自行重写,或遵守GPL开源协议。下面代码为工程说明用的精简参考实现,寄存器名需按实际PADAUK SDK/SDCC头文件确认。

1. NTC阈值定义(含滞回)

// 比较器内部参考电压 16 档(0x00~0x0F)
// 0x00~0x03 对应 40℃ 以下阈值(本方案未使用)
#define NTC_1K_TRIGGER_35C    0x02
#define NTC_1K_TRIGGER_40C    0x04
#define NTC_1K_TRIGGER_45C    0x05
#define NTC_1K_TRIGGER_50C    0x06
#define NTC_1K_TRIGGER_55C    0x07
#define NTC_1K_TRIGGER_59C    0x08
#define NTC_1K_TRIGGER_64C    0x09
#define NTC_1K_TRIGGER_68C    0x0A
#define NTC_1K_TRIGGER_72C    0x0B
#define NTC_1K_TRIGGER_76C    0x0C
#define NTC_1K_TRIGGER_80C    0x0D
#define NTC_1K_TRIGGER_84C    0x0E
#define NTC_1K_TRIGGER_88C    0x0F

// 滞回控制:升速阈值 50℃,降速阈值 40℃(10℃ 死区)
#define TRIGGER_LOW   NTC_1K_TRIGGER_40C   // 降速阈值(滞回)
#define TRIGGER_HIGH  NTC_1K_TRIGGER_50C   // 升速阈值

2. 风扇控制主逻辑(含滞回)

#include 
#include 

#define FAN_BIT 3   // PA3输出PWM
#define NTC_BIT 4   // PA4接NTC分压

// 启动占空比:部分风扇需要较高占空比才能克服惯性启动
// 启动后可将占空比降至 FAN_MIN_RUN_PWM 维持运转
#define FAN_MIN_START_PWM 80    // 启动瞬间占空比
#define FAN_MIN_RUN_PWM   25    // 启动后最低维持占空比
#define FAN_MAX_PWM       255

static uint8_t fan_pwm = 0;

static void set_fan_pwm(uint8_t duty)
{
    if (duty == 0) {
        TM2C = 0x00;
        PA &= ~(1 << FAN_BIT);
        return;
    }

    if (duty < FAN_MIN_RUN_PWM) {
        duty = FAN_MIN_RUN_PWM;
    }

    TM2B = duty;
    TM2C = (uint8_t)(TM2C_MODE_PWM | TM2C_OUT_PA3 | TM2C_CLK_IHRC);
}

void fan_control_tick(void)
{
    uint8_t t;

    // 温度低于降速阈值(40℃),缓慢降速
    GPCS = (uint8_t)(GPCS_COMP_RANGE4 | (TRIGGER_LOW & 0x0F));
    if (fan_pwm > 0 &&
        (GPCC & (1 << GPCC_COMP_RESULT_BIT)) == GPCC_COMP_RESULT_NEGATIVE) {
        fan_pwm--;
        if (fan_pwm < FAN_MIN_RUN_PWM && fan_pwm > 0) {
            fan_pwm = FAN_MIN_RUN_PWM;  // 不低于维持占空比
        }
    }

    // 温度高于升速阈值(50℃),逐步升速;温度越高升速越快
    for (t = TRIGGER_HIGH; t <= 0x0F; t++) {
        GPCS = (uint8_t)(GPCS_COMP_RANGE4 | t);
        if (fan_pwm < FAN_MAX_PWM &&
            (GPCC & (1 << GPCC_COMP_RESULT_BIT)) == GPCC_COMP_RESULT_POSITIVE) {
            fan_pwm++;
        } else {
            break;
        }
    }

    set_fan_pwm(fan_pwm);
}

3. 初始化参考

void main(void)
{
    // 关闭未用IO输入,降低功耗
    PADIER = 0x00;

    // PA3为输出
    PAC = (1 << FAN_BIT);

    // 8位PWM,周期 = 256个时钟步
    // 频率 = 12.8MHz / 2 / 256 = 25kHz
    TM2B = 0;
    TM2S = (uint8_t)(TM2S_SCALE_DIV2);
    TM2C = (uint8_t)(TM2C_MODE_PWM | TM2C_OUT_PA3 | TM2C_CLK_IHRC);

    // 比较器:+端接PA4,-端接内部参考
    GPCC = (uint8_t)(GPCC_COMP_ENABLE |
                     GPCC_COMP_MINUS_VINT_R |
                     GPCC_COMP_PLUS_PA4);

    // T16约164ms中断一次:12.8MHz/64/32768 ≈ 6.1Hz,周期164ms
    // 如需327ms周期,可将分频改为 T16M_CLK_DIV128
    T16M = (uint8_t)(T16M_CLK_IHRC |
                     T16M_CLK_DIV64 |
                     T16M_INTSRC_15BIT);
    T16C = 0;

    INTEN = INTEN_T16;
    INTRQ = 0;
    __engint();

    while (1) {
        __stopexe();
    }
}

void interrupt(void) __interrupt(0)
{
    if (INTRQ & INTRQ_T16) {
        fan_control_tick();
        INTRQ &= ~INTRQ_T16;
    }
}

八、调试步骤

  1. 测电源:确认12V输入、5V LDO输出正常,MCU VDD脚旁边有100nF去耦。
  2. 测NTC分压:室温下T_OUT稳定;加热NTC后T_OUT应变化。若不变化,检查NTC、1K电阻和焊点。
  3. 测PWM:示波器测PA3或2N7002 Drain,频率应接近25kHz,占空比随温度升高而增大。
  4. 接风扇:确认4线风扇线序,先低压限流测试,防止接反。
  5. 调阈值:根据实际散热片温度,调整TRIGGER_LOW和TRIGGER_HIGH。
  6. 调最低占空比:不同风扇启动占空比不同,若低速不启动,提高FAN_MIN_START_PWM;若启动后抖动,调整FAN_MIN_RUN_PWM。

九、原方案不足与优化建议

不足1:PWM接口兼容性

MCU直接推挽输出PWM可能不符合部分4线风扇规范。优化:增加2N7002开漏驱动,并预留4.7k~10k上拉位置。

不足2:无风扇堵转检测

基础方案未使用TACH反馈。优化:将TACH接入MCU输入脚,检测一定周期内是否有脉冲,无脉冲则全速重启或报警。

不足3:NTC精度依赖器件

阈值受NTC B值、电阻误差和安装位置影响。优化:量产前做温箱测试,按实测结果修正阈值表。

不足4:OTP烧录风险

PMS150C一次性烧录,调试成本高。优化:开发用PFS154,量产前冻结版本和校验码。

不足5:保护电路偏少

电源类产品干扰较强。优化:输入加TVS、反接保护、LDO前后滤波,PWM和NTC走线远离开关节点。

不足6:无异常安全策略

NTC开路/短路时可能误判。优化:增加极端档位判断,异常时默认风扇全速,保护设备。

十、量产落地注意事项

  • NTC位置:应贴近散热片、MOSFET、变压器或整流器等主要热源,不要放在风扇出风口。
  • PWM走线:远离高压开关节点,必要时串100Ω~1K电阻降低尖峰。
  • 风扇兼容:至少测试3~5款不同品牌4线风扇,确认最低启动占空比和25kHz兼容性。
  • 温箱验证:在40℃、45℃、50℃、55℃、60℃点验证转速变化。
  • 烧录流程:OTP量产前必须做空片检查、烧录校验、功能抽检,避免批量报废。
  • EMC测试:电源产品建议做EFT、ESD和浪涌测试,必要时增加TVS和RC滤波。
推荐落地路线:PFS154开发验证 → PMS150C样机小批量 → 温箱和风扇兼容测试 → 固化阈值和程序版本 → PMS150C量产烧录。

十一、FAQ

PMS150C可以直接接4线风扇PWM脚吗?

实验阶段可以尝试直接输出5V PWM,但量产更推荐2N7002开漏接口,符合更多4线风扇的控制习惯。

这个方案能显示准确温度吗?

不能。本方案定位是低成本温控风扇,不是温度计。它只判断温度区间并调节转速。

如果风扇低占空比不转怎么办?

增加启动占空比,例如设置FAN_MIN_START_PWM为80~100,并在启动后再降到FAN_MIN_RUN_PWM维持转速。

可以控制2线风扇吗?

可以改成MOSFET低边PWM控制2线风扇,但噪声、启动、EMI和寿命表现通常不如标准4线PWM风扇。

为什么要用滞回控制?

滞回(升速50℃/降速40℃)在阈值之间设置了10℃死区,防止风扇在临界温度附近频繁启停或转速抖动,延长风扇寿命并降低噪声波动。

十二、总结

基于PADAUK应广PMS150C的温控PWM风扇控制器,使用低成本MCU、10K NTC、1K分压电阻和25kHz PWM输出,就能完成风扇智能调速。该方案非常适合电源、UPS、工控、小家电和LED驱动电源等成本敏感产品。

为了真正量产落地,建议在基础方案上增加开漏PWM接口、NTC异常保护、风扇TACH堵转检测、输入保护和温箱校准。这样既能保持应广MCU的成本优势,也能提升整机可靠性。

应广单片机技术资料

  • 台湾应广单片机官网
  • 应广单片机例程
  • 应广单片机编程指南
  • 应广单片机定时器
  • 技术开发工具
  • 应广单片机IDE&仿真器
  • 应广单片机烧录器
  • 代码生成器
应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南

应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南


PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子

PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子


应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑

应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑


PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案

PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案


应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持

应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持


应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享

应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享


应广单片机热点问题实战解决方案 - 开发/烧录/选型/PWM/低功耗/滚码 | 逐高电子·应广技术方案

应广单片机热点问题实战解决方案 - 开发/烧录/选型/PWM/低功耗/滚码 | 逐高电子·应广技术方案


应广单片机入门实战:基于PMS150G与5S-I-S02B仿真器的LED闪烁完整教程

应广单片机入门实战:基于PMS150G与5S-I-S02B仿真器的LED闪烁完整教程


STM32太贵?试试应广单片机:成本低至9毛钱,功耗0.5μA,抗干扰±4kV | 逐高电子

STM32太贵?试试应广单片机:成本低至9毛钱,功耗0.5μA,抗干扰±4kV | 逐高电子


PMD040B 24位Δ-Σ ADC | 内置PGA/温度传感器/电源开关 | 应广科技高精度模数转换器

PMD040B 24位Δ-Σ ADC | 内置PGA/温度传感器/电源开关 | 应广科技高精度模数转换器


PMS150C LED球泡灯方案:原理图+代码+过零检测(PA0)与可控硅调光(MOC3052) | BOM成本¥1.2

PMS150C LED球泡灯方案:原理图+代码+过零检测(PA0)与可控硅调光(MOC3052) | BOM成本¥1.2


单片机选型指南:PMS150C、PMS152、PMS154C、PMS133 - 申请样品

单片机选型指南:PMS150C、PMS152、PMS154C、PMS133 - 申请样品


国产OTP单片机替代方案选型 | 应广科技专场 | 逐高电子

国产OTP单片机替代方案选型 | 应广科技专场 | 逐高电子


从入门到精通:应广科技单片机开发中上踩过的 10 个坑(2026终极硬核版),任何一个对底层寄存器或物理特性的误读,都会导致 5% 甚至更高的退货率

从入门到精通:应广科技单片机开发中上踩过的 10 个坑(2026终极硬核版),任何一个对底层寄存器或物理特性的误读,都会导致 5% 甚至更高的退货率


应广PMS164单片机工业级触摸按键方案设计指南:LED调光+抗干扰量产实现

应广PMS164单片机工业级触摸按键方案设计指南:LED调光+抗干扰量产实现


开发实力

专业资深的软硬件开发工程师团队,熟悉行业客户产品硬件技术平台解决方案

全球渠道

为客户提供高性价比的产品和服务,满足客户及时快速的电子生产制造需求

品质保证

专业的测试保证团队,保证每批方案的稳定性,兼容性,和抗干扰性

售后服务

专业的技术服务团队,24小时为客户提供各种软硬件的技术支持和售后服务

服务热线

0755-88364040
18902464556

义隆代理

烧录开发

技术支持

申请样品

国产AV麻豆MAG剧集

扫描微信二维码