董嫣然,谭跃刚,张 帆,张 俊
(武汉理工大学 机电工程学院,湖北 武汉 430070)
碳纤维材料具有质轻高强、内柔外刚、耐高温、耐腐蚀等诸多优良特性,被广泛应用于航空航天、国防军工、汽车电子及化工医疗等各大尖端科学领域[1-3]。3D打印技术是一种快速成型技术,以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体。该技术极大地缩短了产品的研制周期,提高了生产效率,是先进制造技术的重要组成部分[4-5]。将碳纤维材料与3D 打印技术相结合,能够同时发挥碳纤维材料的优良特性和3D打印技术成型方式的优势,解决了碳纤维复合材料成型工艺繁琐、零件结构受限等问题[6-9]。
碳纤维复合材料3D打印通过基体材料从熔化到凝固自然粘结,在没有外界压力作用下,相邻层之间出现无法紧密粘连,难以成型的情况,极大地降低了打印件的强度、刚度和致密性。针对增强成型件致密性提高力学性能这类问题,施加压力被广泛使用。一种自动铺丝技术设计了施压装置,利用施压气缸和压辊对碳纤维丝束施加压力以适应不同的铺放表面。一种碳纤维展纤碾压装置,在导纱辊碾压作用下对碳纤维丝束进行展纤,使碳纤维丝束变得更轻薄[10]。一种应用机器人自动铺丝技术,通过分析铺放过程中铺放压力、覆盖完整性以及铺放平整性对轨迹规划的要求,确定合适的铺放压力以达到最佳效果[11]。综上所述,传统纤维铺放成型过程中压辊起到增强机械性能的作用,但由于3D打印叠加成型的特性以及打印轨迹的自由性与复杂性,要求压力装置能够识别路径轨迹,实时跟踪轨迹变化,以保证压力实施的准确性。
针对上述问题,笔者提出了一种基于连续碳纤维3D打印滚轮压力装置的压力轨迹实时跟踪算法。以3D打印轨迹坐标集为处理源,介绍了压力轨迹跟随算法对打印轨迹各部分的处理方式,得到了完整的压力轨迹及压力装置的旋转指令。保证了压力装置对所有打印丝束的精确实时跟踪碾压,有效提高了连续碳纤维打印件的力学性能。
将连续碳纤维外围包裹尼龙等热塑性材料,制备成适合3D打印的连续碳纤维复合材料。碳纤维复合材料通过挤料机到达打印喷头处加热熔融,根据打印指令,喷头在三轴的运动配合下,逐层打印出模型[12]。为解决连续层无法紧密粘连的问题,在3D打印机上设计了滚轮压力装置,如图1所示。
图1 基于压力装置的3D打印机结构示意图
碾压滚轮设计安装在打印喷头旁,可绕喷头360°旋转并且辅以加热装置,以“边打边压”的方式工作。在喷头打印材料的同时,滚轮跟随后方进行碾压,当打印轨迹转变方向时,压力装置抬起滚轮变换方向后放下滚轮碾压下一方向打印轨迹,在喷头进行跳转时抬起滚轮一同跳转,打印实际轨迹时落下碾压,直至碾压完所有打印轨迹。
STL模型作为3D打印最通用的文件格式,需要先通过切片处理转化为打印机可执行的动作指令,即生成3D打印轨迹。所谓切片即采用分层制造的思想,将三维模型沿分层方向离散为一组二维图形,逐层叠加合成整体。如图2所示,经过切片软件处理后的打印指令文件称之Gcode文件。文件中的指令控制三轴运动完成打印动作,即表示打印轨迹。将Gcode文件用压力轨迹实时跟踪算法进行处理,得到压力装置运行指令,即碾压轨迹。Gcode打印指令控制三轴及喷头完成打印轨迹,压力装置指令控制碾压滚轮完成碾压轨迹,最终得到完整打印件。
图2 面向软件处理的成型过程
压力轨迹实时跟踪算法实现流程如图3所示,首先读取Gcode文件的坐标点,再对坐标点进行提取分类,分别处理打印模型的轮廓轨迹和填充轨迹,得到完整的碾压轨迹后,计算得到每个转折点坐标及变化角度。
图3 压力轨迹实时跟踪算法流程图
将Gcode文件中的每个坐标点进行提取作为算法处理数据源。在Gcode文件中,带有坐标的指令形式共有5种,如图4所示,其中前3种指令以G0开头,称之为跳转指令,用于位置变化,不进行实际打印。其中跳转指令(1)不仅包含X,Y坐标,还包含Z轴坐标,表示用于不同层之间的跳转。跳转指令(2)和指令(3)不含Z轴坐标,即表示同一层之中的跳转。指令(4)和指令(5)以G1开头,代表打印指令,其后的X,Y坐标均为实际打印点。该5种指令后的X,Y坐标值都需要提取,由于压力装置与打印喷头在Z轴方向一同动作,故不需要考虑Z轴坐标。
图4 Gcode文件中的5种指令形式
通过从Gcode文件中循环读入每一行指令,当每行以G0/G1开头时,找出每行指令中X,Y,Z,E字符的坐标位置,循环读入两位置之间的数,并依次加权累加,由此得出上述指令中所有的X轴和Y轴坐标值。为了后续处理的逻辑性,给以上提取出的坐标点进一步分类。首先将打印点和跳转点进行区分,加入参数1/0,在坐标值后用1表示G1打印点,用0表示G0跳转点。每个模型在3D打印过程中都有轮廓部分和填充部分,添加第二参数W/F,将两者进行区分。W为轮廓坐标点,F为填充坐标点。数据处理结果如图5所示。
图5 提取分类后的数据结果
根据数据结果后的两个参数标识来区分,共有4种类型的坐标点。
Class={W0,W1,F0,F1}
(1)
式中:Class为所有类型坐标点的集合;W0为轮廓跳转点;W1为轮廓打印点;F0为填充跳转点;F1为填充打印点。
研究单点无法判断其在打印过程中的位置和作用,需要联系前后点进行识别。实际应用中这4种坐标点有8种排列形式:
CPP={W0-W1,W1-W1}
(2)
CJP={W1-W0,W0-W0}
(3)
FP={F0-F1,F1-F0}
(4)
CP={F0-W1,W0-F1}
(5)
集合CPP表示轮廓打印点,在W0-W1,W1-W1的排列中后者W1为轮廓打印点。集合CJP为轮廓跳转点,在W1-W0,W0-W0的排列中后者W0为轮廓跳转点。集合FP为直线填充点。集合CP为轮廓部分和填充部分的衔接点。在打印轮廓的过程中,直线线段由收尾两点连接而成。分析所有轮廓均为直线型情况,如图6所示,由原点跳转到W0处,按图示箭头方向依次经过每一个实际打印点W1,直至回到起始点完成闭合轮廓。在此情况下的W0与W1都是实际打印点,都需要获取,得到完整碾压轨迹后,根据整体轨迹算出每次转折点的角度值α,β。
图6 直线型轮廓压力轨迹
3D打印在切片过程中将曲线型轨迹离散为许多折线段,离散度越高,曲线打印精度越高。处理曲线时若仍按照直线型轨迹的处理方法,则要求压力装置不停重复抬起旋转落下碾压的过程,如此不仅可能造成碾压装置不能及时变角度产生碾压延迟,长时间更会损坏压力装置。基于这一问题,笔者提出一种将曲线拟合成一定长度的折线段的设计思路来解决曲线轮廓的问题。
由于压力轨迹在直线和曲线上的处理方式不同,需要先将打印直线的点和打印曲线的点分开。而唯一区分直线和曲线的标准就是线段的长度。通过对3D打印机尺寸大小和对不同模型的切片结果分析,得到一个长度的分界值(limitValue),若两点间的距离(length(i,i+1))满足式(6)则为直线型部分,若满足条件(7)认为进入曲线,若符合条件(8),则这些点忽略不计。
length(i,i+1)≥limitValue
(6)
length(i,i+1)≤limitValuei≤i≤i+2
(7)
length(i,i+1)≤limitValve
(8)
orlength(i,i+1)≤limitValuei≤i≤i+1
将曲线折线化并保证相同的碾压效果,就需使曲线上所有点都在按照直线碾压的碾压轨迹范围内,这依赖于滚轮有一定的宽度,滚轮宽度越宽,曲线就能分为更少的折线段。故可得出如下关系:若某一曲线段内所有曲线点到该曲线段首尾连成的线段距离小于滚轮宽度的一半(width),则可以用这段直线代替该段曲线,依照这一关系处理打印轮廓的曲线部分。
具体算法过程如下:
(1)如果满足式(7),则曲线从i(x,y)点开始。
(2)判断式(9)直至不满足式(9),则曲线的终点为j(x,y),即曲线上共有j-i+1个点,j-i条线段。
length(j,j+1)≤limitValue
(j=i+n,n=3,4,5,…)
(9)
(3)根据式(10)依次判断点到线段距离,过程如图7所示。
Distance(x+i(x,x+j))≤width
(10)
(Distance为点到直线距离,且0
(4)直到不满足式(10),记入x+j-1,随后执行式(11)后,重复第3步,直至遇到曲线终点j(x,y)。
i=j-1
(11)
(5)若曲线不能按照宽度均分,则将曲线余下的点归为一条直线。
图7 曲线折线化判定点示意图
至此完成了曲线型轮廓到折线型轮廓的等效碾压替换。完成模型轮廓部分的所有压力轨迹的处理。
3D打印有许多填充方式,如直线型填充,Z字填充,网格填充等。采用最常见的直线型填充,其打印方式如图8所示,直线填充打印点F1和直线填充跳转点F0交替出现,按图示箭头方向打印直线填充轨迹,F1,F0点都需要记入,但压力装置只需在所有F1点旋转180°,F0点不动作即可碾压到每一根直线填充轨迹。
图8 45°直线填充打印轨迹
根据上述处理得出的完整压力轨迹计算压力装置转向坐标点及相应角度。在同一轮廓轨迹与同一填充轨迹上的转折点角度变化上面已经叙述过。但从轮廓到轮廓的跳转以及从轮廓到填充,从填充到轮廓的跳转角度也需要获取,下面结合图9详述。
图9 完整压力轨迹角度转换示意图
图9为三维模型部分打印轨迹的简化图,轮廓部分包括打印范围墙和里层模型外墙两层。由初始点B开始打印,按箭头所示逆时针方向打印回到B点完成范围墙打印,其中角度获取即为直线型轮廓角度获取法。然后从B点跳转到C点开始打印内圈轮廓,此刻在B点压力装置需要变向以完成从线段AB到线段CD的碾压转换。θ1为AB与CD的夹角,故在B点旋转θ1角度后,压力装置随即进入轨迹CD进行对内圈的碾压,即从C点起逆时针碾压回C点,至此完成内外两层轮廓的碾压。下面将从轮廓进入到填充,此刻点C为内层轮廓到填充线的跳转点,θ2为EC与CG的夹角,在C点转动角度θ2,转向后即可垂直碾压第一条填充线CG。后续按照直线填充的碾压方式,在F1填充打印点旋转180°,在F0填充跳转点不动作,即可完成模型第一层碾压。然后逐层碾压直至打印结束。至此完成压力装置对所有碳纤维打印丝束的实时跟踪碾压。
测试样件选择如图10所示的模型,为测试算法对不同线型轨迹的处理效果,故选择外围轮廓直线曲线相邻的模型。由于每层处理方式均相同,为简化数据,选择模型厚度为1 mm,以0.2 mm的层高进行打印,共5层。
图10 测试样件三维模型图
由于数据表格长度有限,将内圈三层轮廓线简化为一圈轮廓线,图11的数据处理结果如表1所示。
图11 测试样件部分打印轨迹示意图
表1 测试样件压力轨迹部分数据结果
在表1中,提取Gcode文件中的坐标点分类处理,将打印轨迹的曲线部分转化为折线。表1第一列第三行中,原有曲线轨迹打印点有49个,处理后仅有3个点,第九行中也将外墙曲线部分43个打印点减少为2个,均极大减少了压力装置在曲线部分的转向次数。表1中第三列得出在每个转折点对应的转向角度,由于第一个点的旋转角度依赖于碾压装置的起始设置,故没有得出明确角度。除此之外,由外圈轮廓到内圈轮廓的跳转角度为90°,内圈轮廓到填充部分的跳转角度为135°,打印直线填充时,在F1点旋转180°,F0点不转动,和理论推测一致,故压力轨迹算法测试结果正确无误。
以图10的三维模型为例验证该算法,图11是三维模型经过切片处理得到Gcode文件的部分打印轨迹,将Gcode文件使用压力轨迹算法进行处理,得出如图12所示的对应压力轨迹图。从图12中可以清晰地看到打印轨迹的曲线部分被处理为有限个折线段,避免了压力装置不停旋转角度的问题,且保证所有打印点均可被碾压到,将该算法应用于3D打印机的压力装置中,将对所有打印轨迹进行实时跟踪碾压。
图12 测试样件部分压力轨迹示意图
使用图13所示的增设压力装置的连续碳纤维3D打印机进行打印实验。实验使用长77 mm,宽13 mm,高2 mm的长方体数学模型进行测试,碳纤维材料的直径为0.5 mm,分别在施压和未施压条件下进行打印。
图13 增设压力装置的连续碳纤维3D打印机
图14为在未施压状态下打印,高度2 mm共打印5层,层高0.4 mm。图15为在施加压力下打印,此时碳纤维材料被碾压,打印高度2 mm共7层,层高0.286 mm。在满足模型尺寸的前提下,施压后的成型件层数大于未施压的层数,层间更密集,性能更佳。
图14 施压前的连续碳纤维3D打印样件
图15 施压后的连续碳纤维3D打印样件
使用电子万能试验机对打印样件进行具体性能测试。得到图16和图17施压前后测试件的拉伸和弯曲应力时间曲线图。
图16 施压前的打印件性能测试应力时间曲线
图17 施压后的打印件性能测试应力时间曲线
测试件在逐渐施加力的过程中断裂,电子万能试验机由应力曲线图得到的最大破坏载荷计算出拉伸强度和弯曲强度。如表2所示。未施压测试件的拉伸强度为89.21 MPa,施压后的拉伸强度为212.42 MPa,施压后的拉伸强度增加了138.11%。未施压测试件的弯曲强度为68.47 MPa,施压后的弯曲强度为230.40 MPa,施压后的弯曲强度增加了236.50%,由此可得出施加压力明显提高了连续碳纤维3D打印件的力学性能。对施加压力的大小进行调整,可打印出不同致密性的碳纤维打印件,以满足不同性能需求。
表2 施压前后测试件性能参数表
针对连续碳纤维在3D打印过程中相邻层无法紧密粘连,导致打印件的致密性和力学性能大幅度下降的问题,提出基于碳纤维3D打印压力装置的压力轨迹实时跟踪算法。该算法完成了滚轮碾压装置的轨迹处理,确认了压力装置进行旋转动作的位置及角度,保证了3D打印机滚轮压力装置对连续碳纤维的实时精确跟踪碾压。根据压力轨迹算法的数据处理分析及仿真图线验证了算法的正确性与可行性,符合连续碳纤维3D打印滚轮压力装置的要求。打印实验结果表明,施压后测试件的拉伸强度和弯曲强度较未施压测试件的对应参数增加了138.11%和236.50%。实验数据证明了施压后连续碳纤维打印件力学性能明显提升。该算法为提高连续碳纤维打印件的致密性,增强连续碳纤维打印件的质量,增加其应用广度,扩展其应用领域提供了参考。