Part1: 解决 QIDI Q2 主板散热风扇开机即转、待机不停的风扇噪音问题
前言
原创文章,转载引用请务必注明链接,水平有限,如有疏漏欢迎指正交流。
文章如有更新请访问 DFRobot 社区及 cnblogs 博客园,前者内容较全,后者排版及阅读体验更佳。
前段时间体验 QIDI Q2 3D 打印机时,发现其软件层面存在不少可优化空间,遂根据自己的经验,以及网友的一些改进方法,整理成文,分享给读者。原本计划待 Q2 相关优化方案测试验证完成后,以一键脚本的形式提供给大家使用,但近期家中添了宝宝,精力实在有限,故先将部分优化思路整理成文,希望能起到抛砖引玉的作用。需要说明的是,目前所有优化思路均未在 QIDI BOX 上测试(暂无该设备)。
在此,先向官方提出几点优化建议:
- 采用静音电源,确保无打印任务时室内环境的安静性;
- 提供 probe_air 调平器的 x86_64 二进制 so 文件,方便用户更换高性能上位机;
- 配备更具质感的灯带照明;
- 升级 Klipper 固件,以支持更精准的共振抑制测定及更高效的加速度计数据传输;
- 升级至 Python 11+ 版本,获取显著的性能提升。
本文核心内容为优化主板散热风扇的运行策略,从而降低打印机待机时的噪音。成文原因主要是看到B站 UP 主 石頭a强拖幻者 的视频:《【Qidi起迪Q2 配置教程系列】(一) 3D打印机Klipper配置,如何降低待机时的风扇噪音,主板风扇设置及使用详解》,但视频中有一个问题:Plus4 采用二合一主板(上位机与下位机集成一体),而 Q2 采用分体式设计(下位机位于机身背部,上位机位于打印舱内)。若沿用 Plus4 “以上位机 CPU 温度作为下位机散热风扇控制依据”的方案,就如同“靠品尝勺子里的汤来调整判断整锅汤的咸淡”,逻辑存在偏差。因此,本文将针对 Q2 的分体式结构,补充适配的风扇优化方案。
另外附上优化预告:
截至2025年10月22日,优化内容如下,具体见附件:
一、问题原因
我们接下来分析 ”主板散热风扇开机后持续运转且无法关闭” 的核心原因,重点关注两个核心配置文件:gcode_macro.cfg 与 printer.cfg。
首先查看主板散热风扇的原始定义:
[controller_fan board_fan]
pin:PA9
max_power:1.0
shutdown_speed:1.0
cycle_time:0.01
fan_speed: 1.0
stepper:stepper_z,stepper_z1
各选项意义如下:
控制器风扇(Controller fan)是一种关联式风扇,当所关联的加热器或电机处于活动状态时,风扇自动启动;当设备进入空闲超时(idle_timeout)状态后,风扇会自动停止,确保被监控组件完全冷却后不会因过热受损。其基础配置模板如下:
[controller_fan my_controller_fan]
# fan_speed: 1.0 # 加热器或电机启用时的风扇转速(取值范围 0.0~1.0)
# idle_timeout: # 加热器/电机失能后风扇持续运行时间(单位:秒),默认 30 秒
# idle_speed: # 空闲超时倒计时期间的风扇转速(取值范围 0.0~1.0),默认与 fan_speed 一致
# heater: # 关联的加热器名称(可多个,用逗号分隔)
# stepper: # 关联的电机名称(可多个,用逗号分隔)。
注:若未指定 heater 或 stepper 参数,默认关联“extruder 加热器”及所有电机;若指定多个加热器/电机名称,只要其中任意一个处于启用状态,风扇即会启动。
基于原始配置,此时主板散热风扇仅在打印头热端及双 Z 电机启动时工作。但结合 Q2 实际使用场景,由于其采用 24V 热床(主板 MOS 发热量大),且 XY 电机为主要发热部件,需将这两者也纳入风扇关联范围,理想配置应为:
[controller_fan board_fan]
heater: extruder, heater_bed
除配置缺失外,原始逻辑设计存在矛盾,核心问题出在 gcode_macro.cfg 的宏定义中:
# 开机启动宏
[delayed_gcode PRINTER_INIT]
initial_duration:0.2
gcode:SET_STEPPER_ENABLE STEPPER=stepper_z enable=1SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1BED_MESH_CLEAR DETECT_INTERRUPTIONDISABLE_ALL_SENSOR# 关闭电机宏
[gcode_macro M84]
rename_existing:M84.1
gcode:M84.1SET_STEPPER_ENABLE STEPPER=stepper_x enable=0SET_STEPPER_ENABLE STEPPER=stepper_y enable=0SET_STEPPER_ENABLE STEPPER=stepper_z enable=1SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1SET_STEPPER_ENABLE STEPPER=extruder enable=0# 打印结束宏
[gcode_macro PRINT_END]
gcode:M400save_zoffsetSET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}CLEAR_PAUSEM106 P2 S0M106 P0 S0M106 P3 S0DISABLE_BOX_HEATERM104 S0M140 S0M141 S0M220 S100M221 S100M84
正常逻辑预期:
- 打印开始时,电机与加热器启动,主板散热风扇同步工作;
- 打印结束后,M84 宏关闭所有电机,TURN_OFF_HEATERS(或 M104、M140、M141)关闭所有加热器,风扇在 idle_timeout 设定时间内持续运行散热,超时后自动停止,从而实现待机静音。
Q2 实际逻辑偏差:
- 系统启动就绪后,即使没有打印任务处于待机状态,PRINTER_INIT 宏也会自动使能双 Z 电机,导致主板散热风扇立即启动;
- 打印结束后,被覆写的 M84 宏仅关闭 X、Y、挤出机电机,保留双 Z 电机持续使能状态,使得风扇因关联电机未失能而持续运转,最终导致 “开机即转、待机不停” 的噪音问题。
二、优化方案
针对上述问题,核心优化思路为三点:1. 取消开机自动使能双 Z 电机;2. 扩展风扇关联范围,包含热床及 XY 电机;3. 保留打印前自动校准双侧 Z 轴等高功能(Z_TILT_ADJUST)。具体修改步骤如下:
修改 gcode_macro.cfg 文件
# 禁用开机自动使能双 Z 电机,简化开机初始化流程
[delayed_gcode PRINTER_INIT]
initial_duration:0.2
gcode:BED_MESH_CLEARDETECT_INTERRUPTIONDISABLE_ALL_SENSOR# 取消 M84 宏覆写,恢复原生 M84 关闭所有电机的功能
# [gcode_macro M84]
# rename_existing:M84.1
# gcode:
# M84.1
# SET_STEPPER_ENABLE STEPPER=stepper_x enable=0
# SET_STEPPER_ENABLE STEPPER=stepper_y enable=0
# SET_STEPPER_ENABLE STEPPER=stepper_z enable=1
# SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
# SET_STEPPER_ENABLE STEPPER=extruder enable=0
- 修改 printer.cfg 文件(主板散热风扇配置):
# 主板散热风扇 (不包括上位机) | FAN3
[controller_fan board_fan]
pin: PA9
max_power:1.0
shutdown_speed: 1.0
cycle_time: 0.01
fan_speed: 1.0
heater: extruder,heater_bed