跟思兼学Klipper(39.1)解决 QIDI Q2 主板散热风扇开机即转、待机不停的风扇噪音问题

Part1: 解决 QIDI Q2 主板散热风扇开机即转、待机不停的风扇噪音问题

前言

原创文章,转载引用请务必注明链接,水平有限,如有疏漏欢迎指正交流。

文章如有更新请访问 DFRobot 社区cnblogs 博客园,前者内容较全,后者排版及阅读体验更佳。

前段时间体验 QIDI Q2 3D 打印机时,发现其软件层面存在不少可优化空间,遂根据自己的经验,以及网友的一些改进方法,整理成文,分享给读者。原本计划待 Q2 相关优化方案测试验证完成后,以一键脚本的形式提供给大家使用,但近期家中添了宝宝,精力实在有限,故先将部分优化思路整理成文,希望能起到抛砖引玉的作用。需要说明的是,目前所有优化思路均未在 QIDI BOX 上测试(暂无该设备)。

在此,先向官方提出几点优化建议:

  1. 采用静音电源,确保无打印任务时室内环境的安静性;
  2. 提供 probe_air 调平器的 x86_64 二进制 so 文件,方便用户更换高性能上位机;
  3. 配备更具质感的灯带照明;
  4. 升级 Klipper 固件,以支持更精准的共振抑制测定及更高效的加速度计数据传输;
  5. 升级至 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=1
    SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
    BED_MESH_CLEAR      
    DETECT_INTERRUPTION
    DISABLE_ALL_SENSOR
    
# 关闭电机宏
[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

# 打印结束宏
[gcode_macro PRINT_END]
gcode:
    M400
    save_zoffset
    SET_IDLE_TIMEOUT TIMEOUT={printer.configfile.settings.idle_timeout.timeout}
    CLEAR_PAUSE
    M106 P2 S0
    M106 P0 S0
    M106 P3 S0
    DISABLE_BOX_HEATER
    
    M104 S0
    M140 S0
    M141 S0

    M220 S100
    M221 S100
    M84

正常逻辑预期

  • 打印开始时,电机与加热器启动,主板散热风扇同步工作;
  • 打印结束后,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_CLEAR
    DETECT_INTERRUPTION
    DISABLE_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
  1. 修改 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
posted @ 2025-12-11 01:44  思兼  阅读(0)  评论(0)    收藏  举报