跳转至

# 限位相位

该文档介绍了Klipper的步进电机相态校准限位位置的功能（下称：相态修正）。该功能可以增强传统限位开关的准确性。使用带有运行期间设置的步进电机驱动器，如Trinamic，可发挥该功能的最大作用。

典型的限位开关的精度在100微米左右。（每次归零时，限位触发的位置可深可浅。）尽管该误差很小，但它确时会影响打印效果。对于模型的首层打印而言，该精度会有明显的影响。相对地，步进电机的运动精度显然更高。

相位修正功能可以利用步进电机的精度提高限位开关的精度。 步进电机通过一系列的相位循环运动，直到完成四个 "全步"。例如，一个使用16微步的步进电机，“全步”有64个相位，运动时会通过0, 1, 2, ... 61, 62, 63, 0, 1, 2...的相位循环。最重要的是，当步进电机处于线性轨道上的特定位置时，它应始终处于同一步进相位。因此，当滑车触发限位开关时，控制该滑车的步进电机应始终处于同一相位。Klipper的限位相位系统将步进相位与限位开关触发相结合，以提高归零的准确定。

使用该功能需要确定步进电机的相位。如果使用 TMC2130, TMC2208, TMC2224 或 TMC2660 ，并设置为 运行时设置模式（即，不使用独立（stand-alone）模式），Klipper可以通过访问它们获得相位信息。（使用传统步进电机驱动，在可以可靠地重置驱动地情况下，也能够实现相态检测功能。）

## 校准限位相位

在使用Trinamic驱动 并 使用了运行时设置后，可以使用ENDSTOP_PHASE_CALIBRATE命令进行相位修正。首先在配置文件中加入下列设置：

    [endstop_phase]

之后，依次执行RESTART ，运行`G28`和`ENDSTOP_PHASE_CALIBRATE`。完成后，将打印头移动到一个新位置，再执行`G28`。重复数次，确保每次打印头在不同地位置执行`G28`。最少应重复上述移动-`G28`操作5次。

完成上述操作后，`ENDSTOP_PHASE_CALIBRATE`命令会给出相同或进行的步进电机相位值。该值可以输入到配置文件中，之后G28命令执行使会参考该相位数据。（此后，即使限位开关过早或过晚触发，Klipper在归零时会获得调整到相同的相位。）

要保存特定电机的相位修正信息，可使用下面的命令：

    ENDSTOP_PHASE_CALIBRATE STEPPER=stepper_z

参照上述命令，我们可以保存想要的步进电机信息。通常，stepper_z会用于龙门式或CoreXY式打印机，而stepper_a、stepper_b和stepper_c则用于三角洲。最后运行下面数据保存配置文件：

    SAVE_CONFIG

### 额外要点

- 此功能在Delta打印机和笛卡尔/COREXY打印机的Z端止器上最有用。可以在笛卡尔打印机的XY端止器上使用此功能，但这并不是特别有用，因为X/Y端止器位置的微小错误不太可能影响打印质量。在Corexy打印机的XY端止器上使用此功能是无效的(因为Corexy运动学上的单个步进器不能确定XY位置)。在使用"probe:z_virtual_endstop"Z EndStop的打印机上使用此功能是无效的(因为仅当EndStop位于轨道上的静态位置时，步进器阶段才稳定)。
- 在限位开关校准后，如果移动过限位开关，则需要重新校准相位。此时应删除设置文件中的校准值，然后重新运行相位修正。
- 为使用上述功能，限位开关必的偏差值需低于特定步进电机的两倍“全步长”的距离。因此，如果步进电机使用16微步，此时每个微步的长度为0.005mm，则限位开关的分辨能力应低于0.160mm。如果系统反馈"Endstop stepper_z incorrect phase"（stepper_z相位与限位开关不一致）错误信息，则限位开关的精度太差。如果重新校准未能消除报警，则需要停用相位校准功能。
- 如果打印机使用的是传统步进电机控制的Z轴（如龙门或CoreXY打印机），同时使用了传统的螺母调平的话，则可以使用相态修正功能将打印的每一层的边界设置到一个“全步”上。要使用这个功能则需要在切片软件中将层高设置为“全步”的整倍数，然后在设置文件中的endstop_phase 片段中增加endstop_align_zero选项（详见 配置参考），然后通过调平螺母调平。
- 该系统也有可能用于传统(非Trinamic)步进电机驱动 。然而，这需要每次微控制器复位时，对应的步进电机驱动也同时复位。（如果两者能实现同时复位的话，Klipper能够通过记录步进的总移动步数来确定其相位。）目前，能够可靠地完成微控制器和步进电机驱动地同时复位地方式是，这两者仅通过USB供电并USB电源通过运行有Klipper的树莓派提供。此时可以在配置的MCU章节中添加 "restart_method: rpi_usb"，该选项将安排微控制器始终通过USB电源复位，在仅使用USB供电时，这将安排微控制器和步进电机驱动器一起被复位。使用这种方式时，需要在配置文件中手动设置"trigger_phase"（详见配置参考 ）。

回到页面顶部