基于F28M35Hx的3D打印控制算法研究与实现

2019-01-10 06:57孟鹂
科技视界 2019年35期
关键词:脉冲数控制算法加速度

孟鹂

【摘 要】本文提出一种3D打印步进电机联动控制算法。简述了基于F28M35Hx处理器的3D打印机控制系统软硬件。重点论述了步进电机控制算法研究与实现,将多轴联动控制,简化为单轴控制,然后进行运动合成,并加入了累计误差的补偿算法。凭借F28M35Hx双核的处理能力,结合现有步进电机控制理论,配合步进电机联动控制算法,实现了三维打印的快速、精确控制。

【关键词】3D打印;F28M35Hx;运动控制;步进电机

中图分类号: TP273;TP391.7 文献标识码: A 文章编号: 2095-2457(2019)35-0038-004

DOI:10.19694/j.cnki.issn2095-2457.2019.35.017

Research and Implementation of 3D Printing Control Algorithm Based on F28M35Hx

MENG Li

(Xian University, Xian Shaanxi 710065, China)

【Abstract】This paper presents a linkage control algorithm for 3D printing stepper motors. The hardware and software of 3D printer control system based on F28M35Hx processor are introduced. This paper focuses on the research and implementation of the control algorithm of stepper motors. The multi axis linkage control is simplified to single axis control, then motion synthesis is carried out, and the compensation algorithm of accumulated error is added. With the processing ability of F28M35Hx dual core, combined with the existing stepping motor control theory, combined with the stepping motor linkage control algorithm, the fast and accurate control of 3D printing is realized.

【Key words】3D print; F28M35Hx; Stepper motor; Motion control

0 前言

3D打印(3D printing)是制造领域迅速发展的一项新兴技术[1]。与传统制造方式不同,3D打印技术不需要机械加工和模具,缩短了产品研发周期,降低产品成本[2]。在3D打印控制系统中,多步进电机的联动控制至关重要,本文使用F28M35Hx处理器,结合步进电机联动控制算法,可以满足整个控制系统的需要,实现较高的打印精度。

1 3D打印过程分析

3D打印的过程一般分为三步:第一步,三维模型设计。利用CAD软件制作三维模型,或者利用3D扫描仪直接获得三维模型。将设计的三维模型数字化(生成G代码)。第二步,模型打印。将生成的G代码解析为处理器可执行的数据,根据模型数据控制X、Y、Z和送丝电机联动,打印过程中实时监控打印喷头温度。第三步,打磨剖光。3D打印机的分辨率对多数应用已经足够,但在一些弯曲的表面或者零件连接位置可能会比较粗糙。要获得更高分辨率的模型,可以打印稍大零件,然后通过打磨,得到表面光滑的“高分辨率”模型。本设计主要實现第二步的功能。

2 系统整体结构

本设计使用的F28M35Hx处理器,其同时具有TMS320C28x和Cortex-M3双核。TMS320C28x主要用于运动控制算法实现,即4路步进电机控制。Cortex-M3主要用于实现上位机通信、人机交互界面、SD卡或USB数据读取。本设计使用专门的细分驱动芯片和外围电路进行控制[3] ,使微处理器I/O输出脉冲信号和方向信号,通过光耦隔离干扰,而后接入细分驱动器,控制步进电机运动[4]。整体结构如图1所示。

3 步进电机联动控制策略

3D打印机是逐层完成模型打印的,每一层的打印是由X轴、Y轴及送丝电机联动完成。所以X轴、Y轴及送丝电机联动控制策略至关重要。

步进电机运行频率远高于启动频率,如果按照启动频率进行工作,可以保证精度,但是打印效率会非常低;如果启动频率过高,步进电机就会在启动停止过程中失步,而且会出现运动冲击大,震动明显的问题。所以步进电机在启动、匀速运动、停止的过程中,采用加减速控制步进电机是十分必要的。

3.1 步进电机基本方程

对于3D打印控制系统,各个电机负载恒定且很小,使用直线加减速可以很好地实现X、Y轴步进电机速度合成。步进电机基本参数计算如公式1、公式2和公式3所示。

α=■(1)

θ=nα(2)

ω=■(3)

式中:α——步进角(rad);spr——电机齿轮齿数;θ——角位移(rad);n——脉冲数;ω——角速度(rad/s);Tim_n单个脉冲时间(s)。

图2 步进电机脉冲接收示意图

若要维持步进电机的转动,电流通过绕组必须按正确的顺序变化。图2为电机运转时接收到的脉冲信号示意图。步进电机的速度与脉冲频率有关,脉冲频率恒定,则速度恒定,tn到tn+1间是恒定频率fn。如果Tim_n不变则为匀速运动,Tim_n逐渐减小(增大)则为加速(减速)运动。

直线加减速过程,先是恒加速度的加速运动,而后是匀速运动,最后减速运动直到停止,如图3为直线加减速过程中■(加速度)、ω(角速度)、θ(角位移)理论上的对应关系。可以看出直线加减速加速度恒定,角速度随时间变化曲线呈梯形。

可以计算出角速度和位移量理论值(公式4和公式5)。

ω(t)=■■dτ=■t(4)

θ(t)=■ω(t)dτ=■■t2=nα(5)

脉冲时间间隔计算:将理想直线加减速角速度曲线数据离散化(图4),实际计算和控制过程中必须保证速度的变化沿着理论速度斜率方向[5]。

图4 直线加减速离散化处理示意图

根据公式2和公式4可以得出

tn=■(6)

从而得出相邻两个脉冲时间间隔delay_n:

delay_n=tn+1-tn=■(■-■)(7)

这样就可以得出第一个和第n个脉冲时间间隔:

delay_0=■(8)

delay_n=delay_0(■-■)(9)

对于微处理器处理开方运算,需要的时间较长,本设计利用泰勒公式对上式进行简化:

■=1±■-■+o(■)(10)

■=■

=■(11)

=■=■

最终得出相邻脉冲的时间间隔:

delay_n=delay_n-1-■(12)

综上所述,本设计步距角α和加速度■(步距角经过64细分后为0.028125°),结合公式8和公式12就可以算出相邻脉冲的时间间隔,进行程序设计和算法实现。

3.2 步进电机联动控制策略

3.2.1 基本运动参数计算

在SD卡中读取相邻两个点的绝对坐标(xn,yn)、(xn+1,yn+1),打印速度Vn+1和总出丝长度L(图5)。

图5 从一个点到下一个点的运动示意图

计算x、y、z方向相对位移Δx、Δy、Δz,出丝长度ΔL,速度Vn+1就是本次打印速度:

Δxn+1=xn+1-xn(13)

Δyn+1=yn+1-yn(14)

ΔLn+1=Ln+1-Ln(15)

Δzn+1=zn+1-zn(16)

由于各个方向脉冲数计算公式相同,下面只给X方向脉冲计算公式:

xcount=■(17)

式中:xcount——X轴方向脉冲数;subdivsion——细分数(64细分);C——步进电机转过一圈实际X方向实际移动距离;d_angle——电机步矩角(1.8°)。

3.2.2 联动控制计算

根据基本运动参数计算出X方向、Y方向、送丝电机运动的速度,其中送丝电机出丝速度就是Vn+1。X方向与Y方向的矢量合速度也是Vn+1,在根据X、Y方向的距离比利用三角函数计算出Vx和Vy。

通过确定矢量方向的加速,再次利用三角函数计算出X、Y轴方向的加速度。

需要注意的是每一次线段打印开始的速度是零,结束时速度也是零,这样需要根据加速度情况确定减速时加速度的值[6],如图6所示。

图6 加速和减速阶段脉冲数的关系

加减速脉冲数关系公式:

■1n1=■2n2(18)

所以可以根据加速过程的脉冲个数计算减速时脉冲个数。每个方向算法一致。

总之,控制过程中必须保证X方向、Y方向和送丝电机同时启动、加速和减速,并确保X方向、Y方向的加速度方向矢量合成与速度方向矢量合成始终是理论的运动方向。

正常加减速情况如图7所示。accel_lim>max_s_lims(图中max_s_lim为达到本次打印最高速度所需脉冲数,accel_lim为减速过程开始之前的脉冲数。)

图7 accel_lim>max_s_lims情况示意图

需要注意当本次打印点移动的距离所需的脉冲数较小时,可能出现加速过程没有完成就应该进入减速阶段(图8),也就是打印速度无法达到期望速度Vn+1,即accel_lim

图8 accel_lim

所以在本次打印开始之前,应进行数据长度判断,具体方法是:进行数据预读取(在上次打印进行中),然后进行参数计算,判读计算出的脉冲数,即判读accel_lim与max_s_lims的大小关系。如果accel_lim>max_s_lims,则进行正常加减速,反之,则设定较低的最大速度,并且只有加速阶段和减速阶段。

3.3 运动中单步补偿

上述过程实现后,各个方向脉冲数计算过程中由于使用的微处理器定时器的寄存器只能存储整型数据,而根据实際相对位移计算出来的数据为浮点数,这样就会产生计算误差。

例如Δx=1.732,代入17式中:

double xcount=■=153.9555(19)

当xcount存入寄存器就会变成:

int xcount=153(20)

误差为Remainder_x:

Remainder_x=153.9555-153=0.9555(21)

所以在计算过程中会产生0.9555个脉冲的误差。

本设计对各个方向脉冲数计算,采用四舍五入方式进行实际运算,并将舍去的数据进行累加,进位的数据进行累加。当舍去部分累计脉冲大于1时,在本次计算中会将脉冲数加1,当进位部分累计脉冲大于1时,在本次计算中会将脉冲数减1,各个方向补偿方法相同。打印效果如图9中间模型。

4 结语

依靠F28M35Hx处理器的强大功能,根据步进电机的机械特性,针对3D打印的特殊应用场景,结合现有步进电机的控制理论,使用步进电机联动控制策略,实现了3D打印的快速精确控制,实际打印效果较好。

【参考文献】

[1]Walters P, Davies K. 3D printing for artists: research and creative practice[J].Rapport: Journal of the Norwegian Print Association, 2010,1:12-15.

[2]刘欣灵.3D打印机及其工作原理[J].网络与信息,2012,26(2):30-30.

[3]王亚嫔.基于DSP的二相混合式步进电机多细分驱动器的研究[J].科技信息,2010,(030):154-155.

[4]付尧,冯清秀.基于DSP的三维打印机控制系统研究[J]. 机电工程,2014,31(2):217-220.

[5]LI X-F, HU H, WANG W, et al. An Acceleration and Deceleration Algorithm of Stepper Motor[J].Development& Innovation of Machinery&Electrical Products,2006,1.

[6]李海波,何雪涛.步进电机升降速的离散控制[J].北京化工大学学报,2003,30(1):92-94.

猜你喜欢
脉冲数控制算法加速度
“鳖”不住了!从26元/斤飙至38元/斤,2022年甲鱼能否再跑出“加速度”?
某型组合导航系统故障分析及预防
高精度电子体温计设计与实现
天际加速度
检定电能表的圈数设定问题探讨
创新,动能转换的“加速度”
基于ARM+FPGA的模块化同步控制算法研究
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
一种非圆旋转工件支撑装置控制算法
DI材横向厚差自动控制算法及其应用