跟着思兼学习 Klipper 固件(01)XY电机方向调整新方法
作者:互联网
前言
原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正交流。| 思兼,sjqlwy@gmail.com,2021年11月12日
这段时间研究了一下 Klipper 固件的文档和源码,对它的使用有了更深入的了解,功能丰富,拓展性极强,仅修改参数不需要每次编译固件这点就比 Marlin 方便太多。如果有疑问欢迎留言,简单问题请自行查看文档,复杂问题我会给个思路,实在搞不定可以付费咨询、远程协助,收费是为了证明知识是有价值的,也排除一些连简单基础的问题都伸手白嫖,转嫁时间成本的人。
本来想要列个大纲,按照计划一篇一篇写,但是后来发现有难有易,所以索性想到哪写到哪,最后再整理汇总,先做出来,再做完美。
3D嘛,由 XYZ 3 个轴构成,常见的 3D 打印机架构有笛卡尔和并联臂等,其中前者可以理解为一个轴由一个步进电机控制,比如 i3 龙门架构;后者一个方向的运动由 2 个以上的电机控制,比如 Delta、CoreXY。由于 Voron 等外观好看的 DIY 开源 3D 打印机的流行以及步进电机绕法的区别,很多朋友安装完毕之后需要调试电机方向。
1、目前的调试方法
1.1 图片对比法
- 从 3dphell 网站引用 VoronDesign 的方法
【反正我没看懂】 - 参考小树的文档,链接
这个比上面的好理解点,起码有文字注释。我看了一会儿,也没太搞懂。
1.2 人类高质量CoreXY电机方向调整
参考链接:https://wiki.3dphell.com/zh/basic/calibration
也需要三步,如下图所示:
此流程操作傻瓜,比那些八张图,八个判断条件的流程高到不知道哪里去了。
遗憾地表示,我试了一下也没成功。 而且最差的情况,每一步都要调整配置文件。
2、我的新调试方法
以上方法都需要多次归零(G28)和急停(M112),操作繁琐,理解困难。我的方法只需要运行一个宏,迅速判断出结果,修改一次配置文件。
首先 CoreXY 的官方网站 可以看到其原理图,我们从这里入手。还有一种 H/D-Bot 架构,本文不展开讨论。
实际的绕线图:
我们首先来分析一下 CoreXY 的特点:
-
整个系统有 2 根皮带,对应 2 个电机:A 和 B。挤出头在 X 和 Y 方向上的移动,由两个电机参与完成。
-
当挤出头在斜 45° 移动时,只有一个电机参与。
由于是并联臂结构,其实很多配置里说的 X、Y 电机是不恰当的。除了 X 横梁,A、B电机分别可以放在图示三个位置。我们约定,将 A 电机接到 3D 打印机主板的 X 电机插槽,B 电机接到 Y 电机插槽。
也推荐观看
工程部老周
的视频 《【DIY3d打印入门指南】结构详解,hbot和corexy结构的原理和区别》
之前存在的两种的方法之所以复杂,是因为归零操作一直需要两个电机共同参与,那如果我们观察斜 45° 挤出头的运动方向,此时就像简单的 i3 架构,其运动方向仅一个电机参与,那么就可以快速确认电机方向。
4.1 启用强制移动方便调试
由于 Klipper 的保护措施,只有归零后才能控制轴移动,所以我们要解除这一限制。参考文档。
# 修改 printer.cfg,添加以下内容
# CoreXY 电机方向测试,日常使用请勿开启
[force_move]
enable_force_move: True
# 使能 M118 控制台输出
[respond]
同时,为了防止喷嘴顶到热床,我们先把 Z 轴归零,然后挤出头离开热床 30mm(此过程可以使用下方的宏)。再把挤出头手动移到热床中间,防止调试过程中撞到框架。
4.2 控制单个电机
由于我们仅需要控制一个电机,无法使用诸如 G1 X100 F3000
的命令,查看文档 可知使用以下命令 FORCE_MOVE STEPPER=<config_name> DISTANCE=<value> VELOCITY=<value> [ACCEL=<value>]
进行控制。我们写一个宏,方便操作。
[gcode_macro DIRECTION]
description: 思兼 | 快速确定 A、B 电机方向,需要设置 [force_move] 为 True
gcode:
# 归零 Z轴并抬高30mm,防止误触热床。也可以手动操作。
G28 Z
G1 Z30 F2000
M117 Goto Right-Back # 提示信息显示在屏幕上
M118 Goto Right-Back # 显示在控制台
# 此时挤出头应向右后方移动
FORCE_MOVE STEPPER=stepper_x DISTANCE=20 VELOCITY=10
# 等待 2秒
G4 S2
M117 Goto Right-Front
M118 Goto Right-Front
# 此时挤出头应向右前方移动
FORCE_MOVE STEPPER=stepper_y DISTANCE=20 VELOCITY=10
我们记下挤出头两次的移动情况,对照这个图,理论上 先沿红色向右后方移动 20mm
-> 等待 2s
-> 再沿蓝色向右前方移动 20mm
。那么根据实际情况,我们进行分析:
- 挤出头先沿蓝色方向移动 —— AB电机接反,配置文件中交换引脚,[stepper_x] 和 [stepper_y] 的 x、y 字母对调
- 先沿红色方向向左前方移动 —— A 电机反向,取反 DIR 引脚,对应区域 [dir_pin: ] 取消或者增加后面的
!
- 同样,再沿红色方向向左后方移动 —— B电机接反,取反 DIR 引脚,[dir_pin: ] 取消或者增加后面的
!
- 修改完成后,建议及时关闭
[force_move]
后记
这种方法个人测试下来还是非常方便的,只需要执行一次宏,就可以快速确认电机方向,适合我这种懒人。后续会分享其他更多好玩、无聊的功能。
另外,由于 CoreXY 在 斜 45°移动时,只有一个电机运行,当速度/加速度过快,空驶的时候速度很快,超过单电机的物理能力,就会出现 geng-geng
的声音,这时就是丢步了。那么如何判断电机是否丢步、如何设置电机的理想电流、速度/加速度?请看下文分解。
标签:归零,01,电机,Klipper,XY,挤出,方向,CoreXY,移动 来源: https://www.cnblogs.com/sjqlwy/p/klipper_dir.html