低成本入门3D打印机普遍使用T8丝杆做Z轴,丝杆和T8螺母之间的齿合实际一定存在间隙,即使Z轴的细分级数多,Z轴的往复定位误差却是比较大。在笔者组装的机器上,Z轴丝杆空转1/3圈多,Z轴滑块是纹丝不动的。肉眼观察,丝杆头有接近1mm的空行程。实际打印的表现是:第一层打印完毕后,第二、三甚至四层打印喷头并未实际抬升,仍然在第一层上反复移动,而又因为第一层的料已固化,喷头被堵住无法出料,出料齿轮咔咔作响。打印出来的物件,明显底座薄且有大象腿的现象。
回差的问题有消回差螺母可以帮助改善,然而需要对Z滑块进行改造才能使用,且消回差螺母会增加丝杆的阻力和磨损。考虑到在3D打印过程中,Z轴总是做Z坐标值增加方向的运动,我们可以尝试通过修改切片打印文件头部的开始代码解决此问题。
以笔者使用的Cura软件为例, 默认开始打印Gcode代码为:
G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruder
G92 E0
G1 F200 E3
G92 E0
其中G28是回系统原点。G1 Z15.0 F6000是打印物件前将喷头抬升15mm。假设Z轴丝杠间隙导致的空行程有1mm即系统发出了1mm的移动指令,丝杆空转滑车不动。G28系统回原点是通过X,Y和Z轴各自的限位开关判断原点位置。系统在Z轴原点附近往复1次触发开关动作1次后初始化Z原点位置。此时Z滑车行进方向向下。抬升15mm指令执行后,实际喷头抬升至14mm位置,此时滑车的行进方向向上。打印第一层的代码如G0 F3600 X44.08 Y39.922 Z0.3将使得系统向下移动喷头14.7mm,在滑车行进方向由向上改变至向下过程中,又发生1mm的空行程,喷头从实际位置14mm下移了13.7mm,准确到达0.3mm的位置,此时Z滑车行进方向向下。如果层高是0.2mm,首层0.3mm打印完毕后,Z轴滑车需从行进方向向下切换为向上,记住丝杠有1mm的空行程,实际第二层系统指令抬升0.2mm,喷头却仍停留在0.3mm的位置,还有0.8mm的空行程没有跑完呢。后续还要再有四层,4个0.2mm的抬升,才能将1mm的空行程跑完。只有从第六层的开始,喷头实际才移动到0.5mm。
由以上分析可知,Z轴的空行程发生在行进方向改变的时候。由于3D打印物件的过程中,Z轴总是发生上升运动,只要在首层比如0.3mm的位置,保证滑车已是向上运动的状态,那么后续的抬升就不会有空行程干扰了。更改打印开始G Gode如下:
G28 ;Home
G1 Z1.3 F6000 ; Z offset shift removal
G92 Z0.3 ; Z offset shift removal
...
...
在G28回系统初始原点后,G1 Z1.3 F6000将使得系统Z轴理论上移1.3mm,实际上,1mm空行程被跑完后喷头抬升到0.3mm位置。G92 Z0.3设定系统认定Z轴当前位置为0.3mm。后续物件打印命令Z轴的抬升都能够到达准确的实际位置了(设置如图)。

经过以上调整,基本上第一层及后续几层不能好好打的问题得以解决。