风扇不转、低速抖动、嗡嗡响?Marlin 固件 STM32F407VE 主板风扇 PWM 故障三步修复指南
【免费下载链接】MarlinMarlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin
刚上电打印,料头散热风扇却纹丝不动;或者低速时风扇头一抖一抖,还带着一股"滋滋"的闷响,噪音大到没法听。只要你用的是 BTT SKR Pro 这类搭载 STM32F407VE 的主板、刷着 Marlin 固件,那多半是风扇 PWM(靠信号开合比例调速的信号方式,可以理解成汽车的油门开度)出了状况。别急,按这三步走:先复现、再改宏、最后查硬件,基本都能定位到问题。
第一步 · 先现场复现,分清是软件层还是硬件层
先别动任何设置,直接通过串口下发几条指令,看风扇怎么反应。M106 是 Marlin 里"设置风扇转速"的 G-code,取值 0–255,0 停转、255 全速:
M106 S128 ; 半速 M106 S255 ; 全速 M107 ; 停转结果可以直接对号入座:
- S255 都不转:问题很可能在硬件层——接线、风扇本体或驱动 MOS 管,先别折腾配置,跳到第三步查硬件;
- 全速正常、低速抖动:典型的参数层问题,第二步就能修;
- S0 还在慢转:关断值没归零,后面要动
FAN_OFF_PWM; - 只有一颗风扇异常、另一颗正常:重点查异常通道的引脚映射。
第二步 · 改宏:三个开关管风扇转速
这三个都在 Configuration_adv.h 里,改完重新编译烧录即可:
#define FAN_MIN_PWM 50 #define FAN_MAX_PWM 255 #define FAST_PWM_FAN用大白话逐个说:
- FAN_MIN_PWM(低速下限):M106 给的速度会被换算到实际输出,设成 50 后,就算发 S1~S49,最低也按 50 跑。风扇"劲儿够转",低速抖动就消失了。3D 打印主板风扇低速抖,先调它,50~80 是常见起点。
- FAN_MAX_PWM(上限):全速时的天花板。12V 风扇接到 24V 电源时把它降到 128,防止风扇超速打坏。
- FAST_PWM_FAN(高频 PWM):把 PWM 的开关频率提上去。你听到的嗡嗡声,很多就是开关频率太低的产物,频率高了噪音就移出了人耳敏感区,风扇噪音过大的机器可以先试这个。副作用是 MOS 管发热略增。
改完烧录,再用 M106 扫一遍 S50~S255。噪音还在,接着往下走。
第三步 · 查硬件:引脚映射和定时器冲突
STM32F407VE 靠硬件定时器产生 PWM(定时器相当于芯片里的节拍器,一个节拍器要供好几个引脚)。风扇引脚如果跟舵机、加热通道挤在同一个定时器里,频率就可能被带偏。判断方法不需要看芯片手册:
- 分通道单测:用
M106 P0 S128和M106 P1 S128分别控制两颗风扇。一颗通道完全异常、其余正常,就聚焦这颗通道的引脚定义。 - 看引脚文件:SKR Pro 的风扇引脚定义在 pins_BTT_SKR_PRO_common.h 里:
#define FAN0_PIN PC8 // 风扇 0 #define FAN1_PIN PE5 // 风扇 1对照原理图确认这两个引脚确实是 PWM 输出,且没被别的功能复用; 3.软件 PWM 兜底:确认是硬件 PWM 资源冲突、又不想改引脚时,在 Configuration.h 里打开FAN_SOFT_PWM,改由 CPU 按时间片切换引脚来模拟 PWM,绕开定时器。精度略降,但兼容性最好,属于"先能用起来"的方案。
一段真实排查:SKR Pro 风扇低速抖动
一台 SKR Pro(STM32F407VE)的机器,现象是:打印中料头风扇跑到三四成转速时,扇头明显抖动,嗡嗡声比平时大,全速时反而正常。
怀疑:全速正常,硬件基本可以排除;嫌疑指向"低占空比(一个周期里信号导通的比例)带不动风扇"。
验证:手动发 M106 S128,抖动消失;发 S49,又开始抖;发 S80,稳定。分界点正好卡在 50 附近,跟怀疑吻合。
修复:在 Configuration_adv.h 中定义FAN_MIN_PWM 50,重新烧录。
复测:M106 S1~S255 全扫一遍,低速不再抖;连续打印半小时,噪音恢复正常。这里没有动 FAST_PWM_FAN——噪音主要来自抖振而非开关频率,改完若仍有闷响,再回头调第二步的高频开关。
自查清单:照着过一遍
| 症状 | 最可能的原因 | 先动手的地方 |
|---|---|---|
| M106 S255 完全不转 | 硬件层:接线 / MOS 管 / 风扇本体 | 检查风扇座接线,换风扇交叉验证 |
| 全速正常、低速抖 | 低速下限过低 | FAN_MIN_PWM设 50~80 |
| 常速嗡嗡响 | PWM 开关频率太低 | 启用FAST_PWM_FAN |
| S0 仍慢转 | 关断值非零 | 设置FAN_OFF_PWM |
| 一颗风扇异常、其余正常 | 引脚映射或定时器冲突 | 查 pins 文件,FAN_SOFT_PWM兜底 |
| 改完配置仍复现 | 固件版本旧 | 确认 Marlin 为 2.1.x 及以上 |
兜底:清单全走完还没好,就转硬件排查——看风扇 MOS 管驱动电路的焊接、栅极电阻和风扇本体是否损坏,同时升级到 2.1.x 及以上的 Marlin 固件,它对 STM32 的 PWM 调度做了进一步优化。
【免费下载链接】MarlinMarlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考