目 录CONTENT

文章目录

Ender-3S加装3DTouch实现自动网床校准

成培培
2026-02-04 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

最近给3D打印机更新了Klipper固件,并且启用了网床校准功能,目前是通过纸测法手动创建网床,详情参考:Klipper固件手动网床校准,本来是挺好用的,但是发现早上刚创建的网床挺好用的,结果到下午机器经过的冷机再热机后,打印效果就变差了好多 ,可能是因为冬天温度低,一冷一热形变比较严重,这就很尴尬了,难道每次打印前我都来一次手动网床校准吗,那也太麻烦了,所以解决加装3D Touch进行自动网床校准。

3DTouch介绍

其实正版应该叫BLTouch,3DTouch属于山寨仿品,但是BLTouch太贵了,3DTouch也不是不能用

接口定义

一般3DTouch会引出5根线:黑、白、黄、红、蓝,分为两组,黑白一组,黄红蓝一组。
其中黑白是用来取代原来的Z轴限位开关用的,白色是限位开关信号线,黑色是GND。
黄红蓝是探针控制组,黄色接到任意一个可用GPIO口,红蓝是VCC和GND。

硬件连接

上面说到黑白是用来取代原来的Z轴限位开关用的,白色是限位开关信号线,黑色是GND,所以我们需要拔掉原来的z-stop接口,安装原来的线序街上黑白这组线。
黄红蓝这组探针控制线路对于我来说就比较麻烦了,因为我的老主板上并没有预留的扩展接口,如果你的主板比较新大概会预留,所以我这里考虑了以下的解决方案:

  1. 查看Klipper配置文件,看看有哪些引脚没有被定义,也就没有被使用,那么我们可以通过飞线把没有被使用的一个GPIO口引出来接到黄线上,但是这对于我来说太困难了,没那技术
  2. 拔掉LCD屏幕排线,在配置文件里把[display]相关配置删掉,也就是禁用掉LCD屏幕,这样露出来的那10个IO口我们就可以随便用了,虽然少了个LCD屏幕,但是Klipper固件本身就不太用得着屏幕,也就无所谓了,实在想要屏幕晚上有卖转接板的,插上转接板lcd排线再插上也能用,因为Klipper固件里并没有把10个IO口都用上,有几个空闲了
  3. 使用ISP接口中的引脚,ISP接口中的MISO、SCK、MOSI分别对应了主控的PB6、PB7、PB5三个引脚,理论上来说klipper运行期间这3个引脚都是可以作为普通GPIO口使用的

所以我这里暂时准备采用ISP里的MOSI也就是PB5引脚,实在不行我就拔掉LCD屏幕吧。

配置修改

接线完成后,printer.cfg配置文件如下地方就需要修改了:

[stepper_z]
..... 原来的配置不动
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: -1

[bltouch]
sensor_pin: ^PC4
control_pin: PB5
x_offset: 0
y_offset: 0

[safe_z_home]
home_xy_position: 117.5, 117.5
speed: 80
z_hop: 5
z_hop_speed: 5

原来的限位开关取消了,sensor_pin探针传感器取代了它,并且这里一定要配置上拉,虽然有些地方会说这里最好外部接上拉电阻,但是我嫌麻烦,先试试单片机内部上拉怎么样,control_pin是探针控制就是刚才接到MOSI里的黄线。xy轴的偏移量需啊哟手动测量,他们代表探针头和喷头在三维空间里的偏移量。
最下面的Z轴安全归零配置是怕探针在热床外面探测不到热床面,导致喷头撞针。

重启测试校准

重启后执行以下命令:

# 测试探针伸长
BLTOUCH_DEBUG COMMAND=pin_down
# 测试探针回缩
BLTOUCH_DEBUG COMMAND=pin_up
# 校准“探针触发点”与“喷嘴真实高度”之间的 Z 偏移量(z_offset)
PROBE_CALIBRATE

用于测试探针的伸缩功能,以及校准z_offset,执行PROBE_CALIBRATE会有几个步骤:

  • 自动 Home(X / Y / Z)
  • 移动到床面中心
  • 用探针测一次床
  • 把喷嘴移动到“刚好接触床”的位置
  • 让你用 TESTZ 指令 人工微调
  • 记录这个差值 → 写入 z_offset

每次打印自动网床校准

确认以下动作已经完成了:

  • PROBE_CALIBRATE(z_offset 已保存)
  • [bed_mesh] 已配置
  • [safe_z_home] 已配置
  • ✔ Z 归零来源是 probe:z_virtual_endstop

现在可以修改开始打印的宏定义了,让打印机每次打印前都是用自动网床校准创建新的网床:

[gcode_macro START_PRINT]
gcode:
    # 清空旧 mesh
    BED_MESH_CLEAR
    G28
    # 热态网床校准
    BED_MESH_CALIBRATE

原来的BED_MESH_PROFILE LOAD=default就不需要了,每次打印都是创建新的网床直接使用。

0

评论区