一、基础介绍
Klipper固件是一种开源的3D打印机固件,它的主要特点是:运行在单片机外部的计算机(例如树莓派)上,利用单片机仅仅负责机械运动和传感器数据采集,而所有高级运算都交给单片机外部的计算机完成。这种设计使得Klipper固件可以在性能有限的单片机上运行更加复杂的算法(例如非线性插值算法),从而提高打印机的精度和速度。
下面我们来看一下如何在树莓派上安装Klipper固件:
[sudo] apt-get install python3 python3-pip python3-dev python3-setuptools cmake libudev-dev
git clone https://github.com/KevinOConnor/klipper
cd klipper
make menuconfig
# 若需要多进程,可添加 `USE_PROCESSING=1` 参数
make
二、核心功能
Klipper固件的核心功能主要有以下几个方面:
1. 高级运算
利用单片机外部的计算机完成所有高级运算,Klipper固件可以实现更为复杂的算法,例如非线性插值算法、G2/G3圆弧插补等等。这些算法可以提高打印机的精度和速度。
2. 多机器人协作
Klipper固件可以通过层层布线和FPGA实现多个打印头的协作工作。通过协作,Klipper可以更快地完成打印任务,还可以打印出更加复杂的立体结构。
3. 兼容多种机型
Klipper固件可以兼容多种机型和电子元器件,用户不必担心自己的打印机硬件是否支持该固件。
三、示例代码
下面是一个用Klipper固件编写的基于PID算法的自动调节引导轮的示例代码:
[gcode_macro AUTO_BED_LEVEL_COMPLETE]
gcode:
BED_MESH_OUTPUT
[gcode_macro BED_MESH_OUTPUT]
gcode:
{IF_PRINT}G28{WHITESPACE}{IF_BED}M420{WHITESPACE}S1{NEWLINE}
{IF_PRINT}G29{WHITESPACE}{IF_BED}M500{WHITESPACE}M420{WHITESPACE}S1{NEWLINE}
{IF_BED
G1{WHITESPACE}X0{WHITESPACE}Y0{WHITESPACE}Z10{FANSPEED}S255{NEWLINE}
G1{WHITESPACE}X5{WHITESPACE}Y5{WHITESPACE}Z10{FANSPEED}S255{NEWLINE}
G1{WHITESPACE}X-5{WHITESPACE}Y5{WHITESPACE}Z10{FANSPEED}S255{NEWLINE}
G1{WHITESPACE}X0{WHITESPACE}Y0{WHITESPACE}Z10{FANSPEED}S255{NEWLINE}
}
M117 Bed leveling {IF_BED}complete{ELSE}failed{ENDIF}
四、技巧和经验
Klipper固件的使用也有一些技巧和经验需要注意:
1. 外部连接
Klipper固件需要外接计算机才能运行,这意味着打印机需要与计算机相连,如果连接方式不好,会影响打印机的稳定性。为了避免这种问题,我们可以使用尽可能短的线缆连接,使用好的连接器,或者使用无线连接。
2. AC驱动器
Klipper固件可以使用AC驱动器,这种驱动器可以为机器提供更加稳定的电源,从而提高打印机的可靠性和稳定性。
3. 南方3D打印
与南方3D打印配合使用,可以避免3D打印过程中的挤出压力问题,使得打印质量更加稳定。