本篇主要讲解硬件连接以及代码编写。至于模块的引脚排列、原理图、特性、规格、接口在上一篇已经进行了详细介绍,不清楚的朋友请回看,本篇就不再赘述。
硬件连接
①一般的TMC2209
上图为TMC2209模块接线图,如果要使用到无传感器归零功能的话,要把DIAG引脚焊上并连接,不用时要去除。
使用串口通信模式的话,需要把底下PDN跳线帽接上。
②Fly TMC2209
本人使用的是Fly TMC2209,与一般的TMC2209上的区别就是:
一般的TMC2209如果需要不使用无传感器归位功能的话,必须要移除DIAG引脚。一般来说,需要拆焊并拔出引脚,或者从步进驱动器上完全切断销钉。也有人通过讲引脚弄弯来解决,但这些方法对我来说都太过麻烦了。
所以我选择使用Fly TMC2209是因为该模块在步进驱动器按了个小型的DIP开关,可以简单进行随意切换无传感器归零功能。
代码部分
步进电机的定义。不同的打印机类型(由[printer]配置部分中的“运动学”选项指定)需要不同的步进器名称(例如,stepper_x vs stepper_a)。
[stepper_x]
# X轴电机脉冲引脚设置
step_pin: PE11
# X轴电机方向引脚设置,可以通过添或删除引脚前面的!来改变电机的运转方向
dir_pin: PE10
#dir_pin: !PE10
# X轴电机使能引脚设置
enable_pin: !PE9
#---Klipper0.9以上版本设置---
# 电机细分设置
microsteps: 16
# 主动带轮周长mm(2GT-20T带轮40,2GT-16T带轮32)
rotation_distance: 40
# 电机单圈所需脉冲数(1.8度电机:200,0.9度电机:400)
full_steps_per_rotation: 400
# X轴最小行程--软件限位
position_min: 0
# X轴最大行程--软件限位(如果是350机型,需更改为350)
position_max: 350
# X轴的机械复位点坐标(如果是350机型,需更改为350)
position_endstop: 350
# 复位速度
homing_speed: 25
# 第一次触发复位开关之后的后退距离
homing_retract_dist: 0
# 复位方向(一般不需要改动)
homing_positive_dir: true
# 限位开关PIN脚设置(X-)
endstop_pin: tmc2209_stepper_y:virtual_endstop
通过单线UART配置TMC2209步进电机驱动器。要使用这个特性,定义一个带有“tmc2209”前缀的配置节,后面跟着相应的步进配置节的名称(例如,“[tmc2209 stepper_x]”)。
[tmc2209 stepper_x]
# TMC2208 PDN_UART引脚
uart_pin: PA15
# 步进电机驱动器使用的微步数
microsteps: 16
# 如果为真,则启用步进插值(驱动程序内部将以256微步的速度步进)。
interpolate: True
# 在步进移动过程中配置驱动器所使用的电流(单位为安培RMS)。
run_current: 0.8
# 当步进器不移动时,配置驱动器所使用的电流(单位为安培RMS)。
hold_current: 0.6
# 电机感应电阻的电阻(以欧姆为单位)
sense_resistor: 0.110
# 如果步进电机速度低于这个阈值,“stealthChop”模式将被启用。
stealthchop_threshold: 200
# 灵敏度值
driver_SGTHRS:100
# DIAG引脚
diag_pin:PB8
当打开无传感器归零功能将创建一个“tmc2130_stepper_x:virtual_endstop”虚拟引脚,它可以用作步进器的endstop_pin。这样做可以实现“无传感器导引”。(确保将driver_SGT设置为适当的敏感值。)默认是不启用无传感器导航。
所以当使用无传感器归零功能时,原[stepper_x]中的endstop_pin需配置为
tmc2130_stepper_x:virtual_endstop虚拟引脚。
由于篇幅原因,本示例演示了X轴电机代码配置,具体引脚需根据自己的开发板进行配置。其他轴电机配置与X轴同理。