2. 配置打印机基本参数

任务说明

为Klipper固件编写一份可用的printer.cfg,完成三项核心配置:步进电机引脚映射、热端温度传感器类型声明、挤出机基础参数设定,使打印机能够执行基本的运动指令(如归位与挤出测试)。本案例以常见的Cartesian结构、使用TMC2209驱动的三轴步进电机和NTC 100K热敏电阻的挤出机为配置对象。

硬件假设与引脚映射

为便于独立复现,本案例基于以下硬件约定(实际使用时需按主板原理图修改):

  • 控制板:常见8位或32位主板,步进驱动STEP/DIR引脚直接连接MCU的GPIO;
  • X轴:STEP=PC0,DIR=PC1,限位开关=PC2;
  • Y轴:STEP=PC3,DIR=PC4,限位开关=PC5;
  • Z轴:STEP=PC6,DIR=PC7,限位开关=PD0;
  • 挤出机:STEP=PD1,DIR=PD2;
  • 热端温度传感器:ADC引脚PA0,类型为NTC 100K(beta 3950);
  • 加热棒:PWM引脚PD3;
  • 风扇(可选):PD4。

printer.cfg 完整实现

# printer.cfg - Klipper 基本运动配置
# 适用于Cartesian结构,TMC2209驱动,NTC 100K热敏电阻

[stepper_x]
step_pin: PC0
dir_pin: PC1
enable_pin: !PC5          # 低电平使能,按需取反
microsteps: 16
rotation_distance: 40     # 假设2mm丝杆导程,16细分,200步/圈:40mm/圈
endstop_pin: ^PC2         # ^表示上拉输入
position_endstop: 0
position_min: 0
position_max: 200
homing_speed: 50

[stepper_y]
step_pin: PC3
dir_pin: PC4
enable_pin: !PC5
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC5
position_endstop: 0
position_min: 0
position_max: 200
homing_speed: 50

[stepper_z]
step_pin: PC6
dir_pin: PC7
enable_pin: !PC5
microsteps: 16
rotation_distance: 8       # 假设T8丝杆导程8mm
endstop_pin: ^PD0
position_endstop: 0
position_min: 0
position_max: 200
homing_speed: 20

[extruder]
step_pin: PD1
dir_pin: PD2
enable_pin: !PC5
microsteps: 16
rotation_distance: 22.678 # 常见挤出机齿轮比,需实测校准
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PD3
sensor_type: NTC 100K     # 热敏电阻类型
sensor_pin: PA0           # ADC引脚
min_temp: 0
max_temp: 250
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_extrude_temp: 170     # 低于此温度禁止挤出

[heater_fan extruder_fan]
pin: PD4
heater: extruder
heater_temp: 50.0

[fan]
pin: PD5

[mcu]
serial: /dev/ttyUSB0      # 根据实际串口修改
baud: 250000

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 20
max_z_accel: 100

配置说明与关键参数

rotation_distance表示电机轴旋转一圈所移动的距离(mm)。对于X/Y轴,若使用2mm导程丝杆且电机200步/圈、16细分,则每圈移动2mm,但此处设置为40mm是假设通过同步带轮(如20齿GT2带轮,带距2mm)驱动,即每圈移动40mm。Z轴使用T8丝杆(导程8mm)时设为8。实际值需根据机械结构计算或通过STEPPER_BUZZ测试后校准。

温度传感器类型NTC 100K对应常见100K@25℃热敏电阻,beta值为3950。若使用其他传感器(如PT1000或热电偶),需相应修改sensor_type并可能需要额外硬件。加热棒PWM引脚与传感器ADC引脚必须与控制板实际连接一致。

挤出机的rotation_distance为近似值,精确值需通过“挤出100mm实际测量”方法校准。PID参数为常见值,首次运行建议执行PID_CALIBRATE命令获得更佳参数。

落地与验证方法

  1. 将上述内容保存为printer.cfg,放入Klipper配置目录(如~/printer_data/config/);
  2. 根据实际主板修改[mcu] serial串口路径,并确认固件已编译烧录且ls /dev/serial/by-id/能看到设备;
  3. 重启Klipper服务:sudo systemctl restart klipper,观察~/printer_data/logs/klippy.log无报错;
  4. 在Fluidd/Mainsail控制台执行FIRMWARE_RESTART,然后依次执行:
QUERY_ENDSTOPS          # 检查各限位开关状态是否正常
STEPPER_BUZZ STEPPER=stepper_x   # X轴电机应振动并步进
PID_CALIBRATE HEATER=extruder TARGET=200   # 热端PID整定(需接加热棒)
G28                     # 三轴归位
G1 X50 F1200            # X轴移动50mm
G1 E10 F60              # 冷端禁止挤出,需先加热
M104 S200               # 设定热端温度
M109 S200               # 等待到达200℃
G1 E10 F60              # 挤出10mm耗材

判定标准:

  • Klipper启动无配置错误,QUERY_ENDSTOPS能正确反映限位开关触发状态;
  • STEPPER_BUZZ时对应电机有明显步进动作且方向正确;
  • G28能完成三轴归位且不撞限位;
  • G1 X50后X轴实际移动约50mm(可用尺测量);
  • 热端加热至200℃后,G1 E10能正常挤出耗材,且挤出长度与设定值偏差在可接受范围(通常<5%)。

常见问题排查

  • 电机不转:检查enable_pin极性(!表示低电平使能),确认驱动供电正常;
  • 温度读数异常:确认sensor_type与sensor_pin匹配,ADC引脚未接错;
  • 归位方向反:交换dir_pin的!取反或调整position_endstop;
  • 挤出机堵转:检查rotation_distance是否过大导致实际挤出不足,或加热温度不足。
Klipper 基本运动配置 - 引脚与数据流 MCU (mcu) serial: /dev/ttyUSB0 baud: 250000 PC0/PC1 → X STEP/DIR PC3/PC4 → Y STEP/DIR PC6/PC7 → Z STEP/DIR PD1/PD2 → E STEP/DIR PC2/PC5/PD0 → 限位 PA0 → 热敏ADC PD3 → 加热PWM PD4 → 风扇 X/Y/Z 步进电机 TMC2209 驱动 挤出机电机 E stepper 热端 (extruder) NTC 100K @ PA0 加热棒 @ PD3 printer.cfg 关键配置 [stepper_x/y/z] step_pin / dir_pin / enable_pin rotation_distance: 40/40/8 endstop_pin: ^PC2/^PC5/^PD0 [extruder] sensor_type: NTC 100K sensor_pin: PA0 heater_pin: PD3 pid_Kp/Ki/Kd: 22.2/1.08/114 [printer] kinematics: cartesian max_velocity: 300 mm/s 验证: G28 → G1 X50 → M109 S200 → G1 E10