上一篇完成了打印机的基础改造,这一篇给它加上防抖外挂。使用一块MPU6050加速度传感器,直接接在树莓派3上,测量打印机的共振频率,自动生成输入整形(Input Shaping)参数,消除高速打印时的震纹、鬼影。
一、共振补偿原理
打印机快速加减速时,机身和打印头会发生共振,表现在打印件上就是表面震纹和边角重影。Klipper的输入整形功能会提前对运动指令做预补偿,让振动互相抵消。
但每个打印机的共振频率都不同,必须实测才知道。做法是:把加速度传感器装在打印头上,让打印机按不同频率来回振动,传感器记录振动数据,Klipper分析后自动算出最佳补偿参数。
参考官方文档:https://www.klipper3d.org/zh/Measuring_Resonances.html
二、硬件连接
Klipper支持ADXL345、MPU9250、LIS2DW、LIS3DH(以及他们的兼容产品),我手上只有一个MPU6050,也在支持范围。
所需材料:MPU6050模块、杜邦线4根。将 MPU6050 用热熔胶固定在打印头上(要硬固定,不能晃动)。与树莓派3的 GPIO 引脚对应连接:
MPU6050树莓派3引脚说明
| VCC | 1号(3.3V) | 供电 |
| GND | 6号(GND) | 地线 |
| SDA | 3号(GPIO2) | I2C 数据 |
| SCL | 5号(GPIO3) | I2C 时钟 |
Ender-3 S1 是bed slinger 结构,热床负责Y轴移动、热头负责X轴移动,两个轴的振动特性不同,需要分别测量。
X轴用热熔胶把MPU6500固定在热头上,模块上的X 箭头指向热头向右的方向。

Y 轴用热熔胶把MPU6500固定在热床上,模块上的Y 箭头指向热床向前 的方向。

尽量让MPU6050的坐标轴与打印机坐标轴平行,安装方向有偏差时,需通过配置中的axes_map参数修正。
三、树莓派安装MPU6050
MPU6050 走 I2C 总线,先在树莓派上启用I2C,SSH 登录后执行:
sudo raspi-config
选择 Interface Options → I2C → Yes → Finish,然后重启。
MPU6050直接接在树莓派上,数据由主机系统采集,需要让树莓派成为Klipper的第二个MCU。依次执行:
cd ~/klipper/
sudo cp scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service
接着编译 Linux MCU 固件:
make menuconfig
Micro-controller Architecture选择Linux process,按 Q 退出,按 Y 保存。随后停服务、刷固件、重启服务,并把用户加入tty组(pysn换成你的登录用户名):
sudo service klipper stop
make flash
sudo service klipper start
sudo usermod -a -G tty pysn
最后验证MPU6050被识别:
sudo apt install i2c-tools
sudo i2cdetect -y 1
看到地址 68 出现即硬件连接正确。
四、修改配置文件
在 printer.cfg 中追加以下配置:
[mcu rpi]
serial: /tmp/klipper_host_mcu
[mpu9250]
i2c_mcu: rpi
i2c_bus: i2c.1
i2c_speed: 400000
# axes_map 根据实际安装方向调整,见下方说明
axes_map: x,y,z
[resonance_tester]
accel_chip: mpu9250
probe_points:
117.5, 117.5, 20 # Ender-3 S1 热床中心,Z 高于床面 20mm
Klipper使用 mpu9250这个名称来配置整个MPU家族芯片(包括MPU6050/MPU6500/MPU9250/ICM20948等),直接照抄即可,这是官方的命名习惯。
保存重启后,在Mainsail 控制台执行 ACCELEROMETER_QUERY,返回传感器读数即代表连接成功。
五、测量共振频率
先对X轴做共振校准,测试时打印头会来回高频振动,属正常现象:
TEST_RESONANCES AXIS=X
打印机会自动以不同频率振动X轴,同时记录加速度数据(约1-2分钟)。
完成后控制台输出X轴的推荐参数,并生成共振频谱图:
19:54
The SAVE_CONFIG command will update the printer config file
with these parameters and restart the printer.
19:54
Shaper calibration data written to /tmp/calibration_data_x_20260823_195211.csv file
19:54
Recommended shaper_type_x = mzv, shaper_freq_x = 57.0 Hz
19:54
To avoid too much smoothing with '3hump_ei', suggested max_accel <= 7600 mm/sec^2
19:54
Fitted shaper '3hump_ei' frequency = 106.8 Hz (vibrations = 0.0%, smoothing ~= 0.079)
19:54
To avoid too much smoothing with '2hump_ei', suggested max_accel <= 7600 mm/sec^2
19:54
Fitted shaper '2hump_ei' frequency = 84.8 Hz (vibrations = 0.0%, smoothing ~= 0.079)
19:54
To avoid too much smoothing with 'ei', suggested max_accel <= 7100 mm/sec^2
19:54
Fitted shaper 'ei' frequency = 62.4 Hz (vibrations = 0.0%, smoothing ~= 0.085)
19:54
To avoid too much smoothing with 'mzv', suggested max_accel <= 9600 mm/sec^2
19:54
Fitted shaper 'mzv' frequency = 57.0 Hz (vibrations = 0.9%, smoothing ~= 0.063)
19:54
To avoid too much smoothing with 'zv', suggested max_accel <= 14200 mm/sec^2
19:54
Fitted shaper 'zv' frequency = 60.4 Hz (vibrations = 8.1%, smoothing ~= 0.049)
19:54
Calculating the best input shaper parameters for x axis
把传感器挪到热床上,再测Y轴:
SHAPER_CALIBRATE AXIS=Y
Y轴测试结果:

两次校准完成后,执行:
SAVE_CONFIG
Klipper会自动将结果写入 printer.cfg 底部:
#*# [input_shaper]
#*# shaper_type_x = mzv
#*# shaper_freq_x = 57.0
#*# shaper_type_y = mzv
#*# shaper_freq_y = 32.0
两轴均推荐使用MZV整形器:X轴共振频率57Hz,Y轴共振频率32Hz。Y轴频率偏低,说明龙门结构刚性偏弱,MZV对低频振动的抑制更平稳,是合适的选择。重启Klipper使配置生效。
六、效果验证
参数生效后,重新打印之前出现震纹的模型进行对比,开启输入整形后可以放心把打印速度提到100mm/s,加速度提升到3000,墙面震纹基本消失,边角重影明显减轻。
我要赚赏金
