羅仁澤 曹文昌 郭 俊
1(西南石油大學(xué)地球科學(xué)與技術(shù)學(xué)院 四川 成都 610500) 2(西南石油大學(xué)電氣信息學(xué)院 四川 成都 610500)
基于路徑優(yōu)化與模糊PID溫度控制的三維打印控制系統(tǒng)開發(fā)
羅仁澤1曹文昌2郭 俊2
1(西南石油大學(xué)地球科學(xué)與技術(shù)學(xué)院 四川 成都 610500)2(西南石油大學(xué)電氣信息學(xué)院 四川 成都 610500)
目前市面上所售的桌面級(jí)3D打印機(jī)操作系統(tǒng)大多數(shù)使用Arduino開源主板為核心進(jìn)行設(shè)計(jì),存在著打印速度較慢、片內(nèi)資源較為缺乏、后期外設(shè)擴(kuò)展性較差、機(jī)械誤差較大等問題。針對(duì)上述問題,設(shè)計(jì)了一款基于ARM STM32F103為主控芯片的開源3D打印機(jī)控制系統(tǒng),主要包括步進(jìn)電機(jī)控制系統(tǒng)、熱床溫腔溫度模糊PID閉環(huán)控制系統(tǒng)、光電限位開關(guān)模塊的設(shè)計(jì),同時(shí)以Visual Studio為平臺(tái)編寫了上位機(jī)操作軟件。該系統(tǒng)資源豐富,可擴(kuò)展性強(qiáng),實(shí)驗(yàn)結(jié)果表明該系統(tǒng)運(yùn)行良好,溫腔溫度加熱到230攝氏度所需時(shí)間僅需50秒左右,超調(diào)量小于4%,打印截面分辨率可達(dá)0.2毫米,打印速度提高30%。
三維打印 步進(jìn)電機(jī) 系統(tǒng)開發(fā) 界面開發(fā)
3D打印機(jī)技術(shù)起源于20世紀(jì)80年代出現(xiàn)的快速成型制造技術(shù)RPM(Rapid Prototyping Manufacturing),目前已經(jīng)發(fā)展成為全球眾多國家關(guān)注的研究領(lǐng)域[1]。目前市場(chǎng)上大多數(shù)桌面級(jí)3D打印機(jī)的核心控制模塊大多基于Arduino進(jìn)行開發(fā)[2]。Arduino使用較為方便,無需深厚的編程基礎(chǔ)即可進(jìn)行開發(fā),但是Arduino本質(zhì)是一款8位的AVR單片機(jī),存在著運(yùn)算速度慢、可用片內(nèi)資源較少、外設(shè)電路設(shè)計(jì)繁雜、開發(fā)成本較高、后期擴(kuò)展性不足等問題?,F(xiàn)在3D打印機(jī)設(shè)計(jì)流行使用的Arduino Mega2560主控板資源是堪堪滿足整個(gè)3D打印系統(tǒng)的需要,后期添加外設(shè)功能十分困難[3-4]。桌面級(jí)3D打印機(jī)控制模塊的核心組成部分必須向著以DSP數(shù)字信號(hào)處理器或以ARM作為核心控制芯片的方向發(fā)展,在其系統(tǒng)開發(fā)中,需要設(shè)計(jì)性能更加優(yōu)越、可使用資源更為豐富的主控模塊,ARM系列芯片以其高性能和低價(jià)格的優(yōu)勢(shì)應(yīng)當(dāng)成為首選[5]。本文針對(duì)上述問題研究設(shè)計(jì)了一款基于STM32F103的3D打印機(jī)主控制模塊,在該控制系統(tǒng)中,主控制器用于對(duì)XYZ三軸步進(jìn)電機(jī)的行為控制、熱床溫度和打印噴頭溫腔加熱控制以及耗材進(jìn)給料的控制,并重點(diǎn)敘述了步進(jìn)電機(jī)兩軸聯(lián)動(dòng)算法與溫腔溫度模糊PID算法的設(shè)計(jì)。通過實(shí)際測(cè)試,使用本文設(shè)計(jì)的控制系統(tǒng)在打印速度和打印精度上都有了明顯的提升。
1.1 3D打印機(jī)工作原理
具體打印流程分為上位機(jī)數(shù)據(jù)處理部分和3D打印機(jī)執(zhí)行部分[5],上位機(jī)主要完成待打印物體的三維模型建立、模型的切片工作,以及生成3D打印機(jī)可以識(shí)別的工作流文件,通常為G-Code文件,并將G-Code文件中包含的位置路徑信息傳送給3D打印機(jī)主控芯片;主控芯片接收到位置路徑信息后進(jìn)行逐層打印工作,最終完成整個(gè)物體的打印。3D打印流程框圖如圖1所示。
圖1 3D打印流程框圖
1.2 3D打印控制系統(tǒng)總體設(shè)計(jì)
本設(shè)計(jì)采用ARM系列的STM32F103芯片作為主控芯片,主要完成對(duì)X、Y、Z軸步進(jìn)電機(jī)控制、擠出電機(jī)控制、溫腔、熱床加熱控制等子系統(tǒng)的控制,此外,3D打印機(jī)與上位機(jī)的通信、讀取打印數(shù)據(jù)文件、讀取配置文件的任務(wù)也由主控芯片完成。
系統(tǒng)的總設(shè)計(jì)框圖如圖2所示。整個(gè)系統(tǒng)的用電都從電源端接入,各子系統(tǒng)按照自身不同的電壓要求進(jìn)行分壓降壓。步進(jìn)電機(jī)驅(qū)動(dòng)電路與主控芯片相連接,接受主控芯片的運(yùn)動(dòng)控制指令并將指令轉(zhuǎn)化為脈沖信號(hào)驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng);通過主控芯片的片內(nèi)SPI接口讀取離線打印數(shù)據(jù),或者通過USB接口直接與上位機(jī)相連進(jìn)行在線打?。还怆娤尬粋鞲衅鞣謩e接在X、Y、Z軸的末端,用于初始化起始坐標(biāo),限定步進(jìn)電機(jī)最大移動(dòng)范圍;噴頭溫度控制模塊與熱床溫度控制模塊負(fù)責(zé)控制電熱管兩端電壓調(diào)節(jié)功能,并使之保持恒定的溫度,以利于打印耗材的充分融化和更好地依附在熱床上。
圖2 3D打印機(jī)硬件框圖
傳統(tǒng)的3D打印機(jī)在進(jìn)行XY平面的打印作業(yè)時(shí),其X軸電機(jī)與Y軸電機(jī)是獨(dú)立運(yùn)行的。如圖3所示,實(shí)線為傳統(tǒng)的噴頭運(yùn)行路徑,其原理是依據(jù)步進(jìn)電機(jī)插補(bǔ)直線插補(bǔ)算法,當(dāng)噴頭需要從A點(diǎn)運(yùn)行到B點(diǎn)時(shí),X軸電機(jī)先運(yùn)行一步(或幾步),Y軸電機(jī)再運(yùn)行一步(或幾步),這樣X軸Y軸電機(jī)依次運(yùn)行,最后到達(dá)B點(diǎn),因?yàn)殡姍C(jī)步進(jìn)速度很快,所以實(shí)際打印過程中肉眼看起來噴頭是從A點(diǎn)直接運(yùn)行到B點(diǎn)。但實(shí)際上噴頭走的是階梯型路徑,這種方法在打印斜邊時(shí),不可避免地會(huì)出現(xiàn)鋸齒紋,直接造成表面打印精度降低。
圖3 傳統(tǒng)3D打印機(jī)電機(jī)走向
針對(duì)上述問題,本文提出的兩軸關(guān)聯(lián)打印算法,該算法打印路徑如圖3虛線所示,噴頭直接從A點(diǎn)沿直線行進(jìn)至B點(diǎn),減少了由于步進(jìn)電機(jī)多步前進(jìn)所代入的擾動(dòng)量,使物體表面打印精度得到了較大的提升。
在噴頭從A開始移動(dòng)到B時(shí),若要保證沿直線前進(jìn),則必須保證X軸與Y軸的步進(jìn)電機(jī)按照一定的速度比進(jìn)行工作,且具有不同的加速度之比,同時(shí)啟動(dòng),同時(shí)停止,圖中X方向的位移為Sx,Y方向的位移為Sy,則滿足公式:
(1)
其中:Sx與Sy為已知量,將位移較大者所在的軸電機(jī)速度設(shè)定為初始打印速度,則另一軸電機(jī)的速度可根據(jù)式(1)計(jì)算出,計(jì)算出速度后再將速度量換算為相應(yīng)的步進(jìn)量,即可實(shí)現(xiàn)直線打印。同時(shí),因?yàn)樵诖蛴〉娜魏螘r(shí)刻,X軸Y軸的打印加速度之比等于此時(shí)兩軸的路程之比,故兩軸的加速度之比滿足公式:
(2)
兩軸聯(lián)動(dòng)打印算法流程如圖4所示。
圖4 兩軸聯(lián)動(dòng)打印算法
本設(shè)計(jì)采用42型雙相步進(jìn)電機(jī)作為運(yùn)動(dòng)執(zhí)行器,工作電壓24 V,額定電流1.7 A,驅(qū)動(dòng)芯片采用帶轉(zhuǎn)換器和過流保護(hù)的DMOS微步驅(qū)動(dòng)器A4988[6],A4988是一款完全的微步電動(dòng)機(jī)驅(qū)動(dòng)器,無需編碼表操作,直接根據(jù)控制芯片脈沖指令驅(qū)動(dòng)電機(jī)運(yùn)行,可在全、半、1/4、1/8、1/16步進(jìn)工作模式下運(yùn)行,通過調(diào)節(jié)JP1的2、6、8號(hào)引腳電平輸出來控制A4988的細(xì)分模式,STEP與DIR端口直接與主控芯片相連接,控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)步數(shù)與轉(zhuǎn)動(dòng)方向,VMOT引腳直接從電源接入12 V電壓為電機(jī)提供電源。主控芯片、驅(qū)動(dòng)器、步進(jìn)電機(jī)構(gòu)成了步進(jìn)電機(jī)開環(huán)控制系統(tǒng),其硬件電路連接原理圖如圖5所示。
圖5 步進(jìn)電機(jī)硬件連接原理圖
在3D打印系統(tǒng)工作時(shí),受環(huán)境和工作方式的影響,在加熱階段溫度變化率高,溫度波動(dòng)范圍較大,且在打印過程中的溫度保持階段,傳統(tǒng)的PID控制方法存在著自適應(yīng)能力較差,易產(chǎn)生超調(diào)震蕩等問題,并且由于主控芯片資源的限制。目前3D打印機(jī)的溫控系統(tǒng)一般只是簡單的負(fù)反饋調(diào)節(jié)系統(tǒng),存在著反饋耗時(shí)長、反饋不準(zhǔn)確的問題[7],針對(duì)上述問題,本文引入模糊控制方法與傳統(tǒng)PID控制法相結(jié)合,設(shè)計(jì)了模糊PID溫度控制算法。
模糊PID控制算法通過計(jì)算設(shè)定值與采樣值之間的偏差e和偏差變化率ec,把e和ec代入模糊控制系統(tǒng)進(jìn)行計(jì)算,從而得到PID控制器KP、KI、KD的修正值ΔKP、ΔKI、ΔKD。將設(shè)置參數(shù)與修正參數(shù)相加得到新的控制參數(shù),代入系統(tǒng)中替代舊參數(shù),從而達(dá)到對(duì)系統(tǒng)的矯正功能。系統(tǒng)控制框圖如圖6所示。
圖6 模糊PID控制算法框圖
溫控系統(tǒng)將采樣所得溫度值與系統(tǒng)初始設(shè)定值相比較,得到系統(tǒng)的輸入變量偏差e和偏差變化率ec,輸出為PID調(diào)節(jié)參數(shù)的變化ΔKP、ΔKI、ΔKD。本文引用文獻(xiàn)[8]的經(jīng)驗(yàn)歸納法建立的模糊規(guī)則模糊控制器,將偏差變化率以及溫度偏差以定義為模糊集上的論域{-3,-2,-1,0,1,2,3},模糊子集為{NB,NM,NS,ZO,PS,PM,PB},子集中元素分別為負(fù)大、負(fù)中、負(fù)小、零、正小、正中、正大,ΔKP論域?yàn)閧-3,-2,-1,0,1,2,3},ΔKI論域?yàn)閧-0.6,-0.4,-0.2,0,0.2,0.4,0.6},ΔKD論域?yàn)閧-3,-2,-1,0,1,2,3},模糊集為ΔKP、ΔKI、ΔKD:{NB,NM,NS,Z,PS,PM,PB}。
在調(diào)整PID參數(shù)時(shí)必須考慮3個(gè)參數(shù)之間的聯(lián)系以及相互作用,根據(jù)文獻(xiàn)[9]得出的經(jīng)驗(yàn)規(guī)律,被控系統(tǒng)對(duì)參數(shù)的自調(diào)節(jié)規(guī)則如下:
1) 當(dāng)|e|較大時(shí),為了加快響應(yīng)速度,應(yīng)取較大的KP和較小的KD,同時(shí)為了避免因積分飽和引起超調(diào),通常取KI為0;
2) 當(dāng)|e|較小時(shí),為了保證穩(wěn)態(tài)性,應(yīng)增大KI與KD的值,同時(shí)為了避免穩(wěn)態(tài)震蕩,KD的值應(yīng)與|ec|呈反比例關(guān)系;
3) 當(dāng)|e|與|ec|為中等大小時(shí),為減小系統(tǒng)的響應(yīng)超調(diào),KP的值要小一些,同時(shí)根據(jù)實(shí)際情況選擇KI與KD。
基于上述經(jīng)驗(yàn),KP、KI、KD的模糊控制規(guī)則分別如表1-表3所示。
表1 KP模糊控制規(guī)則表
表2 KI模糊控制規(guī)則表
表3 KD模糊控制規(guī)則
利用上述規(guī)則,使用Mamdani推理機(jī)進(jìn)行推理,即可得到PID各個(gè)參數(shù)變化的模糊值,然后解模糊,即可得到參數(shù)變化準(zhǔn)確值。其中,解模糊的方法根據(jù)實(shí)際使用效果而定,本文選用k-means聚類算法。k-means聚類算法的原則是當(dāng)一個(gè)元素即可屬于集合A,又可屬于集合B時(shí),根據(jù)一定規(guī)則判斷該元素對(duì)應(yīng)集合A、B的歸屬度,按照歸屬度數(shù)值較大的進(jìn)行分類。其軟件設(shè)計(jì)流程圖如圖7所示。
圖7 模糊PID算法控制流程圖
PID運(yùn)行曲線如圖8所示。從圖中可以看出,溫腔加熱到230攝氏度大概需要50秒,超調(diào)量在3%左右,后期溫度平穩(wěn),幾乎沒有出現(xiàn)波動(dòng)。由此可見,將PID控制運(yùn)用于溫度控制系統(tǒng)能夠較大改善溫度控制的穩(wěn)定性,從而提高打印精度,由于實(shí)際應(yīng)用與仿真存在一定差距,故使用時(shí)可能會(huì)需要進(jìn)行系統(tǒng)微調(diào)。熱床和噴頭溫腔的溫度控制電路原理圖如圖9所示。
圖8 Fuzzy-PID仿真響應(yīng)曲線
圖9 熱床與溫腔溫度控制電路
本設(shè)計(jì)采用光電限位開關(guān)設(shè)計(jì),克服了傳統(tǒng)的機(jī)械行程開關(guān)反饋延遲、誤差大的缺陷。在傳統(tǒng)的機(jī)械限位開關(guān)使用中,若設(shè)定步進(jìn)電機(jī)在1/4步進(jìn)模式下工作,當(dāng)噴頭或熱床已經(jīng)到了設(shè)定行進(jìn)路線終點(diǎn),由于機(jī)械限位開關(guān)的觸發(fā)誤差,噴頭或熱床會(huì)繼續(xù)前進(jìn)0.4 mm左右,這對(duì)打印物體質(zhì)量精度的影響是致命的。光電限位開關(guān)則沒有機(jī)械上的觸發(fā)誤差,且響應(yīng)速度快,可以大幅度減少由行程開關(guān)帶來的誤差,光電行程開關(guān)電路如圖10所示。
圖10 光電行程開關(guān)電路原理圖
將控制光電限位開關(guān)的STM32F103引腳設(shè)置為上升沿中斷模式,關(guān)電限位器放置于各個(gè)軸運(yùn)動(dòng)的起始點(diǎn),當(dāng)噴嘴或熱床運(yùn)動(dòng)到起始點(diǎn)時(shí),固定在軸上的擋片會(huì)進(jìn)入到開關(guān)電器件槽內(nèi),將1、2腳的光線隔離,此時(shí)U1的3腳輸出高電平,P11的2號(hào)端口輸出高電平信號(hào)給控制芯片,控制芯片接收到下降沿信號(hào)后向A4988驅(qū)動(dòng)芯片發(fā)出指令停止電機(jī)工作。
上位機(jī)控制軟件通過Visual Studio2010編寫。本設(shè)計(jì)所使用上位機(jī)主要實(shí)現(xiàn)與打印機(jī)的串口連接以及串口波特率的設(shè)置、設(shè)置步進(jìn)電機(jī)的轉(zhuǎn)速、X軸Y軸Z軸電機(jī)的正向反向控制、打印數(shù)據(jù)文件的導(dǎo)入、溫腔溫度與熱場(chǎng)溫度的設(shè)置、擠出機(jī)擠出速度的控制等,其界面如圖11所示。
圖11 3D打印機(jī)上位機(jī)控制軟件界面
從圖11可以看到,當(dāng)上位機(jī)與3D打印機(jī)相連后,通過導(dǎo)入文件按鈕將數(shù)據(jù)文件導(dǎo)入進(jìn)緩存區(qū),開始打印后3D打印機(jī)一行一行地從緩存區(qū)讀取打印坐標(biāo)數(shù)據(jù)。PC端隨機(jī)分配給3D打印機(jī)的端口為COM3口,數(shù)據(jù)傳輸波特率設(shè)置為115 200 bit/s,XY軸步進(jìn)電機(jī)轉(zhuǎn)速設(shè)為3 200 mm/min,Z軸轉(zhuǎn)速設(shè)為100,溫腔加熱溫度設(shè)置為230攝氏度,熱床加熱溫度設(shè)置為40攝氏度。從具體實(shí)驗(yàn)可以看出,3D打印機(jī)運(yùn)行狀態(tài)良好。
本文設(shè)計(jì)了一套基于STM32F103的3D打印機(jī)控制系統(tǒng)。通過對(duì)X、Y軸步進(jìn)電機(jī)的聯(lián)動(dòng)控制,提高了打印斜邊與曲邊的打印分辨率,通過光電行程開關(guān)減少了電機(jī)運(yùn)動(dòng)的機(jī)械誤差,通過PID溫度調(diào)節(jié)減短了溫腔加熱時(shí)間,溫度超調(diào)量不超過5%,仿真后期溫度平穩(wěn),幾乎沒有出現(xiàn)溫度波動(dòng)。通過具體運(yùn)行證明系統(tǒng)運(yùn)行穩(wěn)定,打印質(zhì)量能夠滿足要求。
[1] 史玉升.3D打印技術(shù)的工業(yè)應(yīng)用及產(chǎn)業(yè)化發(fā)展[J].機(jī)械設(shè)計(jì)與制造工程,2016(2):11-16.
[2] 鄧佳文,王冰,沈峰,等.基于熔融擠壓快速成型的3D打印關(guān)鍵技術(shù)發(fā)展現(xiàn)狀[J].化工新型材料,2016(10):36-38.
[3] 程偉,李向陽,戴俊平,等.基于Arduino桌面級(jí)折疊3D打印機(jī)的設(shè)計(jì)[J].機(jī)械研究與應(yīng)用,2016,29(4):97-99.
[4] 李軒,莫紅,李雙雙,等.3D打印技術(shù)過程控制問題研究進(jìn)展[J].自動(dòng)化學(xué)報(bào),2016,42(7):983-1003.
[5] 佚名.ST展示STM32開放式開發(fā)環(huán)境[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(6):86-86.
[6] 李智強(qiáng),周杰,任勝杰.基于單片機(jī)的步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)控制系統(tǒng)[J].機(jī)電工程,2007,24(7):67-69.
[7] 謝可,姚鴻強(qiáng).基于PWM的數(shù)字音頻播放器設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(5):328-329,333.
[8] 王吉龍.基于模糊PID的溫度控制系統(tǒng)[J].信息化研究,2008,34(5):77-80.
[9] 楊航,劉凌,閻治安,等.雙閉環(huán)Buck變換器系統(tǒng)模糊PID控制[J].西安交通大學(xué)學(xué)報(bào),2016,50(4):35-40.
DEVELOPMENTOF3DPRINTINGCONTROLSYSTEMBASEDONPATHOPTIMIZATIONANDFUZZY-PIDTEMPERATURECONTROL
Luo Renze1Cao Wenchang2Guo Jun2
1(SchoolofGeoscienceandTechonology,SouthwestPetroleumUniversity,Chengdu610500,Sichuan,China)2(SchoolofElectricalEngineeringandInformation,SouthwestPetroleumUniversity,Chengdu610500,Sichuan,China)
Now most of the desktop 3D printers on the market use Arduino open source board as the core controller. There are a few problems such as slow printing speed, lack of on-chip resources, poor expansibility of later peripherals, large mechanical error. To solve these problems, we designed an open source 3D printer control system based on ARM STM32F103. The system included stepper motor control system, hot bed and cavity temperature fuzzy PID closed-loop control system, photoelectric limit switch module design. At the same time, the PC operation software was written on the platform of Visual Studio. The system is rich in resources and strong scalability. The experimental results show that the system runs well. Temperature cavity heating to 230 degrees Celsius takes only about 50 seconds. The overshoot is less than 4%, the resolution of the print section is up to 0.2 millimeters, and the printing speed is increased by 30%.
3D print Stepper motor System development Interface development
2016-12-22。四川省高??蒲袆?chuàng)新團(tuán)隊(duì)專項(xiàng)基金項(xiàng)目(15TD008)。羅仁澤,教授,主研領(lǐng)域:信號(hào)處理與地學(xué)信息處理。曹文昌,碩士生。郭俊,碩士生。
TP3
A
10.3969/j.issn.1000-386x.2017.11.057