(河北工業(yè)大學(xué) 機(jī)械工程學(xué)院 機(jī)械工程系,天津 300130)
近年來(lái)3D打印機(jī)、激光雕刻機(jī)、激光切割機(jī)以及激光打標(biāo)機(jī)等智能設(shè)備興起,引發(fā)了科技愛(ài)好者的興趣。CoreXY機(jī)構(gòu)是廣泛應(yīng)用于這些設(shè)備中的機(jī)構(gòu)之一,CoreXY結(jié)構(gòu)相對(duì)緊湊,同樣體積的情況下,可以實(shí)現(xiàn)相對(duì)較大的打印尺寸;對(duì)于CoreXY結(jié)構(gòu),在XY平面內(nèi)運(yùn)動(dòng)的兩個(gè)電機(jī)都固定,降低了運(yùn)動(dòng)部件的重量,這樣也就降低了運(yùn)動(dòng)部件的慣性,同樣驅(qū)動(dòng)力的情況下,加速度更高,帶來(lái)的效果就是運(yùn)動(dòng)更加敏捷。相對(duì)于笛卡爾直角坐標(biāo)機(jī)構(gòu)、Delta機(jī)構(gòu)[1],CoreXY機(jī)構(gòu)具有明顯的優(yōu)勢(shì)。為了更加高效精確的控制它,目前比較流行的是廣泛用于數(shù)控機(jī)床控制的插補(bǔ)算法,常用的插補(bǔ)算法有逐點(diǎn)比較法、最小偏差法、Bresenham直線(xiàn)生成算法(計(jì)算機(jī)圖形學(xué)中繪制直線(xiàn)的一種經(jīng)典算法[2])等。這些算法的優(yōu)點(diǎn)是算法簡(jiǎn)單、插補(bǔ)計(jì)算速度快、插補(bǔ)誤差較小,但同時(shí)也存在如下缺點(diǎn):1)不能兩軸聯(lián)動(dòng),影響加工精度;2)插補(bǔ)次數(shù)多,執(zhí)行時(shí)間長(zhǎng),影響生產(chǎn)效率[3]。所以為了提高機(jī)構(gòu)的執(zhí)行效率和加工精度,引入一種高精度高效率的算法尤為重要。
熔融沉積成型(Fused Deposition Modeling,F(xiàn)DM)是將絲狀的熱熔性材料加熱融化,同時(shí)三維擠出機(jī)構(gòu)在計(jì)算機(jī)的控制下,根據(jù)截面輪廓信息,將材料選擇性地涂敷在工作臺(tái)上,快速冷卻后形成一層截面。一層成型完成后,機(jī)器工作臺(tái)下降一個(gè)高度(即分層厚度)再成型下一層,直至形成整個(gè)實(shí)體造型[4]。對(duì)于CoreXY 結(jié)構(gòu)的FDM型3D打印機(jī)來(lái)說(shuō),為了快速的打印出高精度的產(chǎn)品模型,需要對(duì)打印機(jī)的X軸、Y軸、Z軸以及E軸(擠出機(jī)構(gòu))的聯(lián)動(dòng)控制,四者密切配合運(yùn)動(dòng)、缺一不可。尤其是X、Y平面的運(yùn)動(dòng)對(duì)一臺(tái)3D打印機(jī)的打印質(zhì)量尤為重要;因此實(shí)現(xiàn)對(duì)平面機(jī)構(gòu)的控制成為3D打印的核心。本文著重論述CoreXY平面機(jī)構(gòu)的運(yùn)動(dòng)控制,Z軸和E軸的運(yùn)動(dòng)控制相對(duì)較為簡(jiǎn)單,不再詳細(xì)論述。目前一些主流的3D打印機(jī)固件不開(kāi)源、國(guó)內(nèi)外相關(guān)研究資料較少,算法改進(jìn)與移植困難,這給我們的研究帶來(lái)困難。本文將數(shù)控技術(shù)應(yīng)用于3D打印行業(yè),這將會(huì)大大方便3D打印愛(ài)好者的開(kāi)發(fā),同時(shí)也降低了入門(mén)難度。CoreXY結(jié)構(gòu)3D打印機(jī)由于其獨(dú)特的傳動(dòng)方式,以及其較其他機(jī)構(gòu)的鮮明優(yōu)勢(shì),這種機(jī)構(gòu)的應(yīng)用前景將不可限量。
為了更準(zhǔn)確高效地實(shí)現(xiàn)對(duì)CoreXY機(jī)構(gòu)的運(yùn)動(dòng)控制,本文對(duì)CoreXY結(jié)構(gòu)所獨(dú)有的X、Y平面機(jī)構(gòu)進(jìn)行運(yùn)動(dòng)特性分析,將該機(jī)構(gòu)與典型的直角坐標(biāo)機(jī)構(gòu)建立一定的數(shù)學(xué)轉(zhuǎn)化關(guān)系,引入了一種比最小偏差法更優(yōu)的算法。
CoreXY機(jī)構(gòu)最大特點(diǎn)是步進(jìn)電機(jī)都固定在機(jī)架一側(cè),無(wú)論運(yùn)動(dòng)機(jī)構(gòu)沿X軸還是沿Y軸向運(yùn)動(dòng),兩個(gè)步進(jìn)電機(jī)都不會(huì)隨著機(jī)構(gòu)運(yùn)動(dòng),因此減輕了機(jī)器在運(yùn)動(dòng)過(guò)程中的負(fù)擔(dān),使運(yùn)動(dòng)機(jī)構(gòu)的動(dòng)作更加平穩(wěn)。CoreXY機(jī)構(gòu)的原理圖如圖1所示。整個(gè)機(jī)構(gòu)的各種運(yùn)動(dòng)方式都是通過(guò)一根皮帶的傳動(dòng)來(lái)實(shí)現(xiàn)的,這種傳動(dòng)方式可以有效減輕振動(dòng),且避免了安裝絲杠、移動(dòng)步進(jìn)電機(jī)的負(fù)擔(dān),使整體結(jié)構(gòu)更加簡(jiǎn)單,運(yùn)動(dòng)更加靈活,能夠在一定程度上提高機(jī)構(gòu)的工作效率。
機(jī)構(gòu)運(yùn)動(dòng)位移ΔX,ΔY與步進(jìn)電機(jī)M1、M2的線(xiàn)位移ΔA、ΔB之間的關(guān)系如式(1)和(2)所示:
解方程組可得:
上式中:ΔX、ΔY 分別為3D打印機(jī)工料擠出機(jī)構(gòu)所在的滑塊分別沿X正方向和沿Y正方向的位移,ΔA、ΔB分別為步進(jìn)電機(jī)M1、M2的線(xiàn)位移,為了方便以順時(shí)針為負(fù)、逆時(shí)針為正來(lái)標(biāo)記ΔA、ΔB的方向。
圖1 CoreXY 機(jī)構(gòu)傳動(dòng)原理示意圖
當(dāng)步進(jìn)電機(jī)M1和M2以相同的速度順時(shí)針或逆時(shí)針同向轉(zhuǎn)動(dòng)時(shí),機(jī)構(gòu)的滑塊就會(huì)沿X軸方向水平運(yùn)動(dòng),ΔA、ΔB的大小、方向相同;此時(shí)有:
當(dāng)步進(jìn)電機(jī)M1和M2以相同的速度、相反的方向轉(zhuǎn)動(dòng)時(shí),機(jī)構(gòu)的滑塊就會(huì)沿Y軸方向運(yùn)動(dòng),此時(shí):ΔA、ΔB的大小相同,方向相反;此時(shí):
當(dāng)步進(jìn)電機(jī)M1轉(zhuǎn)動(dòng),步進(jìn)電機(jī)M2靜止時(shí),滑塊將沿著Y=X方向移動(dòng);此時(shí):
同理當(dāng)步進(jìn)電機(jī)M2轉(zhuǎn)動(dòng),步進(jìn)電機(jī)M1靜止時(shí),滑塊將沿著Y=-X方向移動(dòng);此時(shí):
由上可知,CoreXY機(jī)構(gòu)可以非常方便的實(shí)現(xiàn)滑塊沿著X、Y軸方向和Y=X、Y=-X方向移動(dòng),這就為下文的控制算法引入埋下伏筆。
這里我們先引入逐點(diǎn)比較法,逐點(diǎn)比較法的廣泛應(yīng)用于數(shù)控領(lǐng)域,近來(lái)隨著增材制造和激光加工的興起,該算法也被應(yīng)用于FDM型3D打印機(jī)的控制中。
要實(shí)現(xiàn)3D打印機(jī)的連續(xù)運(yùn)動(dòng),需要將建立好的三維模型用切片軟件進(jìn)行切片,得到所需打印模型的G代碼,代碼中存放的是無(wú)數(shù)層切片的坐標(biāo)值,要重復(fù)這些軌跡,就要實(shí)現(xiàn)擠出機(jī)構(gòu)從當(dāng)前點(diǎn)C(X0,Y0)到目標(biāo)點(diǎn)D(X1,Y1)的插補(bǔ)運(yùn)動(dòng)[5]。
逐點(diǎn)比較法插補(bǔ)過(guò)程的每一步都要經(jīng)過(guò)以下四個(gè)工作節(jié)拍。
1)坐標(biāo)判斷:計(jì)算擠出機(jī)構(gòu)的當(dāng)前位置C(X0,Y0)與目標(biāo)位置D(X1,Y1)的差值Xe,Ye,并根據(jù)Xe,Ye的符號(hào),判斷進(jìn)給方向。
2)坐標(biāo)進(jìn)給:根據(jù)當(dāng)前偏差Fn判別的結(jié)果,控制機(jī)構(gòu)沿相應(yīng)的坐標(biāo)軸進(jìn)給一步,使擠出機(jī)構(gòu)向模型輪廓靠攏。
3)偏差計(jì)算:擠出機(jī)構(gòu)進(jìn)給一步后,針對(duì)新的擠出機(jī)構(gòu)位置,計(jì)算新的偏差值Fn+1。
4)終點(diǎn)判別:擠出機(jī)構(gòu)進(jìn)給一步后,需要判別擠出機(jī)構(gòu)是否已經(jīng)到達(dá)零件輪廓的終點(diǎn)。如果已經(jīng)到達(dá)終點(diǎn),則停止插補(bǔ)過(guò)程,目標(biāo)位置賦值為當(dāng)前位置;如果未到達(dá)終點(diǎn),則返回到第1)步,重復(fù)上述四個(gè)節(jié)拍[6]。表1為打印機(jī)擠出機(jī)構(gòu)各卦限的運(yùn)動(dòng)判斷公式。
表1 逐點(diǎn)比較法插補(bǔ)公式表
擠出機(jī)構(gòu)在具體卦限的具體進(jìn)給方向和偏差判斷如圖2,偏差F≥0時(shí),擠出機(jī)構(gòu)沿著X軸運(yùn)動(dòng),F(xiàn)<0時(shí)擠出機(jī)構(gòu)沿著Y軸運(yùn)動(dòng),步進(jìn)電機(jī)M1和M2以相同的速度順時(shí)針或逆時(shí)針同向轉(zhuǎn)動(dòng)時(shí),就可以沿著X軸運(yùn)動(dòng),步進(jìn)電機(jī)M1和M2以相同的速度順時(shí)針或逆時(shí)針?lè)聪蜣D(zhuǎn)動(dòng)時(shí),就可以沿著Y軸運(yùn)動(dòng)。不妨假設(shè)步進(jìn)電機(jī)的脈沖當(dāng)量為0.1mm,當(dāng)前點(diǎn)為C(0,0),目標(biāo)點(diǎn)為D(0.5,0.7)或D(0.7,0.5),圖3為經(jīng)MATLAB仿真得到逐點(diǎn)比較法的運(yùn)動(dòng)效果圖,圖中的細(xì)線(xiàn)代表實(shí)際走過(guò)軌跡,粗線(xiàn)代表理想軌跡,由圖3我們可以明顯的看出,從一點(diǎn)到另一點(diǎn),由于機(jī)構(gòu)只沿著X或Y軸運(yùn)動(dòng)存在很大的誤差,而且插補(bǔ)效率很低。
圖2 逐點(diǎn)比較法運(yùn)動(dòng)判斷圖
圖3 逐點(diǎn)比較法運(yùn)動(dòng)效果
最小偏差法和逐點(diǎn)比較法的執(zhí)行步驟、判斷依據(jù)基本一致,有所不同的是最小偏差法引入了不止沿著x軸和y軸插補(bǔ),還引入了45度角插補(bǔ),共把一個(gè)平面區(qū)域分成了八個(gè)卦限[7],其各卦限進(jìn)給方向和偏差關(guān)系如表2所示,在具體卦限的具體進(jìn)給方向和偏差判斷如圖4所示,F(xiàn)為偏差,F(xiàn)≥0時(shí),擠出機(jī)構(gòu)沿Y=X或Y=-X運(yùn)動(dòng),F(xiàn)<0時(shí)擠出機(jī)構(gòu)沿著X或Y軸運(yùn)動(dòng),步進(jìn)電機(jī)M1和M2以相同的速度順時(shí)針或逆時(shí)針同向轉(zhuǎn)動(dòng)時(shí),就可以沿著X軸運(yùn)動(dòng),步進(jìn)電機(jī)M1和M2以相同的速度順時(shí)針或逆時(shí)針?lè)聪蜣D(zhuǎn)動(dòng)時(shí),就可以沿著Y軸運(yùn)動(dòng),當(dāng)步進(jìn)電機(jī)M1轉(zhuǎn)動(dòng),步進(jìn)電機(jī)M2靜止時(shí),滑塊將沿著Y=X方向移動(dòng);當(dāng)步進(jìn)電機(jī)M2轉(zhuǎn)動(dòng),步進(jìn)電機(jī)M1靜止時(shí),滑塊將沿著Y=-X方向移動(dòng)。
同樣以0.1mm為步進(jìn)電機(jī)的脈沖當(dāng)量,假設(shè)當(dāng)前點(diǎn)為C(0,0),目標(biāo)點(diǎn)為D(0.4,0.7)或D(0.7,0.4),經(jīng)過(guò)MATLAB仿真得到最小偏差法運(yùn)動(dòng)效果圖5,圖中的細(xì)線(xiàn)代表實(shí)際走過(guò)軌跡,粗線(xiàn)代表理想軌跡,由圖5可知,最小偏差法比逐點(diǎn)比較法在效率和精度上有了明顯的提高,但依然存在著較大的誤差,效率也并不高,所以現(xiàn)在就引入改進(jìn)算法。以上兩種算法只局限于沿著X軸、Y軸和45度方向進(jìn)給,其他角度的直線(xiàn)只能靠插補(bǔ)來(lái)實(shí)現(xiàn)。我們不妨假設(shè),可以沿著其他角度插補(bǔ),這就需要兩個(gè)步進(jìn)電機(jī)同時(shí)以不同的速度運(yùn)動(dòng),這樣就可以實(shí)現(xiàn)各種角度的高精度、高效率運(yùn)動(dòng)。
表2 最小偏差法插補(bǔ)公式表
圖4 最小偏差法運(yùn)動(dòng)判斷
圖5 最小偏差法運(yùn)動(dòng)效果圖
2.3.1 原理描述
為了實(shí)現(xiàn)機(jī)構(gòu)X、Y軸的聯(lián)動(dòng),需使電機(jī)M1和M2同時(shí)以不同速度運(yùn)動(dòng),同時(shí)開(kāi)始同時(shí)結(jié)束,其第一卦限運(yùn)動(dòng)示意圖如6所示。
圖6 改進(jìn)算法運(yùn)動(dòng)示意圖
由圖6可知,對(duì)于任意方向的直線(xiàn)插補(bǔ),ΔX和ΔY的大小并不一定相同,此時(shí):
由此我們可以得到兩個(gè)步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)的線(xiàn)位移的比例關(guān)系,兩個(gè)電機(jī)需要在相同時(shí)間完成轉(zhuǎn)動(dòng),所以電機(jī)的位移之比等于角速度之比,又由于步進(jìn)電機(jī)的角速度ω1、ω2是由控制器輸出的脈沖的周期T1、T2決定,所以可得:
由式(7)可知我們可以通過(guò)控制其輸出脈沖的周期以達(dá)到控制機(jī)構(gòu)滑塊沿著任意方向運(yùn)動(dòng)。
這種方法的難點(diǎn)在于周期大小選擇,脈沖周期過(guò)大和過(guò)小都會(huì)無(wú)法驅(qū)動(dòng)步進(jìn)電機(jī),所以我們可通過(guò)設(shè)置及極限值的方法來(lái)限制不合適的脈沖,步進(jìn)電機(jī)可以平穩(wěn)驅(qū)動(dòng)的脈沖周期大約為10μ s~3ms,對(duì)于128細(xì)分的驅(qū)動(dòng)器,最小的驅(qū)動(dòng)周期可達(dá)3μs;對(duì)于普通的驅(qū)動(dòng)器沒(méi)有那么多細(xì)分,由式(7)可知,當(dāng)直線(xiàn)方向接近Y=X時(shí),驅(qū)動(dòng)步進(jìn)電機(jī)M2的脈沖周期則趨于無(wú)窮大,這樣這種方法就會(huì)產(chǎn)生死區(qū),為了解決這一缺陷我們可以采取和最小偏差法相結(jié)合的方法,在死區(qū)時(shí)采用最小偏差法,其他時(shí)候采用這種方法,這樣就會(huì)大大提高機(jī)構(gòu)的運(yùn)動(dòng)速度和精度。
2.3.2 算法實(shí)現(xiàn)步驟
對(duì)于算法的實(shí)現(xiàn),需要確定CoreXY機(jī)構(gòu)兩個(gè)步進(jìn)電機(jī)的旋轉(zhuǎn)方向、驅(qū)動(dòng)脈沖周期以及脈沖數(shù)目,因此可以分為以下3個(gè)步驟:
若符合要求,則適用改進(jìn)算法;若不符合,則適用最小偏差法。
2)電機(jī)方向和步數(shù)確定:步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向和轉(zhuǎn)動(dòng)步數(shù)可以由下式確定:
式中X、Y為擠出機(jī)構(gòu)沿X軸和Y軸脈沖當(dāng)量的數(shù)目,可以通過(guò)Xe,Ye分別除以脈沖當(dāng)量得到,A、B分大小別為步進(jìn)電機(jī)M1和M2所需轉(zhuǎn)動(dòng)的脈沖數(shù),符號(hào)代表步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向。
3)電機(jī)脈沖周期確定:由式(7)可以確定步進(jìn)兩個(gè)步進(jìn)電機(jī)脈沖周期之比,通常以周期較小者為基準(zhǔn)周期,基準(zhǔn)周期選用可平穩(wěn)驅(qū)動(dòng)步進(jìn)電機(jī)的最小周期Tmin。
假設(shè)取當(dāng)前點(diǎn)為C(11.3,-8.4),目標(biāo)點(diǎn)為D(12.5,-8.7),脈沖當(dāng)量為0.01mm,規(guī)定最小周期Tmin=0.5ms,最大周期Tmax=2.5ms,則易得Xe=1.2,Ye=-0.3,換算為脈沖當(dāng)量數(shù)目為X=120,Y=-30,方向?yàn)榈谒南笙蕖?/p>
(1)由式(8)知Xe,Ye在不等式范圍內(nèi),適用改進(jìn)算法。
(2)由式(9)、式(10)計(jì)算得A=90,B=150,步進(jìn)電機(jī)M1的需要轉(zhuǎn)動(dòng)的脈沖數(shù)為90,方向?yàn)槟鏁r(shí)針,步進(jìn)電機(jī)M2的需要轉(zhuǎn)動(dòng)的脈沖數(shù)為150,方向?yàn)槟鏁r(shí)針。
我們分析了CoreXY機(jī)構(gòu)的運(yùn)動(dòng)特性以及基于該機(jī)構(gòu)3D打印機(jī)的常用運(yùn)動(dòng)控制算法,對(duì)比的各種算法的優(yōu)缺點(diǎn),提出了一種改進(jìn)算法,運(yùn)用這種算法,配合數(shù)據(jù)校正算法,再配合步進(jìn)電機(jī)的梯形加減速算法[8],PID算法控制擠出絲的溫度,配合Z軸和E軸的運(yùn)動(dòng),可以獲得很好的打印精度和速度。