3D打印机添加主动仓温
1、准备材料
- 一台3D打印机(本文下位机以**怪兽8“MKS Monster8 V2.0”**为例,其他下位机也可以,只要有2~3个空闲的控制接口,修改配置文件接口即可)
- 一块PTC加热块(不推荐使用加热丝)
- 一个风扇
- 一个温度保险(可选,加上温保安全些)
- 一个直流控交流的固态继电器(我使用的是15A的,PTC功率低的话可以选择更低电流的继电器,接线前注意固态继电器的标识:控制端±、输入端与输出端)
- 3950 ntc100k 热敏(用于测量仓温)
- 导线若干
我使用的是1.2kw(商品介绍写的是1.2kw,实际拆出的PTC上写的是1kw)的暖风机,拆机取出PTC加热块、温保、风扇
基于暖风机简单画了个改造外壳,已上传至MakerWorld
国际MW链接:https://makerworld.com/zh/models/1331990-nuan-feng-ji-gai-zhu-dong-cang-wen-_gai-zao-wai-ke#profileId-1370444
国内MW链接:https://makerworld.com.cn/zh/models/1146738-nuan-feng-ji-gai-zhu-dong-cang-wen-_gai-zao-wai-ke#profileId-1206943
2、接线
接线有2种接法,一种是风扇与PTC加热块两个设备接一个控制接口(并联式),另一种是风扇与PTC加热块两个设备分开,各接一个控制接口(分离式)
- 并联式
并联式:
- 风扇随PTC加热块一起开关;
- 一共需要2个空闲的接口:1个可控接口、1个测温接口
- 根据风扇电压选择接线,若是220v风扇则接于固态继电器的输出与220v的零线,5/12/24V风扇则与固态继电器一同接于下位机控制接口,注意根据风扇电压选择接口电压
- 并联式在停止加热后风扇也会直接停止,个人认为 PTC加热块会有余热有可能会影响ABS打印的外壳,并且PTC和风扇的电流限制是一起的,所以我选择分离式

- 分离式
分离式:
- 风扇与PTC加热块分开控制;
- 一共需要3个空闲的接口:2个可控接口(PTC和风扇)、1个测温接口
- 固态继电器我是接在下位机的空闲的加热端接口、风扇接在空闲的可控风扇接口

3、printer.cfg配置文件添加代码
-
检查配置文件是否已有仓温配置
注意:若你原配置文件中有仓温配置,需先注释掉或者在原有配置上修改,若没有则跳过这一步
#[temperature_sensor 仓温] ## sensor_type: NTC 100K MGB18-104F39050L32 #sensor_type: Generic 3950 #sensor_pin: PA2 #pullup_resistor:4700 -
添加仓温配置
对应接口引脚的pin值需要你自己查阅你主板的pin图自行修改,如果你不知道什么是pin图,咨询你的主板卖家。
#-------------------------------------------------------------------- # 仓温 #-------------------------------------------------------------------- [heater_generic hot] heater_pin:PB1 #仓温控制引脚 max_power:0.6 #仓温功率 sensor_type:NTC 100K MGB18-104F39050L32 #热敏型号 sensor_pin:PC1 #热敏引脚 control = watermark max_delta: 1.0 min_temp:-50 #最低温度 max_temp:70 #最高温度 [verify_heater hot] max_error: 300 #报错之前最大的“累计温度偏差”,更小的值会导致更严格的检查,而更大的值在报错前允许更多的时间,当计数值超过“max_error”就会报错,默认值是120 check_gain_time:480 #制着加热器初始化加热时的检查,默认值对于挤出头是20秒,热床是60秒 hysteresis: 5 #目标区间内的最大温差(以摄氏度为单位),控制着 max_error区间检测,默认是5 heating_gain: 1 #在check_gain_time检查中最小需要升高的温度(以摄氏度为单位),默认是2 #----------------------------------------------------------------------------------- -
若选择分离式,则还需一段风扇配置文件(并联式请忽略这一步)
- 如果想让风扇在仓温低于某个温度前依然运行,则使用这一个配置
[heater_fan hot_fan] #仓温风扇:加热器停止后,风扇需在温度降至“heater_temp”下才会停止 pin: PA0 #仓温风扇引脚 max_power: 1 #最大功率 shutdown_speed: 1 #系统发生错误时的风扇速度 heater:hot #绑定仓温PTC模块 heater_temp: 40.0 #仓温必须降至此温度以下,风扇才会停止。默认值为摄氏50度。 - 如果想让风扇在停止加热后依然运行一段时间,则使用这一个配置
#[controller_fan hot_fan] #仓温风扇:加热器停止后,风扇需再运行 “idle_timeout” 秒后才会停止 #pin: PA0 #仓温风扇引脚 #max_power: 1 #最大功率 #heater: hot #绑定仓温PTC模块 #fan_speed: 1 #风扇的速度 #shutdown_speed: 1 #系统发生错误时的风扇速度 #idle_timeout: 30 #在步进驱动器或加热器不再活跃后风扇应保持运行的时间(以秒为单位)。默认值为 30 秒。
- 如果想让风扇在仓温低于某个温度前依然运行,则使用这一个配置
-
添加宏
- M141宏
[gcode_macro M141] gcode: SET_HEATER_TEMPERATURE HEATER=hot TARGET={params.S} - M191宏(如果缺少这一段宏会导致无法自动开启仓温)
[gcode_macro M191] gcode: {% set s = params.S|float %} {% if s == 0 %} # If target temperature is 0, do nothing M117 Chamber heating cancelled {% else %} SET_HEATER_TEMPERATURE HEATER=hot TARGET={s} # Orca: uncomment the following line if you want to use heat bed to assist chamber heating # M140 S100 TEMPERATURE_WAIT SENSOR="heater_generic hot" MINIMUM={s-1} MAXIMUM={s+1} M117 Chamber at target temperature {% endif %}
- M141宏
-
在结束G和取消打印宏添加停止命令(可以直接添加末尾)
- 结束G
[gcode_macro PRINT_END] gcode: ... ... #以上你的原有配置不要动 M141 S0 # 就把这一行,加到你的[gcode_macro PRINT_END]配置项里,目的是在打印结束时,自动停止加热 #以下你的原有配置不要用 ... ... - 取消打印宏(如果有)
[gcode_macro CANCEL_PRINT] #如果你有取消打印宏,别忘了把M141 S0加到里
- 结束G
