劉 晉 步亞男 金禹含 蘇 臣
(遼寧師范大學(xué)計算機信息與技術(shù)學(xué)院 遼寧 大連 116000)
?
桌面3D打印機控制系統(tǒng)的設(shè)計與實現(xiàn)
劉晉步亞男金禹含蘇臣
(遼寧師范大學(xué)計算機信息與技術(shù)學(xué)院遼寧 大連 116000)
目前市場上的桌面3D打印機的控制系統(tǒng)基本都是國外開發(fā)的開源控制系統(tǒng),因此有必要開發(fā)一款3D打印機的控制系統(tǒng)。該控制系統(tǒng)下位機程序運行在arm處理器和μCOS環(huán)境下,上位機控制軟件是在微軟的WPF框架下通過c#語言開發(fā)的。系統(tǒng)工作過程為:上位機軟件讀取并處理文件中讀取的命令,然后通過串口發(fā)送到下位機,下位機接到命令后對命令進(jìn)行處理并控制步進(jìn)電機的運動。最后系統(tǒng)經(jīng)過調(diào)試運行,雖然在打印效果和機器運行速度上沒有顯著提高,但是這是一種新的嘗試,證明了該控制系統(tǒng)的可行性。
3D打印arm stm32μCOSWPF
自1984年Charles Hull制作出第一臺3D打印機以來,3D打印技術(shù)歷經(jīng)了30多年的發(fā)展,正逐步成為最有生命力的先進(jìn)制造技術(shù)之一[1]。在全球3D Systems和Stratasys兩家公司的產(chǎn)品占據(jù)了絕大多數(shù)市場份額[2]。目前市場上的桌面3D打印機種類繁多。常見的有RepRap類型、BoxBot類型、RepStrap類型等。本文用的是RepRap機型,它具有開源的控制板以及固件[3]。本文沒有用開源的控制板和固件,而是嘗試著開發(fā)一款新型的3D打印機控制系統(tǒng)。整個控制系統(tǒng)分為上位機程序和下位機程序兩部分。上位機程序讀取G-code文件將命令行通過usb轉(zhuǎn)串口數(shù)據(jù)線發(fā)送到stm32開發(fā)板。下位機主要包括溫控模塊、串口數(shù)據(jù)接收模塊、數(shù)據(jù)處理模塊、電機運動控制模塊等。
1.1機械原理
3D打印機根據(jù)其使用的坐標(biāo)系可分為笛卡爾坐標(biāo)系和極坐標(biāo)系等。根據(jù)其材料的成型原理可分為:燒結(jié)和融化、粉末-粘合劑、熔融沉積造型技術(shù)、層壓制造、高分子聚合反應(yīng)等。本文使用的RepRap機型的核心靈感來源于笛卡爾機械,它可以沿X、Y和Z軸三個直線方向移動,每個軸使用較高精度和準(zhǔn)度的小型步進(jìn)電機,再通過細(xì)分控制步進(jìn)電機使其精度達(dá)到1 mm左右。其中,X軸和Y軸通過同步帶沿軸向提供快速、精準(zhǔn)的定位,Z軸通過螺紋桿實現(xiàn)精準(zhǔn)定位。其材料成型的原理為熔融沉積造型技術(shù)。即在指定的位置上讓熱熔塑料通過加熱后的噴頭,擠出很細(xì)塑料絲。最后通過沉積塑料絲的方式繪制3D物品。
1.23D打印機的工作鏈
3D打印機工作流程中的每一步都有相應(yīng)的軟硬件配合,正是它們構(gòu)成了3D打印的工作鏈。工作鏈的簡圖如圖1所示。
(1) 3D模型
整個流程是從一個3D模型開始的。它可以是.stl文件或者其他3D模型的文件格式,可以從網(wǎng)上下載,也可以通過3D制作軟件制作。
(2) 模型分層和路徑文件
模型準(zhǔn)備好后,由于3D打印機是將模型按層打印的,一次只打印一層。所以需要把模型分層,并且生成路徑文件。打印頭根據(jù)路徑文件運動并擠出打印絲。Cura是一款應(yīng)用比較廣泛的分層軟件,這里將直接使用Cura軟件進(jìn)行分層。
(3) 打印控制軟件
打印控制軟件是在電腦端的應(yīng)用軟件,它將G-code文件中的命令行發(fā)送至底層的控制板從而控制打印機工作。
(4) 固件
固件即底層的控制程序,負(fù)責(zé)解釋G-code指令,控制電子器件執(zhí)行。固件直接影響到打印物品的質(zhì)量。
圖1 3d打印機工作鏈
上位機控制軟件的開發(fā)環(huán)境為visual studio2010中的WPF開發(fā)框架,WPF開發(fā)理念更符合自然哲學(xué)的思想而且界面較好,與其他界面開發(fā)工具相比,較為簡單,程序更加簡潔清晰。底層控制程序的開發(fā)環(huán)境為 windows XP下的Keil MDK,使用意法半導(dǎo)體公司的stm32開發(fā)板,處理器為ARMCortex-M3。同時為其移植了μCOSⅢ嵌入式實時操作系統(tǒng)。
圖2為開發(fā)環(huán)境中的預(yù)覽效果,有原點坐標(biāo)初始化、噴頭溫度設(shè)置、打開文件按鈕、發(fā)送按鈕、串口狀態(tài)顯示、暫停打印按鈕等。
圖2 軟件界面圖
3.1打開文件按鈕
此功能通過OpenFileDialog類實現(xiàn)。打開文件后,文件路徑顯示到界面,用SerialPort類打開串口并進(jìn)行參數(shù)初始化。使用COM6端口,波特率為115 200,數(shù)據(jù)位8位,停止位1位。
3.2發(fā)送按鈕
此按鈕實現(xiàn)從G-Code文件讀取一行命令,并發(fā)送到下位機。由于G-Code文件一般都是幾萬行,而且每行命令需發(fā)到下位機解處理后才能讀取下一條。因此由于長時間未跳出button的事件處理函數(shù),因此在發(fā)送按鍵的事件處理函數(shù)中新建一個線程專門用于讀取G-Code文件。如果未收到下位機的反饋則掛起該線程,以保證其它的線程不受影響。
4.1開發(fā)前準(zhǔn)備
開發(fā)之前,需先將μCOSⅢ移植到stm32開發(fā)板上,μCOS是一個可裁剪、可固化、可剝奪型的實時內(nèi)核[5]。底層控制程序主要包括以下幾個模塊兒。
4.2溫控模塊
溫控模塊包括測溫和加熱兩部分。溫控模塊的電路圖如圖3所示。首先通過ADC外設(shè)獲得熱敏電阻的分壓,從而確定其電阻,進(jìn)一步根據(jù)熱敏分度表獲得當(dāng)前溫度。得到當(dāng)前溫度后通過PID算法,實現(xiàn)了快速,穩(wěn)定的溫度控制。
圖3 溫控模塊電路圖
4.3限位開關(guān)模塊
3D打印機工作前需要將打印頭回到原點,并進(jìn)行一系列的初始化。這里將限位開關(guān)一端接地,另一端連接到控制板的外部中斷接口。通過外部中斷判斷打印頭是否到達(dá)原點位置。調(diào)試過程中筆者發(fā)現(xiàn)打印頭在還未觸發(fā)限位開關(guān)時,步進(jìn)電機就已經(jīng)停止了轉(zhuǎn)動。經(jīng)過反復(fù)調(diào)試,發(fā)現(xiàn)步進(jìn)電機的脈沖信號對外部中斷信號造成了干擾。解決方法為將普通的導(dǎo)線換成了屏蔽雙絞線。
4.4串口接收模塊
上位機和下位機通過串口實現(xiàn)通信,其中,PA9和PA10分別為串口通信的發(fā)送和接收引腳。將PA9配置為復(fù)用推挽輸出模式,PA10配置為浮空輸入模式,然后進(jìn)行USART的初始化。當(dāng)數(shù)據(jù)發(fā)送至串口觸發(fā)串口中斷并執(zhí)行串口中斷處理函數(shù)。其中需用到μCOS-Ⅲ提供的存儲管理方法。
4.5命令解析模塊
此模塊通過有限狀態(tài)機實現(xiàn)。本文的狀態(tài)機如圖4所示。當(dāng)命令解析模塊收到一條命令后將其分成若干段。如收到” G0 F9000 X0 Y0 Z0”后,將其分解為”G0”、”F9000”、”X0”、”Y0”、”Z0”等作為狀態(tài)機的事件,根據(jù)當(dāng)前狀態(tài)執(zhí)行不同的程序,并根據(jù)情況改變當(dāng)前狀態(tài)。
圖4 狀態(tài)機狀態(tài)轉(zhuǎn)換圖
4.6電機控制模塊
PWM在電子技術(shù)中占據(jù)著重要的地位,被廣泛應(yīng)用在逆變電路中。以正弦波為例,將正弦波等分成N份,利用相同數(shù)量的等幅不等寬的矩陣脈沖代替,使矩形脈沖的中點重合,且使矩形脈沖和相應(yīng)的正弦波部分面積相等,就得到一系列幅值相等而寬度隨正弦規(guī)律變化的矩形脈沖[8]。3D打印工作過程中需要步進(jìn)電機轉(zhuǎn)動精確地步數(shù)。因此直接利用定時器的PWM輸出功能有一定的局限性。因此本文利用stm32的通用定時器和GPIO重新實現(xiàn)了步進(jìn)電機電脈沖的輸出控制。
本文使用通用定時器的四個通道,其中三個通道分別控制PB10、PB12、PB14輸出電平,控制X、Y、Z軸步進(jìn)電機的運動。另外一個控制擠出機的步進(jìn)電機。在定時器中斷處理函數(shù)中有四個分支。如果中斷來自通道1,則改變X軸步進(jìn)電機控制引腳PB10的輸出電平,并且將當(dāng)前比較寄存器TIMx_CCR的值加上T。通過改變T的值就可以控制PB10輸出固定周期的脈沖信號。由于定時器的時鐘頻率為1 KHz,所以定時器的脈沖間隔T=1/1 MHz。即計數(shù)周期為1微秒。如果每計T個數(shù),改變一次輸出電平,則脈沖信號的周期為2T微秒。為了控制步進(jìn)電機轉(zhuǎn)動精確地步數(shù),文章中用了X_Step變量。每走一步X_Step變量執(zhí)行減1操作。一旦X_Step為0。則關(guān)閉相應(yīng)通道的計時脈沖。這樣就可以輸出固定步數(shù)、固定周期的脈沖信號了,從而實現(xiàn)了對步進(jìn)電機的精確控制。
將上位機和下位機用于同步的控制字符顯示在打印控制軟件界面上。當(dāng)機器運行卡住時,可以確定問題的所在。調(diào)試中,經(jīng)常出現(xiàn)上位機發(fā)送100條左右命令時機器停止運行。通過控制字符知道問題出在下位機。通過編程軟件的watch功能發(fā)現(xiàn),機器停止運行時,控制電機運動的一個變量值為0。該變量直接決定脈沖信號波周期。若它的值為0,則沒有脈沖信號輸出。將算法優(yōu)化后,問題得到了解決。目前,3D打印機已經(jīng)可以持續(xù)的運行。圖5為調(diào)試過程打印出的一些樣品。
圖5 打印樣品
本控制系統(tǒng)在運行上相對穩(wěn)定,是3D打印控制系統(tǒng)的一次新的嘗試。雖然在打印效果上沒有市場上的打印機完美,但是對于國內(nèi)3D打印的發(fā)展有一定的借鑒和參考意義。
[1] 黃健,姜山.3D打印技術(shù)將掀起“第三次工業(yè)革命”?[J].新材料產(chǎn)業(yè),2013(1):62-67.
[2] 王雪瑩.3D打印技術(shù)與產(chǎn)業(yè)的發(fā)展及前景分析[J].中國高新技術(shù)企業(yè),2012(26):3-5.
[3] Brian Evans.解析3D打印機[M].北京:機械工業(yè)出版社,2013.
[4] 劉鐵猛.深入淺出WPF[M].北京:中國水利水電出版社,2010.
[5] Jean J Labrosse.嵌入式實時操作系統(tǒng)μc/OS-Ⅲ[M].北京:北京航空航天大學(xué)出版社,2012.
[6] 姜換新.ARM嵌入式系統(tǒng)C語言編程[J].計算機應(yīng)用與軟件,2003,20(10):15-16.
[7] 譚同超.有限狀態(tài)機及其應(yīng)用[D].廣州:華南理工大學(xué),2013.
[8] 謝可,姚鴻強.基于PWM的數(shù)字音頻播放器設(shè)計[J].計算機應(yīng)用與軟件,2014,31(5):328-329,333.
[9] 牛晰.桌面3D打印機結(jié)構(gòu)分析及機體設(shè)計研究[J].設(shè)計,2015(4):94.
DESIGN AND IMPLEMENTATION OF DESKTOP 3D PRINTER CONTROL SYSTEM
Liu JinBu Ya’nanJin YuhanSu Chen
(CollegeofComputerandInformationTechnology,LiaoningNormalUniversity,Dalian116000,Liaoning,China)
Most of the desktop 3D printer control systems on the market are basically the open source system developed by other countries. Therefore we decided to develop a 3D printing control system with the help of our tutor. The lower computer in control system operates its program on arm processor and in the environment of μCOS, and the control software of the upper computer is developed by c# in WPF frame of Microsoft. The working processes are as follows: the upper computer software reads and processes the commands in a text file, and then sends the processed commands to lower computer system through serial port. The lower system processes the commands after receiving them and controls the motions of stepper motor. Finally we debugged the system. Though there has no significant improvement in both printing effect and operation speed of printer, however as a new attempt, it proves the feasibility of this control system.
3D printingarm stm32μCOSWPF
2015-07-12。劉晉,教授,主研領(lǐng)域:嵌入式系統(tǒng)。步亞男,碩士生。金禹含,碩士生。蘇臣,碩士。
TP3
A
10.3969/j.issn.1000-386x.2016.10.072