孟鸝
【摘 要】本文提出一種3D打印步進(jìn)電機(jī)聯(lián)動(dòng)控制算法。簡述了基于F28M35Hx處理器的3D打印機(jī)控制系統(tǒng)軟硬件。重點(diǎn)論述了步進(jìn)電機(jī)控制算法研究與實(shí)現(xiàn),將多軸聯(lián)動(dòng)控制,簡化為單軸控制,然后進(jìn)行運(yùn)動(dòng)合成,并加入了累計(jì)誤差的補(bǔ)償算法。憑借F28M35Hx雙核的處理能力,結(jié)合現(xiàn)有步進(jìn)電機(jī)控制理論,配合步進(jìn)電機(jī)聯(lián)動(dòng)控制算法,實(shí)現(xiàn)了三維打印的快速、精確控制。
【關(guān)鍵詞】3D打印;F28M35Hx;運(yùn)動(dòng)控制;步進(jìn)電機(jī)
中圖分類號(hào): TP273;TP391.7 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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打?。?D printing)是制造領(lǐng)域迅速發(fā)展的一項(xiàng)新興技術(shù)[1]。與傳統(tǒng)制造方式不同,3D打印技術(shù)不需要機(jī)械加工和模具,縮短了產(chǎn)品研發(fā)周期,降低產(chǎn)品成本[2]。在3D打印控制系統(tǒng)中,多步進(jìn)電機(jī)的聯(lián)動(dòng)控制至關(guān)重要,本文使用F28M35Hx處理器,結(jié)合步進(jìn)電機(jī)聯(lián)動(dòng)控制算法,可以滿足整個(gè)控制系統(tǒng)的需要,實(shí)現(xiàn)較高的打印精度。
1 3D打印過程分析
3D打印的過程一般分為三步:第一步,三維模型設(shè)計(jì)。利用CAD軟件制作三維模型,或者利用3D掃描儀直接獲得三維模型。將設(shè)計(jì)的三維模型數(shù)字化(生成G代碼)。第二步,模型打印。將生成的G代碼解析為處理器可執(zhí)行的數(shù)據(jù),根據(jù)模型數(shù)據(jù)控制X、Y、Z和送絲電機(jī)聯(lián)動(dòng),打印過程中實(shí)時(shí)監(jiān)控打印噴頭溫度。第三步,打磨剖光。3D打印機(jī)的分辨率對(duì)多數(shù)應(yīng)用已經(jīng)足夠,但在一些彎曲的表面或者零件連接位置可能會(huì)比較粗糙。要獲得更高分辨率的模型,可以打印稍大零件,然后通過打磨,得到表面光滑的“高分辨率”模型。本設(shè)計(jì)主要實(shí)現(xiàn)第二步的功能。
2 系統(tǒng)整體結(jié)構(gòu)
本設(shè)計(jì)使用的F28M35Hx處理器,其同時(shí)具有TMS320C28x和Cortex-M3雙核。TMS320C28x主要用于運(yùn)動(dòng)控制算法實(shí)現(xiàn),即4路步進(jìn)電機(jī)控制。Cortex-M3主要用于實(shí)現(xiàn)上位機(jī)通信、人機(jī)交互界面、SD卡或USB數(shù)據(jù)讀取。本設(shè)計(jì)使用專門的細(xì)分驅(qū)動(dòng)芯片和外圍電路進(jìn)行控制[3] ,使微處理器I/O輸出脈沖信號(hào)和方向信號(hào),通過光耦隔離干擾,而后接入細(xì)分驅(qū)動(dòng)器,控制步進(jìn)電機(jī)運(yùn)動(dòng)[4]。整體結(jié)構(gòu)如圖1所示。
3 步進(jìn)電機(jī)聯(lián)動(dòng)控制策略
3D打印機(jī)是逐層完成模型打印的,每一層的打印是由X軸、Y軸及送絲電機(jī)聯(lián)動(dòng)完成。所以X軸、Y軸及送絲電機(jī)聯(lián)動(dòng)控制策略至關(guān)重要。
步進(jìn)電機(jī)運(yùn)行頻率遠(yuǎn)高于啟動(dòng)頻率,如果按照啟動(dòng)頻率進(jìn)行工作,可以保證精度,但是打印效率會(huì)非常低;如果啟動(dòng)頻率過高,步進(jìn)電機(jī)就會(huì)在啟動(dòng)停止過程中失步,而且會(huì)出現(xiàn)運(yùn)動(dòng)沖擊大,震動(dòng)明顯的問題。所以步進(jìn)電機(jī)在啟動(dòng)、勻速運(yùn)動(dòng)、停止的過程中,采用加減速控制步進(jìn)電機(jī)是十分必要的。
3.1 步進(jìn)電機(jī)基本方程
對(duì)于3D打印控制系統(tǒng),各個(gè)電機(jī)負(fù)載恒定且很小,使用直線加減速可以很好地實(shí)現(xiàn)X、Y軸步進(jìn)電機(jī)速度合成。步進(jìn)電機(jī)基本參數(shù)計(jì)算如公式1、公式2和公式3所示。
α=■(1)
θ=nα(2)
ω=■(3)
式中:α——步進(jìn)角(rad);spr——電機(jī)齒輪齒數(shù);θ——角位移(rad);n——脈沖數(shù);ω——角速度(rad/s);Tim_n單個(gè)脈沖時(shí)間(s)。
圖2 步進(jìn)電機(jī)脈沖接收示意圖
若要維持步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),電流通過繞組必須按正確的順序變化。圖2為電機(jī)運(yùn)轉(zhuǎn)時(shí)接收到的脈沖信號(hào)示意圖。步進(jìn)電機(jī)的速度與脈沖頻率有關(guān),脈沖頻率恒定,則速度恒定,tn到tn+1間是恒定頻率fn。如果Tim_n不變則為勻速運(yùn)動(dòng),Tim_n逐漸減小(增大)則為加速(減速)運(yùn)動(dòng)。
直線加減速過程,先是恒加速度的加速運(yùn)動(dòng),而后是勻速運(yùn)動(dòng),最后減速運(yùn)動(dòng)直到停止,如圖3為直線加減速過程中■(加速度)、ω(角速度)、θ(角位移)理論上的對(duì)應(yīng)關(guān)系??梢钥闯鲋本€加減速加速度恒定,角速度隨時(shí)間變化曲線呈梯形。
可以計(jì)算出角速度和位移量理論值(公式4和公式5)。
ω(t)=■■dτ=■t(4)
θ(t)=■ω(t)dτ=■■t2=nα(5)
脈沖時(shí)間間隔計(jì)算:將理想直線加減速角速度曲線數(shù)據(jù)離散化(圖4),實(shí)際計(jì)算和控制過程中必須保證速度的變化沿著理論速度斜率方向[5]。
圖4 直線加減速離散化處理示意圖
根據(jù)公式2和公式4可以得出
tn=■(6)
從而得出相鄰兩個(gè)脈沖時(shí)間間隔delay_n:
delay_n=tn+1-tn=■(■-■)(7)
這樣就可以得出第一個(gè)和第n個(gè)脈沖時(shí)間間隔:
delay_0=■(8)
delay_n=delay_0(■-■)(9)
對(duì)于微處理器處理開方運(yùn)算,需要的時(shí)間較長,本設(shè)計(jì)利用泰勒公式對(duì)上式進(jìn)行簡化:
■=1±■-■+o(■)(10)
■=■
=■(11)
=■=■
最終得出相鄰脈沖的時(shí)間間隔:
delay_n=delay_n-1-■(12)
綜上所述,本設(shè)計(jì)步距角α和加速度■(步距角經(jīng)過64細(xì)分后為0.028125°),結(jié)合公式8和公式12就可以算出相鄰脈沖的時(shí)間間隔,進(jìn)行程序設(shè)計(jì)和算法實(shí)現(xiàn)。
3.2 步進(jìn)電機(jī)聯(lián)動(dòng)控制策略
3.2.1 基本運(yùn)動(dòng)參數(shù)計(jì)算
在SD卡中讀取相鄰兩個(gè)點(diǎn)的絕對(duì)坐標(biāo)(xn,yn)、(xn+1,yn+1),打印速度Vn+1和總出絲長度L(圖5)。
圖5 從一個(gè)點(diǎn)到下一個(gè)點(diǎn)的運(yùn)動(dòng)示意圖
計(jì)算x、y、z方向相對(duì)位移Δ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)
由于各個(gè)方向脈沖數(shù)計(jì)算公式相同,下面只給X方向脈沖計(jì)算公式:
xcount=■(17)
式中:xcount——X軸方向脈沖數(shù);subdivsion——細(xì)分?jǐn)?shù)(64細(xì)分);C——步進(jìn)電機(jī)轉(zhuǎn)過一圈實(shí)際X方向?qū)嶋H移動(dòng)距離;d_angle——電機(jī)步矩角(1.8°)。
3.2.2 聯(lián)動(dòng)控制計(jì)算
根據(jù)基本運(yùn)動(dòng)參數(shù)計(jì)算出X方向、Y方向、送絲電機(jī)運(yùn)動(dòng)的速度,其中送絲電機(jī)出絲速度就是Vn+1。X方向與Y方向的矢量合速度也是Vn+1,在根據(jù)X、Y方向的距離比利用三角函數(shù)計(jì)算出Vx和Vy。
通過確定矢量方向的加速,再次利用三角函數(shù)計(jì)算出X、Y軸方向的加速度。
需要注意的是每一次線段打印開始的速度是零,結(jié)束時(shí)速度也是零,這樣需要根據(jù)加速度情況確定減速時(shí)加速度的值[6],如圖6所示。
圖6 加速和減速階段脈沖數(shù)的關(guān)系
加減速脈沖數(shù)關(guān)系公式:
■1n1=■2n2(18)
所以可以根據(jù)加速過程的脈沖個(gè)數(shù)計(jì)算減速時(shí)脈沖個(gè)數(shù)。每個(gè)方向算法一致。
總之,控制過程中必須保證X方向、Y方向和送絲電機(jī)同時(shí)啟動(dòng)、加速和減速,并確保X方向、Y方向的加速度方向矢量合成與速度方向矢量合成始終是理論的運(yùn)動(dòng)方向。
正常加減速情況如圖7所示。accel_lim>max_s_lims(圖中max_s_lim為達(dá)到本次打印最高速度所需脈沖數(shù),accel_lim為減速過程開始之前的脈沖數(shù)。)
圖7 accel_lim>max_s_lims情況示意圖
需要注意當(dāng)本次打印點(diǎn)移動(dòng)的距離所需的脈沖數(shù)較小時(shí),可能出現(xiàn)加速過程沒有完成就應(yīng)該進(jìn)入減速階段(圖8),也就是打印速度無法達(dá)到期望速度Vn+1,即accel_lim 圖8 accel_lim 所以在本次打印開始之前,應(yīng)進(jìn)行數(shù)據(jù)長度判斷,具體方法是:進(jìn)行數(shù)據(jù)預(yù)讀?。ㄔ谏洗未蛴∵M(jìn)行中),然后進(jìn)行參數(shù)計(jì)算,判讀計(jì)算出的脈沖數(shù),即判讀accel_lim與max_s_lims的大小關(guān)系。如果accel_lim>max_s_lims,則進(jìn)行正常加減速,反之,則設(shè)定較低的最大速度,并且只有加速階段和減速階段。 3.3 運(yùn)動(dòng)中單步補(bǔ)償 上述過程實(shí)現(xiàn)后,各個(gè)方向脈沖數(shù)計(jì)算過程中由于使用的微處理器定時(shí)器的寄存器只能存儲(chǔ)整型數(shù)據(jù),而根據(jù)實(shí)際相對(duì)位移計(jì)算出來的數(shù)據(jù)為浮點(diǎn)數(shù),這樣就會(huì)產(chǎn)生計(jì)算誤差。 例如Δx=1.732,代入17式中: double xcount=■=153.9555(19) 當(dāng)xcount存入寄存器就會(huì)變成: int xcount=153(20) 誤差為Remainder_x: Remainder_x=153.9555-153=0.9555(21) 所以在計(jì)算過程中會(huì)產(chǎn)生0.9555個(gè)脈沖的誤差。 本設(shè)計(jì)對(duì)各個(gè)方向脈沖數(shù)計(jì)算,采用四舍五入方式進(jìn)行實(shí)際運(yùn)算,并將舍去的數(shù)據(jù)進(jìn)行累加,進(jìn)位的數(shù)據(jù)進(jìn)行累加。當(dāng)舍去部分累計(jì)脈沖大于1時(shí),在本次計(jì)算中會(huì)將脈沖數(shù)加1,當(dāng)進(jìn)位部分累計(jì)脈沖大于1時(shí),在本次計(jì)算中會(huì)將脈沖數(shù)減1,各個(gè)方向補(bǔ)償方法相同。打印效果如圖9中間模型。 4 結(jié)語 依靠F28M35Hx處理器的強(qiáng)大功能,根據(jù)步進(jìn)電機(jī)的機(jī)械特性,針對(duì)3D打印的特殊應(yīng)用場(chǎng)景,結(jié)合現(xiàn)有步進(jìn)電機(jī)的控制理論,使用步進(jìn)電機(jī)聯(lián)動(dòng)控制策略,實(shí)現(xiàn)了3D打印的快速精確控制,實(shí)際打印效果較好。 【參考文獻(xiàn)】 [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ī)及其工作原理[J].網(wǎng)絡(luò)與信息,2012,26(2):30-30. [3]王亞嬪.基于DSP的二相混合式步進(jìn)電機(jī)多細(xì)分驅(qū)動(dòng)器的研究[J].科技信息,2010,(030):154-155. [4]付堯,馮清秀.基于DSP的三維打印機(jī)控制系統(tǒng)研究[J]. 機(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ìn)電機(jī)升降速的離散控制[J].北京化工大學(xué)學(xué)報(bào),2003,30(1):92-94.