3D打印的各种问题及解决方案
http://insights.thoughtworkers.org/qa-for-3d-printing/
3D打印机已经买回来几个月了,基本上每天都要打印一些东西,期间遇到了很多的问题积累了很多的经验。虽然现在桌面级的3D打印也算是比较简单好用了,但要追求好一点的打印质量,还是得折腾。
打印校准
打印机的校准包括X、Y、Z和A、B(就是喷头)两个轴的校准。最重要的是XYAB,因为他们直接关系到打印的尺寸大小及表面质量。
Cura和Slic3r等工具导出的是GCODE格式。GCODE格式使用明文描述路径。Sailfish Firmware只支持X3G文件,是一种二进制文件。由于打印机所使用的CPU速度较慢,处理文件并转换成脉冲比较慢,会影响打印质量。所以使用GPX工具将GCODE转换为X3G后,每个指令所走的位置都已经转换成脉冲,甚至可以对一些路径进行加减速的处理。打印机的CPU就可以直接的读取脉冲并控制电机运动。
XY steps/mm矫正
在转换的过程中,XY的steps per mm这个参数非常重要,讲的是走一个毫米需要多少的脉冲,如果该值过小,则会少走一些距离,造成距离偏小。这个和机器的结构有一定的关系,牵扯到同步齿的齿数、电机的参数等,RepRap Calculator提供了这个参数的计算器,非常方便。
MBot最初用的是17齿的齿轮,和Replicator是一样的。后来经过改进用了18齿的齿轮,和Replicator 2是一样的。通过计算器可以看到,88.89 steps/mm是理论值,但是MBot和Replicator 2中用的是88.573186这个值。和88.89比较起来,会少走一些距离,导致最后打印尺寸偏小。dcnewman开发的GPX提供了正确的参数,但截至目前尚有一些问题,不建议使用。
为了矫正88.57带来的误差,可以采用自定义的配置文件进行配置。mbot.ini是我的Mbot Cube的配置文件,在使用gpx的时候,指定gpx -c mbot.ini xxxx.gcode即可正确转换。
当然你的打印机可能依然不是正确的,需要使用一些工具进行矫正。传统的做法是使用20mm calibration box,测量外观尺寸。但这样做有一个缺点,由于喷头挤出的塑料可能有误差,会造成纠正的值将外壳的误差也算进去了。正确的测量方式是使用calibration sticks,根据不同的打印平台的长度,分别进行XY的测量,然后测量出两个缺口的距离。这样可以排除喷头的误差。
我的打印机使用88.89,打印出来的距离正确。
AB轴喷头纠正
喷头的step per mm会对挤出的塑料的多少有影响,在机械结构不变的情况下,该值越大,则挤出的料越多。过多的料称之为过挤出,会造成外观尺寸偏大,内圆半径变小,顶层可见各种重叠的塑料;挤出过小,会造成外观尺寸变小,内圆半径变大,顶层可以见各种孔洞。正确的喷头参数,会对打印质量造成非常大的影响。
Calibrate your 3D printer提供了调整喷头的参数方法,当然这篇文章也提到了如何修正其它参数。还有一种普遍使用的方式是在材料上做好标记,然后走10cm,测量实际走的长度。当然对于不能用print run的打印机,我写了一个gcode文件,执行后会自动走10cm,然后测量实际的长度。我的打印机是正确的,所以对于喷头也不用做过多的处理。
孔偏小
打印中非常常见的问题是孔变小,通常孔会变小0.5mm左右,如果打印这个图形,很可能会发现无法插上。测量孔的直径,会发现孔小0.5mm,而柱子的直径是正常的。
我在MBot Cube打印,结果是这样。然而在FlashForge Creator Pro上面,则两个可以插上。这个问题困扰了我很久,至今还没有解决。试过将同样的gcode文件分别转换成两种机型的x3g进行打印,还是一样,所以可以排除一些切片器的问题。在研究这个问题中,有一些文章可以参考。
- Calibrate your 3D printer to print parts to fit
- ArcCompensation
- Dimension Errors
- Are you printing undersized holes ?
这篇文章的神奇之处在于他的外径和内径都是OK的,可能和他使用的Cura的Sublime版本有关系。其中提到的use Flow_tweak-post-processor and decrease perimeter flow rate as described above in case of holes coming out too small.
或许又是另外一种解决方案。
虽然我没用过最终解决这个问题,但以下是有一些方法可以改善这种问题:
- 改变挤出量
在Cura和Slic3r中,都有改变挤出量的选项。甚至在Simplify3D中,PLA材料的默认挤出量就是90%。经过测试,90%的挤出量比较合适,打出来的测试块刚好可以卡上。但是外观尺寸会同样变小0.2mm,内圆仍然小0.2mm,但圆柱也同样会小0.2mm,这样两个尺寸就刚好能够插入。更小的挤出量则会带来一些问题,不推荐设置。
改变挤出量虽然能够缓解一些圆孔的问题,但也会影响顶层的质量。为了弥补这样的缺陷,只能将顶层的厚度设置为1mm,或者5层。这样顶层基本上就密闭了。 - 喷头形状
打印negative_space_tolerance_test.stl,我的打印机只能拆下来2个,只能说打印质量比较差。通过很多次的对比,发现喷头的Flat tip area(见下图)的大小会影响到tolerance的,厂商已经在着手改进中了。
- XY Size Compensation
Slic3r中提供了一个XY Compensation的选项,在Dimension Errors中有提到。和改变挤出量不一样,这个直接对切片后的图形进行补偿,不会产生顶层孔洞的问题。
在目前的Cura中还没提供这样的功能,但在Cura的开发15.06版本中,已经准备提供类似功能。Simplify3D在最新的版本中已经提供。 - 从设计上规避
在设计的阶段就根据孔的大小预留一些空间,但这样对于别人已经设计好的模型就很难修正了。并且你的打印机的修正量不一定适合别人。
圆不是圆
你可能会发现打印园的起始的连接部位会有一些凸起,并且圆可能是椭圆。如果观察一下打印时候的速度及噪音,你会发现在打印圆的时候可能会嘎吱嘎吱的响。这是因为园会拆分成多条直线,导致每条直线会起起停停,在速度较高的时候可能会造成一些丢步或者抖动。解决方法是打印周长的时候,选择小一些的速度,例如40mm/s,这样打印质量就会很好了。观察Simplify3D的GCODE,发现它可能对不同的周长做了不同的处理,小的圆弧走的速度较慢,打印质量很好。
顶层的洞
如果挤出正常,顶层出现孔洞,则需要将Top/Bottom的层数设置得更好,一般1mm左右能够得到很好的效果。另外infill的百分比也比较影响,因为infill很低(10%以下)的时候,打印Top的时候就会变成Bridge,造成打印质量下降。
打印错层
Sailfish Firmware中有一个Accerlation的选项,该选项打开时固件会根据当前的GCODE生成相应地加速度,使得打印机在降速和提速的时候,能够平稳的以一定的加速度进行提速。关闭时,会始终以电机的最大能力作为最大加速度进行加减速,当电机无法接受预定的速度时,会造成丢步,久而久之积累下造成打印错层。
打印机噪音
我的打印机一直有嘎嘎嘎的噪音,晚上打印的时候声音巨大,关上门隔一个屋子都能听到。轴承都是加了油还是一样。经过排查,最终发现是中间的塑料块裂了。这个塑料块的非常重要,应该是和XY的垂直度有很大的关系。换了以后基本上就恢复了。
第一层不粘连
第一层不粘连的问题,其实很头痛。和以下因素有关:
- 喷头和第一层的高度
一般保持到一张纸的厚度即可。 - 第一层的挤出量。
一般选择200%的挤出量会好一些 - 温度
一般第一层温度保持在230度比较好 - 材料
材料的影响包括材料的好坏和颜色。有些材料表面粗糙,挤出后会不粘连,然后卷到喷头上,越卷越多,造成打印失败。解决方法包括打印一个raft,减小速度