• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于樹莓派的三維打印上位機(jī)控制系統(tǒng)

      2019-07-12 08:04:16林志偉徐冠華吳森洋
      實驗技術(shù)與管理 2019年6期
      關(guān)鍵詞:控制卡固件樹莓

      林志偉, 徐冠華, 吳森洋

      (1. 浙江大學(xué) 機(jī)械工程學(xué)院, 浙江省三維打印工藝與裝備重點實驗室, 浙江 杭州 310027;2. 浙江大學(xué) 機(jī)械工程學(xué)院 實驗教學(xué)中心, 浙江 杭州 310027;3. 浙江大學(xué) 工程訓(xùn)練(金工)中心, 浙江 杭州 310058)

      三維打印是一種從零件幾何模型出發(fā),通過軟件分層離散,用激光或其他方法將材料逐層堆積而形成三維實體的增材制造技術(shù)[1],突破了傳統(tǒng)制造業(yè)“設(shè)計—試驗—改進(jìn)設(shè)計—工藝準(zhǔn)備—制造”的生產(chǎn)模式[2],被廣泛應(yīng)用于產(chǎn)品原型、模具制造、生物醫(yī)療、藝術(shù)創(chuàng)作等領(lǐng)域,已成為引領(lǐng)未來制造業(yè)的重要技術(shù)之一。

      三維打印相繼出現(xiàn)了選擇性激光燒結(jié)(SLS)[3]、光固化(SLA)[4]、熔融沉積制造(FDM)[5]等十幾種工藝方法。在這些工藝中,FDM具有設(shè)備結(jié)構(gòu)簡單、操作方便、維護(hù)成本低、材料利用率高、安全無毒等特點,應(yīng)用最為廣泛,尤其適合向教育培訓(xùn)行業(yè)推廣。目前國內(nèi)一些高校已建立FDM三維打印開放實驗室,用于培養(yǎng)學(xué)生實踐能力及創(chuàng)新能力[6-7]。

      桌面式FDM三維打印機(jī)一般由打印機(jī)本體和上位機(jī)組成[8]。運(yùn)動控制卡是核心單元,通常基于單片機(jī)開發(fā),一般運(yùn)行開源Marlin固件[9-11],主要實現(xiàn)加工代碼解析及運(yùn)動插補(bǔ)等功能。上位機(jī)一般為個人計算機(jī)(PC),運(yùn)行打印控制軟件,通過串口和打印機(jī)連接。使用PC作為上位機(jī)的優(yōu)勢是在Windows系統(tǒng)下三維打印控制軟件開發(fā)難度低,甚至可直接使用免費開源軟件(如Repetier-Host),缺點是PC占用空間大,搬運(yùn)困難,且價格較為昂貴,難以物盡其用。

      樹莓派(Raspberry Pi)[12-13]是一款采用ARM架構(gòu)處理器和Linux操作系統(tǒng)的卡片式計算機(jī),外形只有信用卡大小,購買成本只需200元左右,卻具有強(qiáng)大的系統(tǒng)功能和接口資源,包括4個USB接口、1個以太網(wǎng)口、1個HDMI口等,可實現(xiàn)普通PC機(jī)的全部功能。樹莓派支持多種語言進(jìn)行應(yīng)用開發(fā),包括C和Python等,開發(fā)者社區(qū)資源極為豐富[14]。與傳統(tǒng)的嵌入式平臺相比,樹莓派在速度、集成度、價格和效率上有明顯優(yōu)勢,近年來在嵌入式開發(fā)領(lǐng)域發(fā)展迅速。

      本文開發(fā)一套基于樹莓派的三維打印上位機(jī)控制軟件系統(tǒng),在樹莓派端實現(xiàn)打印控制及人機(jī)交互基本功能,包括打印機(jī)串口通信、自動打印、打印狀態(tài)查詢等,從而取代PC機(jī),大幅降低桌面式FDM三維打印機(jī)成本,提升打印機(jī)靈活性和產(chǎn)品競爭力。

      1 Marlin固件串口通信協(xié)議

      1.1 Marlin固件

      固件是指燒錄在控制卡中的嵌入式軟件,其作用是解釋上位機(jī)程序發(fā)來的指令,并讓機(jī)器執(zhí)行這些指令。Marlin固件是基于Arduino單片機(jī)開發(fā)的一種三維打印的開源固件,與其他固件相比,Marlin固件的功能最為健全和強(qiáng)大,功能包括控制板驅(qū)動、代碼解析、插補(bǔ)運(yùn)算、各軸步進(jìn)電機(jī)運(yùn)動控制、擠出機(jī)及加熱板的溫度控制等。

      類似于一般數(shù)控系統(tǒng),Marlin固件通過接收上位機(jī)發(fā)送的G代碼指令控制各運(yùn)動軸進(jìn)給及I/O點輸入輸出。Marlin固件常用的G代碼及輔助代碼(M代碼)功能見表1。

      表1 Marlin固件常用G和M代碼功能

      表1中的G0和G1表示直線插補(bǔ),兩者功能一樣;G28表示打印機(jī)各軸回零,G29用于打印機(jī)工作臺面水平補(bǔ)償;G90和G91用于選擇坐標(biāo)系,其中G90為絕對坐標(biāo),G91為相對坐標(biāo),默認(rèn)使用G90。如下代碼:G1 X10 Y20 Z30 E1.0 F100,X、Y、Z為各軸進(jìn)給量,E為進(jìn)絲長度,F為進(jìn)給速度;該行代碼表示打印機(jī)噴頭從當(dāng)前點運(yùn)行至(10, 20, 30)絕對坐標(biāo)點,絕對進(jìn)絲長度為1.0 mm,進(jìn)給速度為100 mm/min。Marlin固件中,輔助代碼M105用于查詢打印機(jī)噴頭及熱床溫度,M106、M107分別用于開啟、關(guān)閉風(fēng)扇。

      1.2 串口通信

      本文使用的運(yùn)動控制卡集成了USB轉(zhuǎn)RS232串口芯片,對外提供USB接口,可與樹莓派直接通過USB數(shù)據(jù)線建立物理連接,如圖1所示。樹莓派端外接觸摸屏,安裝基于Linux的Raspbian操作系統(tǒng),該系統(tǒng)自帶串口驅(qū)動,開發(fā)人員在系統(tǒng)中可直接使用控制卡對應(yīng)的串口資源(如“/dev/ttyUSB0”)。本文選用Python語言編程,通過第三方serial組件向控制卡寫入G代碼字符指令,并讀取返回參數(shù),從而實現(xiàn)樹莓派和控制卡串口通信。

      圖1 樹莓派與打印機(jī)運(yùn)動控制卡物理通信架構(gòu)

      打印機(jī)運(yùn)動控制卡上的用于暫存G代碼的寄存器容量非常有限(100個B左右),僅能保存1~3行指令,因此不能一次性向控制卡發(fā)送多行指令,否則會導(dǎo)致固件宕機(jī)。上位機(jī)在向控制卡發(fā)送一條指令后,須等待下位機(jī)CPU從寄存器取走該指令后才能繼續(xù)發(fā)送下一條指令。Marlin固件規(guī)定:上位機(jī)發(fā)送的每條指令必須以‘ ’字符結(jié)尾,如“G01 X20 Y20 E1.7 ”;下位機(jī)讀取該指令后,向上位機(jī)返回“ok”字符串;上位機(jī)必須在接收到下位機(jī)返回的“ok”后才可繼續(xù)發(fā)送下一條指令,即在指令發(fā)送過程中,‘ ’和“ok”的數(shù)目必須保持一致。根據(jù)Marlin固件的這一代碼發(fā)送規(guī)則,可在樹莓派上設(shè)計相應(yīng)程序,實現(xiàn)G代碼逐行自動發(fā)送。

      2 樹莓派端打印控制程序設(shè)計

      本文選用Python語言編程,利用Python簡潔的語法特性和強(qiáng)大的庫支持,實現(xiàn)樹莓派端包括打印機(jī)串口自動連接、G代碼文件逐行自動發(fā)送、打印過程參數(shù)實時采集以及人機(jī)界面交互等功能。樹莓派端打印控制程序隨樹莓派開機(jī)啟動,總體架構(gòu)見圖2。工作流程簡述如下:首先樹莓派開機(jī)后自動掃描并連接打印機(jī)串口,一方面,操作人員可以通過人機(jī)交互界面選擇需要打印的G代碼文件,開始或終止打印;另一方面,樹莓派端不斷向打印機(jī)查詢當(dāng)前打印機(jī)狀態(tài),如噴頭、熱床溫度等,并將這些參數(shù)顯示在人機(jī)界面上。

      圖2 樹莓派端打印控制程序架構(gòu)

      2.1 串口連接模塊

      打印控制程序隨樹莓派啟動后,首先進(jìn)入串口自動連接模塊。該模塊主要執(zhí)行一段循環(huán)程序,如圖3所示,不斷掃描樹莓派上所有串口資源,即從“/dev/ttyUSB0”掃到“/dev/ttyUSB3”,這些資源分別對應(yīng)樹莓派上4個USB端口。對某一特定串口資源,如“/dev/ttyUSBi”,首先調(diào)用serial組件嘗試連接該資源。在程序中,設(shè)置連接超時(timeout)為2 s,即如果超過2 s尚未建立串口連接,則終止當(dāng)前嘗試,轉(zhuǎn)而連接下一個串口資源。

      如果上位機(jī)和打印機(jī)控制卡建立串口連接,Marlin固件將返回固件初始化信息,包括固件廠商、版本信息等,這些信息最終以“ok”字符串結(jié)尾。根據(jù)這一原理,樹莓派端程序通過識別返回信息中的特定字段(如廠商),可進(jìn)一步校驗當(dāng)前連接的串口資源是否有效,即當(dāng)前連接的對象是否確實為打印機(jī)。如果連接無效,則斷開當(dāng)前連接,并繼續(xù)嘗試下一個串口資源。如此循環(huán)往復(fù),直至連上打印機(jī)。樹莓派和打印機(jī)建立連接之后,控制程序向打印機(jī)發(fā)送“G28”指令,使其執(zhí)行回零動作。

      圖3 樹莓派端窗口自動連接流程

      根據(jù)上述串口連接流程可知,若打印機(jī)先于樹莓派啟動,則樹莓派完成啟動后能馬上連上打印機(jī);若樹莓派先于打印機(jī)啟動,則在打印機(jī)啟動前,樹莓派上的串口連接模塊將處于嘗試連接的循環(huán)狀態(tài),直至打印機(jī)啟動,建立連接。打印機(jī)和樹莓派的開機(jī)先后順序不影響兩者串口連接。在兩者建立連接后,如果出現(xiàn)連接異常,如USB線被拔出等,則需重啟樹莓派才能使兩者重新建立連接。

      2.2 代碼發(fā)送模塊

      由于打印機(jī)運(yùn)動控制卡寄存器大小限制,在三維打印過程中,G代碼只能以一行一行的形式發(fā)送給打印機(jī)。在樹莓派和打印機(jī)建立串口連接之后,經(jīng)人機(jī)交互界面觸發(fā),代碼發(fā)送模塊在獨立線程中啟動運(yùn)行,主要實現(xiàn)G代碼文件自動逐行發(fā)送機(jī)制。

      根據(jù)Marlin固件串口通信規(guī)則,當(dāng)上位機(jī)向下位機(jī)發(fā)送一行指令后,上位機(jī)須在接收到下位機(jī)返回的“ok”字符串才能發(fā)送下一行指令。根據(jù)這一規(guī)則,設(shè)計代碼發(fā)送模塊核心流程(偽代碼)如圖4所示,該流程包含兩重循環(huán)。

      圖4 樹莓派端代碼發(fā)送模塊核心流程

      圖4中,path為指定的代碼文件名,open為Python內(nèi)置文件打開函數(shù),file表示已打開的文件對象。for循環(huán)中,readlines函數(shù)返回包含該文件所有行的列表。需要強(qiáng)調(diào)的是,readlines函數(shù)會自動為返回列表的每行字符串元素結(jié)尾添加‘ ’字符,因此在下面的串口發(fā)送中無需額外添加‘ ’字符。樹莓派在向串口寫完一行G代碼指令后,隨即讀取下位機(jī)返回的內(nèi)容。為了增加代碼發(fā)送流程的魯棒性,這里在讀取串口部分也添加了一個循環(huán),即如果返回的字符串(recvtxt)中不包含“ok”字符串,則繼續(xù)讀取串口,直至返回內(nèi)容包含“ok”,跳出讀取循環(huán)。隨后重新進(jìn)入外部循環(huán)繼續(xù)發(fā)送下一行G代碼。

      樹莓派上位機(jī)通過上述模式可實現(xiàn)G代碼文件自動逐行發(fā)送,直至文件末尾,退出循環(huán)。圖4僅給出了樹莓派發(fā)送G代碼的核心流程,在實際程序編寫過程中,還需考慮諸如異常處理、線程同步等問題。

      2.3 數(shù)據(jù)采集模塊

      數(shù)據(jù)采集模塊主要實現(xiàn)打印參數(shù)實時采集功能。類似于代碼發(fā)送模塊,它同樣運(yùn)行于獨立線程中。不同的是,數(shù)據(jù)采集模塊不用從人機(jī)交互界面觸發(fā),它隨樹莓派啟動并建立串口連接后開始運(yùn)行,隨樹莓派關(guān)閉而結(jié)束。下面以打印機(jī)噴頭及熱床溫度參數(shù)采集為例說明樹莓派數(shù)據(jù)采集方法及流程,其他參數(shù)類似。

      類似于G代碼逐行發(fā)送過程,數(shù)據(jù)采集模塊也需在一個循環(huán)內(nèi)不斷向下位機(jī)發(fā)送查詢指令。對噴頭及熱床溫度查詢來說,在一次循環(huán)內(nèi),樹莓派首先向打印機(jī)發(fā)送“M105 ”指令,然后進(jìn)入和圖4相似的串口讀取流程,打印機(jī)向樹莓派返回如下字符串:“T:24.0/200.0 B:24.0/50.0 ”“ok ”。在以上字符串中,T表示噴頭溫度,24.0為實際溫度值,200為設(shè)定溫度值;B表示熱床溫度,24.0為實際溫度值,50.0為設(shè)定溫度值;“ok”表示參數(shù)讀取完畢。據(jù)此可從返回字符串中提取當(dāng)前噴頭及熱床溫度。為了降低樹莓派及打印機(jī)運(yùn)動控制卡串口通信壓力,在數(shù)據(jù)采集模塊的循環(huán)內(nèi)添加sleep方法,每次數(shù)據(jù)采集完成后讓線程暫停若干秒鐘。

      必須注意的是,在三維打印過程中,樹莓派同時運(yùn)行代碼發(fā)送線程和數(shù)據(jù)采集線程,且在這兩個線程中,都需要循環(huán)讀取串口返回數(shù)據(jù),為避免其中一個線程將另一個線程的“ok”讀走,造成另一個線程卡死,必須做好線程同步,即對兩個線程的串口讀寫部分分別加上線程鎖。

      2.4 人機(jī)交互模塊

      樹莓派端打印控制程序的人機(jī)交互界面(圖5)主要用來實現(xiàn)簡單的打印控制及打印過程參數(shù)顯示功能,采用Python自帶的tkinter庫實現(xiàn)。該界面包含回零、代開代碼、開始打印、停止打印、急停等功能按鈕。其中回零按鈕邏輯上只有當(dāng)打印機(jī)處于空閑(非打印)狀態(tài)下才有效,通過手動發(fā)送一行“G28 ”指令實現(xiàn)。代開代碼按鈕能從當(dāng)前樹莓派存儲卡或U盤選擇需要打印的G代碼文件,所選的文件名將同時被顯示在上方代碼標(biāo)簽中。在G代碼文件選定之后,點擊開始打印按鈕可開啟打印線程,并在其中調(diào)用以上介紹的代碼發(fā)送模塊,實現(xiàn)自動打印功能;停止打印按鈕可終止當(dāng)前打印線程。右上方為急停按鈕,該按鈕通過強(qiáng)制斷開、重連當(dāng)前串口實現(xiàn)急停功能。

      除以上功能按鈕外,界面上還包含一些打印狀態(tài)顯示標(biāo)簽。串口標(biāo)簽,顯示當(dāng)前連接的串口資源;噴頭和熱床標(biāo)簽分別用于顯示打印機(jī)噴頭和熱床實際溫度,這些參數(shù)值通過上述數(shù)據(jù)采集模塊獲??;打印標(biāo)簽用于顯示當(dāng)前打印機(jī)狀態(tài);代碼標(biāo)簽用來顯示當(dāng)前選擇的代碼文件名;進(jìn)度標(biāo)簽用于顯示打印過程中的打印進(jìn)度,該參數(shù)值通過當(dāng)前已發(fā)送的G代碼行數(shù)除以總G代碼行數(shù)計算得到。

      圖5 樹莓派端人機(jī)交互界面

      3 測試平臺

      為驗證樹莓派作為上位機(jī)的穩(wěn)定性及樹莓派端三維打印控制程序的有效性,搭建如圖6所示測試平臺。該平臺硬件上包含一臺FDM三維打印機(jī),一臺樹莓派及一塊觸摸屏。該打印機(jī)X、Y、Z三向行程均為100 mm左右,其中Z軸負(fù)載較大,由2個步進(jìn)電機(jī)雙驅(qū)。樹莓派配置一散熱風(fēng)扇,其上運(yùn)行基于Linux的Raspbian操作系統(tǒng),在該系統(tǒng)中,將文本開發(fā)的打印控制程序設(shè)置為開機(jī)啟動。樹莓派一方面通過USB線和打印機(jī)運(yùn)動控制卡相連,另一方面通過其上DISPlAY端口及專用排線和觸摸屏連接。在觸摸屏上,可對三維打印過程進(jìn)行基本控制。

      圖6 以樹莓派為上位機(jī)的三維打印測試平臺

      圖7為使用該測試平臺打印的愛因斯坦頭像。打印層高為0.15 mm,填充率為20%,全局不使用支撐,打印材料為PLA,噴頭溫度設(shè)置為210 ℃,熱床溫度為0 ℃(即不使用熱床),打印時間約為8 h,能夠穩(wěn)定運(yùn)行。在打印過程中未見各軸移動出現(xiàn)卡頓等現(xiàn)象,且得到的打印樣品表面光滑,說明本文設(shè)計的G代碼逐行發(fā)送機(jī)制能夠完全適應(yīng)打印機(jī)運(yùn)動控制卡的代碼讀取速度。

      圖7 三維打印頭像

      4 結(jié)語

      本文開發(fā)的基于樹莓派的三維打印控制配套軟件系統(tǒng)體積小、成本低,能充分發(fā)揮卡片式計算機(jī)樹莓派的強(qiáng)大功能,大幅降低三維打印機(jī)成本,而且功能可擴(kuò)展性強(qiáng),結(jié)合樹莓派豐富的接口及Python強(qiáng)大的庫支持,可方便將本系統(tǒng)向網(wǎng)絡(luò)化、智能化等方向擴(kuò)展。

      本文后續(xù)工作主要集中在以下兩個方面:

      (1) 在樹莓派端開發(fā)CAM功能,即G代碼生成功能,充分發(fā)揮樹莓派強(qiáng)大的運(yùn)算能力,使其真正意義上取代PC。

      (2) 以樹莓派為網(wǎng)絡(luò)節(jié)點,構(gòu)建打印網(wǎng)絡(luò)集群,開發(fā)遠(yuǎn)程打印控制、數(shù)據(jù)采集存儲等功能,實現(xiàn)三維打印機(jī)物聯(lián)。

      猜你喜歡
      控制卡固件樹莓
      兼容多種運(yùn)動控制卡的V割機(jī)數(shù)控系統(tǒng)關(guān)鍵技術(shù)*
      基于樹莓派的騎行智能頭盔設(shè)計
      電子制作(2019年11期)2019-07-04 00:34:32
      基于樹莓派的遠(yuǎn)程家居控制系統(tǒng)的設(shè)計
      電子制作(2017年17期)2017-12-18 06:40:43
      基于運(yùn)動控制卡的桁架機(jī)器人控制系統(tǒng)設(shè)計
      基于固件的遠(yuǎn)程身份認(rèn)證
      響應(yīng)面法優(yōu)化紅樹莓酒發(fā)酵工藝
      中國釀造(2016年12期)2016-03-01 03:08:19
      提取ROM固件中的APP
      電腦愛好者(2015年7期)2015-04-09 08:54:02
      凌華科技四軸伺服/步進(jìn)運(yùn)動控制卡PCI-C154+
      一種通過USB接口的可靠固件升級技術(shù)
      奧林巴斯XZ—2新固件升級
      中國攝影(2014年1期)2014-02-24 01:50:23
      常宁市| 上虞市| 建宁县| 宁国市| 通山县| 郓城县| 长丰县| 南涧| 泰顺县| 铜川市| 清河县| 马关县| 巴彦淖尔市| 本溪| 洛宁县| 桃园市| 陈巴尔虎旗| 万源市| 永年县| 文山县| 永昌县| 青海省| 静乐县| 长顺县| 南投县| 娱乐| 乐至县| 濮阳市| 新建县| 霍邱县| 托克逊县| 乌苏市| 垦利县| 五河县| 青海省| 和林格尔县| 南川市| 卢龙县| 昌黎县| 海安县| 灌阳县|