Klipper:从克隆到输入整形三步走,消掉你3D打印机的振纹
【免费下载链接】klipperKlipper is a 3d-printer firmware项目地址: https://gitcode.com/GitHub_Trending/kl/klipper
Klipper是一款把复杂运动计算从打印机主板搬到树莓派上的3D打印机固件。如果你的打印件侧壁有波浪状"回声"振纹、拐角处拉丝和溢料,正是它擅长解决的问题。它不替代切片软件,只换机器的"大脑",适合已经有一台FDM打印机、想把质量再往上推一档的人。
Klipper凭什么救活主板
传统固件把所有运动计算都压在打印机主板的MCU上,算力有限,复杂算法基本跑不动。Klipper把这件事拆成主从两部分:树莓派这类小Linux板负责运动规划、输入整形、压力提前等"重思考",主板只以毫秒级粒度执行运动指令。分工带来两个实在的好处——运动更新频率能推到1kHz以上,步进电机走出的曲线更平滑;过去要改硬件才能实现的高级功能,变成了配置文件里几行参数。
| 维度 | Klipper | 传统单板固件 |
|---|---|---|
| 复杂算法在哪跑 | 树莓派与主板分工 | 难在板内完成 |
| 运动更新频率 | 可达1kHz以上 | 受MCU算力限制 |
| 输入整形/压力提前 | 原生配置项 | 需魔改或不可用 |
从克隆到点火的5步
环境准备三样东西:
- 一块受支持的主板,比如BigTreeTech SKR系列
- 树莓派3B+以上,装好兼容前端(如OctoPi镜像)
- USB数据线,多主板或长线布线时用CAN适配器
- 拿到源码。克隆仓库后进入目录:
git clone https://gitcode.com/GitHub_Trending/kl/klipper cd klipper- 一键安装系统依赖。以OctoPi镜像为例,其他发行版用 scripts/ 里对应的
install-*.sh:
./scripts/install-octopi.sh- 在固件配置菜单里选主板型号,它决定给哪颗芯片编固件;CAN接法的记得勾上CAN bus支持:
make menuconfig- 编译出固件,再用 scripts/ 下对应的烧录脚本(如
flash_usb.py)写入主板:
make- 放好配置文件。在 config/ 里找与你机器同名的
printer-文件作为 printer.cfg 底稿;找不到就选最接近的generic-主板模板,引脚和运动学自己逐项改。参数含义查 docs/Config_Reference.md 即可。
三个核心调校实操
输入整形:消掉振纹
场景:侧壁出现规律振纹、拐角尤其明显,这是机械振动被"印"进了表面。先做机械检查——机架拧紧、皮带张紧,再上输入整形做算法补偿。把ADXL345加速度计接到小板的SPI口,接线如下:
图:ADXL345接入树莓派Pico的SPI接口,树莓派上接法类似
接线完成后跑共振测试,让固件自己测出打印机各轴的共振频率:
TEST_RESONANCES AXIS=X TEST_RESONANCES AXIS=Y接着执行SHAPER_CALIBRATE选出整形器,确认无误后SAVE_CONFIG固化。测试输出的图表很直观,红色曲线是X轴测出的共振峰,套用整形器后的 "After shaper" 线基本贴地:
图:TEST_RESONANCES 的输出,图例列出每个候选整形器的振动抑制比
效果:打印3DBenchy验证,侧壁振纹基本消失,整机晃动也会小一圈。
压力提前:治拐角溢料
场景:不挤出的走位上拉丝、拐角处出料堆积,原因是喷嘴内压力对挤出启停响应慢半拍,压力提前来补这个滞后。做法是打印仓库自带的 docs/prints/square_tower.stl,零填充、高速切片,然后下一条指令,它会让advance值逐层递增,一次打印扫完整个范围:
TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.005效果:打印完用量程卡找拐角质量最好的那一层,把对应值写进 printer.cfg 的[extruder]段pressure_advance参数。Bowden机把FACTOR换成.020,搜索步长更大。细节见 docs/Pressure_Advance.md。
偏斜校正:让正方形回到正方形
场景:打一个200×200的方,卡尺量出两条对角线不等长——说明两轴不是严格垂直。
图:测量对角线AC、BD和边长AD,代入 docs/Skew_Correction.md 的公式算出xy_skew(弧度)
把算出的值填进[skew_correction]段。验证方法就是重打同一个方:对角线回到等长,说明校正生效。偏斜往往只有零点几度,却是尺寸精度上收益最明显的一步。
进阶:整形器怎么挑才不翻车
TEST_RESONANCES 的输出会列出 ZV、MZV、EI、2HUMP_EI 等候选,各自标注振动抑制比和可支撑的加速度上限。取舍逻辑是:EI类抑制更强但会把拐角抹圆一点,ZV类保细节、抑制稍弱。建议选在你实际打印加速度附近抑制比更高的那个——常打精细模型的偏ZV/MZV,机器本身偏软的偏EI类。
验证别凭手感:用仓库 docs/prints/ 里的 calibrate_size 模型,换整形器前后各打一次,对比拐角锐度与壁面光滑度。
日后扩多挤出机或大型机,需要CAN总线挂第二块MCU:menuconfig里启用CAN,配置文件中引脚写成can0:PB0这类前缀写法,uuid用固件启动日志里的canbus_id填入[mcu can0]。用CAN分析仪抓包可确认通信帧是否正常:
图:PulseView抓取的CAN帧结构,用于排查多MCU通信
避坑答疑
Q:menuconfig里找不到我的主板怎么办?固件按"厂商+型号"编译,先核对型号拼写和芯片。芯片不在支持范围时,可先用 config/ 里最接近的generic-模板把机器跑起来,再对照 src/ 下的芯片目录(如 stm32/、hc32f460/、rp2040/)确认自家板子的芯片是否受支持。
Q:上了输入整形振纹还在,是不是没生效?振纹根源在机械侧:机架松动、皮带打滑、运动部件过重,这些算法救不回来。先紧机械、降加速度,整形只做补充。如果 TEST_RESONANCES 图表里共振峰位置怪异或抑制比普遍很低,说明机器本身要先修。
Q:报 Lost steps 是固件不稳吗?多数是步进电流问题:电流偏大易过热丢步,偏小遇负载丢步。先调驱动电流,再查丝杆、导轨等机械阻力。若报的是MCU超时则属通信链路,查USB线缆质量或CAN终端电阻(120Ω)是否接好。
Q:直接抄论坛里的配置文件行不行?不建议。同型号主板不同批次的引脚都可能不同,照抄容易接错或无响应。正确姿势是从 config/ 的printer-文件起步,对照自己主板逐根核对引脚,陌生参数去 docs/Config_Reference.md 查。
Klipper把振纹、溢料、偏斜从机械玄学变成了可量化的配置项。下一步:把机器点亮,先跑一次 TEST_RESONANCES,结果拿不准就到仓库issues里提问。
【免费下载链接】klipperKlipper is a 3d-printer firmware项目地址: https://gitcode.com/GitHub_Trending/kl/klipper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考