TW洞见〡3D打印的各种问题及解决方案

文章作者来自ThoughtWorks:贺思聪 ,图片来自网络。

3D打印机已经买回来几个月了,基本上每天都要打印一些东西,期间遇到了很多的问题积累了很多的经验。虽然现在桌面级的3D打印也算是比较简单好用了,但要追求好一点的打印质量,还是得折腾。

1

打印校准

打印机的校准包括X、Y、Z和A、B(就是喷头)两个轴的校准。最重要的是XYAB,因为他们直接关系到打印的尺寸大小及表面质量。

Cura和Slic3r等工具导出的是GCODE格式。GCODE格式使用明文描述路径。Sailfish Firmware只支持X3G文件,是一种二进制文件。由于打印机所使用的CPU速度较慢,处理文件并转换成脉冲比较慢,会影响打印质量。所以使用GPX工具将GCODE转换为X3G后,每个指令所走的位置都已经转换成脉冲,甚至可以对一些路径进行加减速的处理。打印机的CPU就可以直接的读取脉冲并控制电机运动。

2

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,打印出来的距离正确。

3

AB轴喷头纠正

喷头的step per mm会对挤出的塑料的多少有影响,在机械结构不变的情况下,该值越大,则挤出的料越多。过多的料称之为过挤出,会造成外观尺寸偏大,内圆半径变小,顶层可见各种重叠的塑料;挤出过小,会造成外观尺寸变小,内圆半径变大,顶层可以见各种孔洞。正确的喷头参数,会对打印质量造成非常大的影响。 Calibrate your 3D printer提供了调整喷头的参数方法,当然这篇文章也提到了如何修正其它参数。还有一种普遍使用的方式是在材料上做好标记,然后走10cm,测量实际走的长度。当然对于不能用print run的打印机,我写了一个gcode文件,执行后会自动走10cm,然后测量实际的长度。我的打印机是正确的,所以对于喷头也不用做过多的处理。

4

孔偏小

打印中非常常见的问题是孔变小,通常孔会变小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在最新的版本中已经提供。

  • 从设计上规避

在设计的阶段就根据孔的大小预留一些空间,但这样对于别人已经设计好的模型就很难修正了。并且你的打印机的修正量不一定适合别人。

5

圆不是圆

你可能会发现打印园的起始的连接部位会有一些凸起,并且圆可能是椭圆。如果观察一下打印时候的速度及噪音,你会发现在打印圆的时候可能会嘎吱嘎吱的响。这是因为园会拆分成多条直线,导致每条直线会起起停停,在速度较高的时候可能会造成一些丢步或者抖动。解决方法是打印周长的时候,选择小一些的速度,例如40mm/s,这样打印质量就会很好了。观察Simplify3D的GCODE,发现它可能对不同的周长做了不同的处理,小的圆弧走的速度较慢,打印质量很好。

6

顶层的洞

如果挤出正常,顶层出现孔洞,则需要将Top/Bottom的层数设置得更好,一般1mm左右能够得到很好的效果。另外infill的百分比也比较影响,因为infill很低(10%以下)的时候,打印Top的时候就会变成Bridge,造成打印质量下降。

7

打印错层

Sailfish Firmware中有一个Accerlation的选项,该选项打开时固件会根据当前的GCODE生成相应地加速度,使得打印机在降速和提速的时候,能够平稳的以一定的加速度进行提速。关闭时,会始终以电机的最大能力作为最大加速度进行加减速,当电机无法接受预定的速度时,会造成丢步,久而久之积累下造成打印错层。

8

打印机噪音

我的打印机一直有嘎嘎嘎的噪音,晚上打印的时候声音巨大,关上门隔一个屋子都能听到。轴承都是加了油还是一样。经过排查,最终发现是中间的塑料块裂了。这个塑料块的非常重要,应该是和XY的垂直度有很大的关系。换了以后基本上就恢复了。

9

第一层不粘连

第一层不粘连的问题,其实很头痛。和以下因素有关:

  • 喷头和第一层的高度

一般保持到一张纸的厚度即可。

  • 第一层的挤出量

一般选择200%的挤出量会好一些

  • 温度

一般第一层温度保持在230度比较好

  • 材料

材料的影响包括材料的好坏和颜色。有些材料表面粗糙,挤出后会不粘连,然后卷到喷头上,越卷越多,造成打印失败。 解决方法包括打印一个raft,减小速度。

原文发布于微信公众号 - 思特沃克(ThoughtWorks)

原文发表时间:2015-07-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Crossin的编程教室

【每周一坑】蜥蜴流感与贝叶斯定理

春季是流感的高发季节。不要觉得只是小小的“感冒”,严重起来甚至也会危及生命,而且还没有特效药。因此,身体不适请及时到医院检查。

1383
来自专栏AI研习社

Github 项目推荐 | 一个简单的英文字形转音素的 Python 模块

该功能在语音合成中是必不可少的。不像德语和西班牙语这类语言,英文的发音很难从拼写中推断出来,所以人们要知道某个单词的发音,最好的方式是查阅字典。但是,这种方法至...

1495
来自专栏Y大宽

ToppGene Suite中文使用指南

2007.12:Improved human disease candidate gene prioritization using mouse phenoty...

1683
来自专栏韩东吉的Unity杂货铺

零基础入门 31:游戏中的变速效果

今天给大家带来一篇短小精悍的内容,那就是游戏中的变速效果,变速包括了快速和慢速,有的时候在游戏关卡结尾的时候通过慢速慢镜头来展示结束动作特效等,有不错的表现效果...

962
来自专栏AI科技评论

开发 | 如何利用 TVM 优化深度学习GPU op?教你用几十行Python代码实现2-3倍提升

数天前,陈天奇团队宣布推出 TVM,在微博上表示,「我们今天发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机,cuda, op...

4018
来自专栏吉浦迅科技

DAY 60:阅读SIMD Video Instructions

我们正带领大家开始阅读英文的《CUDA C Programming Guide》,今天是第60天,我们正在讲解CUDA C语法,希望在接下来的40天里,您可以学...

801
来自专栏逍遥剑客的游戏开发

Bullet中创建中心不在原点的碰撞体

1915
来自专栏生信技能树

一篇文章学会ChIP-seq分析(下)

写在前面:《一篇文章学会ChIP-seq分析(上)》《一篇文章学会ChIP-seq分析(下)》为生信菜鸟团博客相关文章合集,共九讲内容。带领你从相关文献解读、资...

1.1K7
来自专栏HansBug's Lab

Tyvj P1813 [JSOI2008]海战训练

P1813 [JSOI2008]海战训练 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 为了准备高层峰会,元首命令武...

36412
来自专栏玉树芝兰

如何用Python处理自然语言?(Spacy与Word Embedding)

本文教你用简单易学的工业级Python自然语言处理软件包Spacy,对自然语言文本做词性分析、命名实体识别、依赖关系刻画,以及词嵌入向量的计算和可视化。

1411

扫码关注云+社区