羅仁澤 曹文昌 郭 俊
1(西南石油大學地球科學與技術學院 四川 成都 610500) 2(西南石油大學電氣信息學院 四川 成都 610500)
基于路徑優化與模糊PID溫度控制的三維打印控制系統開發
羅仁澤1曹文昌2郭 俊2
1(西南石油大學地球科學與技術學院 四川 成都 610500)2(西南石油大學電氣信息學院 四川 成都 610500)
目前市面上所售的桌面級3D打印機操作系統大多數使用Arduino開源主板為核心進行設計,存在著打印速度較慢、片內資源較為缺乏、后期外設擴展性較差、機械誤差較大等問題。針對上述問題,設計了一款基于ARM STM32F103為主控芯片的開源3D打印機控制系統,主要包括步進電機控制系統、熱床溫腔溫度模糊PID閉環控制系統、光電限位開關模塊的設計,同時以Visual Studio為平臺編寫了上位機操作軟件。該系統資源豐富,可擴展性強,實驗結果表明該系統運行良好,溫腔溫度加熱到230攝氏度所需時間僅需50秒左右,超調量小于4%,打印截面分辨率可達0.2毫米,打印速度提高30%。
三維打印 步進電機 系統開發 界面開發
3D打印機技術起源于20世紀80年代出現的快速成型制造技術RPM(Rapid Prototyping Manufacturing),目前已經發展成為全球眾多國家關注的研究領域[1]。目前市場上大多數桌面級3D打印機的核心控制模塊大多基于Arduino進行開發[2]。Arduino使用較為方便,無需深厚的編程基礎即可進行開發,但是Arduino本質是一款8位的AVR單片機,存在著運算速度慢、可用片內資源較少、外設電路設計繁雜、開發成本較高、后期擴展性不足等問題。現在3D打印機設計流行使用的Arduino Mega2560主控板資源是堪堪滿足整個3D打印系統的需要,后期添加外設功能十分困難[3-4]。桌面級3D打印機控制模塊的核心組成部分必須向著以DSP數字信號處理器或以ARM作為核心控制芯片的方向發展,在其系統開發中,需要設計性能更加優越、可使用資源更為豐富的主控模塊,ARM系列芯片以其高性能和低價格的優勢應當成為首選[5]。本文針對上述問題研究設計了一款基于STM32F103的3D打印機主控制模塊,在該控制系統中,主控制器用于對XYZ三軸步進電機的行為控制、熱床溫度和打印噴頭溫腔加熱控制以及耗材進給料的控制,并重點敘述了步進電機兩軸聯動算法與溫腔溫度模糊PID算法的設計。通過實際測試,使用本文設計的控制系統在打印速度和打印精度上都有了明顯的提升。
1.1 3D打印機工作原理
具體打印流程分為上位機數據處理部分和3D打印機執行部分[5],上位機主要完成待打印物體的三維模型建立、模型的切片工作,以及生成3D打印機可以識別的工作流文件,通常為G-Code文件,并將G-Code文件中包含的位置路徑信息傳送給3D打印機主控芯片;主控芯片接收到位置路徑信息后進行逐層打印工作,最終完成整個物體的打印。3D打印流程框圖如圖1所示。

圖1 3D打印流程框圖
1.2 3D打印控制系統總體設計
本設計采用ARM系列的STM32F103芯片作為主控芯片,主要完成對X、Y、Z軸步進電機控制、擠出電機控制、溫腔、熱床加熱控制等子系統的控制,此外,3D打印機與上位機的通信、讀取打印數據文件、讀取配置文件的任務也由主控芯片完成。
系統的總設計框圖如圖2所示。整個系統的用電都從電源端接入,各子系統按照自身不同的電壓要求進行分壓降壓。步進電機驅動電路與主控芯片相連接,接受主控芯片的運動控制指令并將指令轉化為脈沖信號驅動步進電機轉動;通過主控芯片的片內SPI接口讀取離線打印數據,或者通過USB接口直接與上位機相連進行在線打印;光電限位傳感器分別接在X、Y、Z軸的末端,用于初始化起始坐標,限定步進電機最大移動范圍;噴頭溫度控制模塊與熱床溫度控制模塊負責控制電熱管兩端電壓調節功能,并使之保持恒定的溫度,以利于打印耗材的充分融化和更好地依附在熱床上。

圖2 3D打印機硬件框圖
傳統的3D打印機在進行XY平面的打印作業時,其X軸電機與Y軸電機是獨立運行的。如圖3所示,實線為傳統的噴頭運行路徑,其原理是依據步進電機插補直線插補算法,當噴頭需要從A點運行到B點時,X軸電機先運行一步(或幾步),Y軸電機再運行一步(或幾步),這樣X軸Y軸電機依次運行,最后到達B點,因為電機步進速度很快,所以實際打印過程中肉眼看起來噴頭是從A點直接運行到B點。但實際上噴頭走的是階梯型路徑,這種方法在打印斜邊時,不可避免地會出現鋸齒紋,直接造成表面打印精度降低。

圖3 傳統3D打印機電機走向
針對上述問題,本文提出的兩軸關聯打印算法,該算法打印路徑如圖3虛線所示,噴頭直接從A點沿直線行進至B點,減少了由于步進電機多步前進所代入的擾動量,使物體表面打印精度得到了較大的提升。
在噴頭從A開始移動到B時,若要保證沿直線前進,則必須保證X軸與Y軸的步進電機按照一定的速度比進行工作,且具有不同的加速度之比,同時啟動,同時停止,圖中X方向的位移為Sx,Y方向的位移為Sy,則滿足公式:

(1)
其中:Sx與Sy為已知量,將位移較大者所在的軸電機速度設定為初始打印速度,則另一軸電機的速度可根據式(1)計算出,計算出速度后再將速度量換算為相應的步進量,即可實現直線打印。同時,因為在打印的任何時刻,X軸Y軸的打印加速度之比等于此時兩軸的路程之比,故兩軸的加速度之比滿足公式:

(2)
兩軸聯動打印算法流程如圖4所示。

圖4 兩軸聯動打印算法
本設計采用42型雙相步進電機作為運動執行器,工作電壓24 V,額定電流1.7 A,驅動芯片采用帶轉換器和過流保護的DMOS微步驅動器A4988[6],A4988是一款完全的微步電動機驅動器,無需編碼表操作,直接根據控制芯片脈沖指令驅動電機運行,可在全、半、1/4、1/8、1/16步進工作模式下運行,通過調節JP1的2、6、8號引腳電平輸出來控制A4988的細分模式,STEP與DIR端口直接與主控芯片相連接,控制步進電機的轉動步數與轉動方向,VMOT引腳直接從電源接入12 V電壓為電機提供電源。主控芯片、驅動器、步進電機構成了步進電機開環控制系統,其硬件電路連接原理圖如圖5所示。

圖5 步進電機硬件連接原理圖
在3D打印系統工作時,受環境和工作方式的影響,在加熱階段溫度變化率高,溫度波動范圍較大,且在打印過程中的溫度保持階段,傳統的PID控制方法存在著自適應能力較差,易產生超調震蕩等問題,并且由于主控芯片資源的限制。目前3D打印機的溫控系統一般只是簡單的負反饋調節系統,存在著反饋耗時長、反饋不準確的問題[7],針對上述問題,本文引入模糊控制方法與傳統PID控制法相結合,設計了模糊PID溫度控制算法。
模糊PID控制算法通過計算設定值與采樣值之間的偏差e和偏差變化率ec,把e和ec代入模糊控制系統進行計算,從而得到PID控制器KP、KI、KD的修正值ΔKP、ΔKI、ΔKD。將設置參數與修正參數相加得到新的控制參數,代入系統中替代舊參數,從而達到對系統的矯正功能。系統控制框圖如圖6所示。

圖6 模糊PID控制算法框圖
溫控系統將采樣所得溫度值與系統初始設定值相比較,得到系統的輸入變量偏差e和偏差變化率ec,輸出為PID調節參數的變化ΔKP、ΔKI、ΔKD。本文引用文獻[8]的經驗歸納法建立的模糊規則模糊控制器,將偏差變化率以及溫度偏差以定義為模糊集上的論域{-3,-2,-1,0,1,2,3},模糊子集為{NB,NM,NS,ZO,PS,PM,PB},子集中元素分別為負大、負中、負小、零、正小、正中、正大,ΔKP論域為{-3,-2,-1,0,1,2,3},ΔKI論域為{-0.6,-0.4,-0.2,0,0.2,0.4,0.6},ΔKD論域為{-3,-2,-1,0,1,2,3},模糊集為ΔKP、ΔKI、ΔKD:{NB,NM,NS,Z,PS,PM,PB}。
在調整PID參數時必須考慮3個參數之間的聯系以及相互作用,根據文獻[9]得出的經驗規律,被控系統對參數的自調節規則如下:
1) 當|e|較大時,為了加快響應速度,應取較大的KP和較小的KD,同時為了避免因積分飽和引起超調,通常取KI為0;
2) 當|e|較小時,為了保證穩態性,應增大KI與KD的值,同時為了避免穩態震蕩,KD的值應與|ec|呈反比例關系;
3) 當|e|與|ec|為中等大小時,為減小系統的響應超調,KP的值要小一些,同時根據實際情況選擇KI與KD。
基于上述經驗,KP、KI、KD的模糊控制規則分別如表1-表3所示。

表1 KP模糊控制規則表

表2 KI模糊控制規則表

表3 KD模糊控制規則
利用上述規則,使用Mamdani推理機進行推理,即可得到PID各個參數變化的模糊值,然后解模糊,即可得到參數變化準確值。其中,解模糊的方法根據實際使用效果而定,本文選用k-means聚類算法。k-means聚類算法的原則是當一個元素即可屬于集合A,又可屬于集合B時,根據一定規則判斷該元素對應集合A、B的歸屬度,按照歸屬度數值較大的進行分類。其軟件設計流程圖如圖7所示。

圖7 模糊PID算法控制流程圖
PID運行曲線如圖8所示。從圖中可以看出,溫腔加熱到230攝氏度大概需要50秒,超調量在3%左右,后期溫度平穩,幾乎沒有出現波動。由此可見,將PID控制運用于溫度控制系統能夠較大改善溫度控制的穩定性,從而提高打印精度,由于實際應用與仿真存在一定差距,故使用時可能會需要進行系統微調。熱床和噴頭溫腔的溫度控制電路原理圖如圖9所示。

圖8 Fuzzy-PID仿真響應曲線

圖9 熱床與溫腔溫度控制電路
本設計采用光電限位開關設計,克服了傳統的機械行程開關反饋延遲、誤差大的缺陷。在傳統的機械限位開關使用中,若設定步進電機在1/4步進模式下工作,當噴頭或熱床已經到了設定行進路線終點,由于機械限位開關的觸發誤差,噴頭或熱床會繼續前進0.4 mm左右,這對打印物體質量精度的影響是致命的。光電限位開關則沒有機械上的觸發誤差,且響應速度快,可以大幅度減少由行程開關帶來的誤差,光電行程開關電路如圖10所示。

圖10 光電行程開關電路原理圖
將控制光電限位開關的STM32F103引腳設置為上升沿中斷模式,關電限位器放置于各個軸運動的起始點,當噴嘴或熱床運動到起始點時,固定在軸上的擋片會進入到開關電器件槽內,將1、2腳的光線隔離,此時U1的3腳輸出高電平,P11的2號端口輸出高電平信號給控制芯片,控制芯片接收到下降沿信號后向A4988驅動芯片發出指令停止電機工作。
上位機控制軟件通過Visual Studio2010編寫。本設計所使用上位機主要實現與打印機的串口連接以及串口波特率的設置、設置步進電機的轉速、X軸Y軸Z軸電機的正向反向控制、打印數據文件的導入、溫腔溫度與熱場溫度的設置、擠出機擠出速度的控制等,其界面如圖11所示。

圖11 3D打印機上位機控制軟件界面
從圖11可以看到,當上位機與3D打印機相連后,通過導入文件按鈕將數據文件導入進緩存區,開始打印后3D打印機一行一行地從緩存區讀取打印坐標數據。PC端隨機分配給3D打印機的端口為COM3口,數據傳輸波特率設置為115 200 bit/s,XY軸步進電機轉速設為3 200 mm/min,Z軸轉速設為100,溫腔加熱溫度設置為230攝氏度,熱床加熱溫度設置為40攝氏度。從具體實驗可以看出,3D打印機運行狀態良好。
本文設計了一套基于STM32F103的3D打印機控制系統。通過對X、Y軸步進電機的聯動控制,提高了打印斜邊與曲邊的打印分辨率,通過光電行程開關減少了電機運動的機械誤差,通過PID溫度調節減短了溫腔加熱時間,溫度超調量不超過5%,仿真后期溫度平穩,幾乎沒有出現溫度波動。通過具體運行證明系統運行穩定,打印質量能夠滿足要求。
[1] 史玉升.3D打印技術的工業應用及產業化發展[J].機械設計與制造工程,2016(2):11-16.
[2] 鄧佳文,王冰,沈峰,等.基于熔融擠壓快速成型的3D打印關鍵技術發展現狀[J].化工新型材料,2016(10):36-38.
[3] 程偉,李向陽,戴俊平,等.基于Arduino桌面級折疊3D打印機的設計[J].機械研究與應用,2016,29(4):97-99.
[4] 李軒,莫紅,李雙雙,等.3D打印技術過程控制問題研究進展[J].自動化學報,2016,42(7):983-1003.
[5] 佚名.ST展示STM32開放式開發環境[J].單片機與嵌入式系統應用,2016,16(6):86-86.
[6] 李智強,周杰,任勝杰.基于單片機的步進電機細分驅動控制系統[J].機電工程,2007,24(7):67-69.
[7] 謝可,姚鴻強.基于PWM的數字音頻播放器設計[J].計算機應用與軟件,2014,31(5):328-329,333.
[8] 王吉龍.基于模糊PID的溫度控制系統[J].信息化研究,2008,34(5):77-80.
[9] 楊航,劉凌,閻治安,等.雙閉環Buck變換器系統模糊PID控制[J].西安交通大學學報,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。四川省高校科研創新團隊專項基金項目(15TD008)。羅仁澤,教授,主研領域:信號處理與地學信息處理。曹文昌,碩士生。郭俊,碩士生。
TP3
A
10.3969/j.issn.1000-386x.2017.11.057