RepRap Prusa i3 平台自动补正
平台校正不但费时,而且经常失败,时在是狠令人洩气!期盼了好一阵子,Marlin终於将平台自动补正的功能加进来了!!这个功能将原本Z轴的Endstop,改装到挤出头的旁边,让Endstop直接接触打印平台,让Marlin值接测量到平台的实际位置。不但如此,Marlin会测量平台上三个不同位置,然后计算出整个平台倾斜的状况,并依此补正打印空间的水平方向,让打印做品跟著平台一起倾斜,作品本身的三维维持垂直。如此一来,就不必每次打印前,都要耗费时间跟精神,手动做平台校正工作。
硬体
伺服马达我选用SG-90,比较轻巧,耗电也不多,可以直接使用RAMPS的5V电源而不至於让RAMPS当机。
i3用的伺服马达支架,以及探针脚,我放在这边:
http://www.thingiverse.com/thing:182889
探针的微动开关,直接使用用Z轴的EndStop。不过走线比较长,要重新佈线。
探针的最低点,要比喷头的最低点还低,但不要低过一公分,避免探测过程中发生碰撞。
伺服马达接线如下图所示:
韧体设定步骤
预先烧录
将configuration.h中以下这几行的註解符号删去(行首的 "//" 删掉)
#define ENABLE_AUTO_BED_LEVELING // Delete the comment to enable (remove // at the start of the line)
#define NUM_SERVOS 3 // Servo index starts with 0 for M280 command
#define SERVO_ENDSTOPS {-1, -1, 0} // Servo index for X, Y, Z. Disable with -1
#define SERVO_ENDSTOP_ANGLES {0,0, 0,0, 165,60} // X,Y,Z Axis Extend and Retract angles
将 NUM_SERVOS 改為1
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
将 Marlin 烧入 RAMPS
烧录完毕后,伺服马达会移动到60的位置。
使用M code "M280 P0 S{angle}"可以控制伺服马达转动到指定的位置(例如M280 P0 S60),找出探测时应该要在几度,收起探针应该要几度。假设找出来的度数分别是165度跟60度。
将找出来的度数填回"SERVO_ENDSTOP_ANGLES"。然后重新烧录Marlin。
测量探针与挤出头的相对位置
在打印台中央做个小记号,然后移动挤出头的位置,让挤出头正好碰触记号。
用G code "G92 X0 Y0 Z0"让 Marlin 把现在位置当作原点。
用G code "G1 Z30" 把Z轴抬高。
用M code "M401",让伺服马达移动到探测的位置。
用控制软体移动XY轴,让探针接触点在记号的正上方(这个步骤不必非常精确,位置大概对就好)。
用控制软体,让Z轴每次下降0.1mm,并检查探针是否被触发。可以用M code "M119"来确认是否触发。这个步骤必须非常精确,要测量到探针刚好被触发时Z轴的高度。
触发后,使用M code "M114"读回目前XYZ座标。(如果有LCD,可以直接参考LCD上的数据。控制软体上的XYZ座标会有错误,请不要参考。)
读出来的座标,乘以负一之后填入设定档。假设M114读回来的座标是 X:24.3 Y:-31.4 Z:5.1,则在设定档中,找到以下这三行,并且把数值如下填好。
#define X_PROBE_OFFSET_FROM_EXTRUDER -24.3
#define Y_PROBE_OFFSET_FROM_EXTRUDER 31.4
#define Z_PROBE_OFFSET_FROM_EXTRUDER -5.1
设定测量位置
这四个参数用来设定测量面的边界,请依照机器XY工作范围的边界做缩减后,填入设定档。如果手边的机器是 Prusa i3,可以直接使用以下的数据。
#define LEFT_PROBE_BED_POSITION 30
#define RIGHT_PROBE_BED_POSITION 140
#define BACK_PROBE_BED_POSITION 140
#define FRONT_PROBE_BED_POSITION 30
测量过程中XY轴移动的速度,单位是mm/min,建议用预设值就好。
#define XY_TRAVEL_SPEED 6000
探测前抬高Z轴,避免探测脚与平台相撞。可以先设到50mm。如果有把握不会撞到,再回来改。
#define Z_RAISE_BEFORE_PROBING 10
探测过程中抬高Z轴。如果平台没有倾斜得狠厉害,探测过程中应该是不会撞到平台的。用预设值就狠安全了。
#define Z_RAISE_BETWEEN_PROBINGS 10
最后烧录
相关设定都完成了,再烧录一次Marlin,机器就具备平台自动补正的功能了!
G-code Prefix修改
机器只会照著Gcode的指令工作,一般切片软体產生出来的G code,并不会通知机器要做平台自动补正。如果没有加上自动补正的命令稿在 G code Prefix裡面,那就没办法享受到自动补正的功能,甚至还会造成机器的伤害。千万要小心、耐心做好以下的步骤。
KISSlicer
M104 S2 开始加热挤出头
G92 Z02 目前的Z位置设為原点
G1 Z102 Z向上移10mm,避免探针放下时发生碰撞。
G28 Y2 Y轴归零
G28 X2 X轴归零
G1 X100 Y100 F60002 挤出头位移到平台中心
M4012 放下探针
G28 z2 Z轴归零
G292 平台补正侦测
G1 Z5 F3000 2 抬高Z轴
M109 S2 等待温度到达工作温度
M822 E轴使用绝对座标
Slic3r
M104 S[first_layer_temperature]2 开始加热挤出头
G92 Z02 目前的Z位置设為原点
G1 Z102 Z向上移10mm,避免探针放下时发生碰撞。
G28 Y2 Y轴归零
G28 X2 X轴归零
G1 X100 Y100 F60002 挤出头位移到平台中心
M4012 放下探针
G28 z2 Z轴归零
G292 平台补正侦测
G1 Z5 F3000 2 抬高Z轴
M109 S[first_layer_temperature]2 等待温度到达工作温度
M822 E轴使用绝对座标
修改好之后重新做切片,就可以开始测试平台自动补正的功能了。
实际使用时Z轴高度可能还是会有些误差,需要回头微调 Marlin 中的 Z_PROBE_OFFSET_FROM_EXTRUDER 参数。
参考资料
https://github.com/ErikZalm/Marlin
http://reprap.org/wiki/RAMPS_1.4
http://kisslicer.com/
http://slic3r.org/ |
|