韓高飛,許一靖,朱峻屹,李治恒,李博涵,潘爽爽,高宏峰
(河南科技大學(xué)信息工程學(xué)院,河南 洛陽(yáng) 471023)
隨著人們生活的需求不斷增加和咖啡市場(chǎng)的不斷擴(kuò)大,咖啡已逐漸成為公眾喜愛(ài)的一種飲料。拉花作為精品咖啡的重要組成部分,拉花圖案對(duì)顧客的視覺(jué)、嗅覺(jué)、味覺(jué)等感官產(chǎn)生重要影響。
目前,大多數(shù)高級(jí)咖啡館均有專業(yè)的拉花師,但培養(yǎng)一位初級(jí)拉花師需花費(fèi)六個(gè)月的時(shí)間和兩萬(wàn)元左右的費(fèi)用。同時(shí)越來(lái)越繁雜的咖啡拉花圖案和急劇增加的顧客數(shù)量,使手工拉花已經(jīng)無(wú)法滿足需求。因此市場(chǎng)迫切需要一種可以自動(dòng)拉花[1]的智能設(shè)備。
為了解決目前自動(dòng)拉花中存在的問(wèn)題,本文設(shè)計(jì)了一種新型的咖啡拉花機(jī)[2]。首先,采用氣動(dòng)活塞式打印噴頭,實(shí)現(xiàn)奶油連續(xù)且穩(wěn)定體積擠出;通過(guò)引入步進(jìn)電機(jī)梯形速度前瞻算法和加減速算法,進(jìn)一步重新設(shè)計(jì)拉花機(jī)運(yùn)動(dòng)控制算法,以解決拉花立體打印[3]過(guò)程中遇到的柔性沖擊、高曲率拐角突變等問(wèn)題。本文所提方案能提高拉花的精度和穩(wěn)定性,實(shí)現(xiàn)咖啡拉花機(jī)自動(dòng)拉花的功能。
系統(tǒng)流程圖如圖1所示。首先,對(duì)要打印的圖案通過(guò)三維建模軟件Soidworks建立模型,并將軟件建立的模型保存為STL文件格式,STL文件格式中含有模型的三角面片信息。其次,再設(shè)置切片軟件初始層后續(xù)、外層厚度和打印速度等參數(shù),并通過(guò)適應(yīng)性分層算法切割3D模型,規(guī)劃模型打印路徑,將STL文件轉(zhuǎn)化成具有G代碼命令流格式的G代碼文件,最終保存到SD卡中。SDIO實(shí)現(xiàn)把SD卡中的數(shù)據(jù)讀取到STM32的內(nèi)存中,STM32通過(guò)解析G代碼命令,產(chǎn)生脈沖信號(hào)給步進(jìn)電機(jī)驅(qū)動(dòng)器,而后驅(qū)動(dòng)器控制XYZ軸步進(jìn)電機(jī)運(yùn)動(dòng)。
圖1 系統(tǒng)工作流程
3D打印噴頭[4]的重要功能是將奶油連續(xù)和穩(wěn)定體積擠出。為了盡量限制3D打印噴頭結(jié)構(gòu)尺寸、減輕重量以及在耗材用完后方便換料,本設(shè)計(jì)將采用氣動(dòng)活塞式結(jié)構(gòu)的3D打印噴頭。3D打印噴頭由噴嘴、料筒、活塞和氣泵組成,其中氣泵選用流量能精確控制的蠕動(dòng)泵,蠕動(dòng)泵產(chǎn)生的氣壓通過(guò)泵管等壓力推動(dòng)活塞,活塞再擠壓料筒內(nèi)部的空氣將奶油從噴嘴擠出[5]。由于考慮到咖啡拉花打印不需要達(dá)到像FDM打印那樣高的打印精度,為了減小擠出阻力,并根據(jù)實(shí)際打印效果分析,噴嘴最終選用了18G(內(nèi)徑0.86 mm,半徑為0.43 mm)針管,有效長(zhǎng)度為7 mm。
該噴頭料筒的優(yōu)點(diǎn)是采用非固定安裝方式,易于更換,可將奶油預(yù)先灌裝在塑料料筒中,耗材用完后直接更換料筒,工作效率高,用戶使用方便。
系統(tǒng)硬件主要包括步進(jìn)電機(jī)驅(qū)動(dòng)電路模塊和斷電續(xù)打模塊。步進(jìn)電機(jī)驅(qū)動(dòng)電路將控制器輸出的微弱電流脈沖信號(hào)進(jìn)行放大,按步進(jìn)順序關(guān)系分配給各個(gè)繞組使之步進(jìn)動(dòng)作。斷電續(xù)打模塊利用電容儲(chǔ)存余電對(duì)微控制器芯片發(fā)送斷電指令,保存當(dāng)前時(shí)刻的位置信息。當(dāng)再次上電時(shí),可以繼續(xù)打印上次未完成的模型。
本設(shè)計(jì)使用的是兩相四線混合式步進(jìn)電機(jī),其需要范圍為9V~36V的工作電壓和1.7A的額定電流。驅(qū)動(dòng)電路將采用DVR8825的微雙極步進(jìn)電機(jī)驅(qū)動(dòng)芯片,其具有可調(diào)節(jié)電流大小、過(guò)流和過(guò)熱保護(hù)等功能。驅(qū)動(dòng)電路包括EN、DIR、STEP 3路等輸入端口,ENABLE端口用于使能DRV8825內(nèi)部的場(chǎng)效應(yīng)管輸出,當(dāng)ENABLE為高時(shí),不使能輸出,電機(jī)處于鎖緊狀態(tài);而當(dāng)ENABLE為低時(shí),使能輸出,電機(jī)會(huì)處于運(yùn)動(dòng)狀態(tài)。DIR用于控制步進(jìn)電機(jī)的正反轉(zhuǎn),DIR為正時(shí),電機(jī)正轉(zhuǎn);DIR為低時(shí),電機(jī)反轉(zhuǎn)。STEP為步進(jìn)電機(jī)脈沖輸入端口,STEP收到控制器發(fā)送過(guò)來(lái)的一個(gè)脈沖后,產(chǎn)生1.8°的步距角。
斷電續(xù)打模塊為AC220V和開(kāi)關(guān)電源的中轉(zhuǎn)區(qū),一端接插座220V,另一端接開(kāi)關(guān)電源,通過(guò)繼電器控制它們之間的通斷。其核心思想是當(dāng)突然斷電時(shí),利用其儲(chǔ)存在電容里的余電對(duì)微控制器芯片發(fā)送斷電指令,通知單片機(jī)此刻斷電以保存當(dāng)前時(shí)刻的位置信息,當(dāng)再次上電時(shí),繼續(xù)打印上次未打印完成的模型。使用繼電器實(shí)現(xiàn)弱電控制強(qiáng)電,光電耦合器PC817隔離前后級(jí)電路,避免強(qiáng)電部分對(duì)弱電部分的干擾。Single端輸出高電平時(shí)為正常狀態(tài)。由于光耦反應(yīng)速度在幾微秒左右,當(dāng)突然斷電時(shí),Single會(huì)瞬間發(fā)出一個(gè)低電平通知單片機(jī)來(lái)完成保存數(shù)據(jù)的命令,此時(shí),單片機(jī)利用存儲(chǔ)在電容里的余電進(jìn)行數(shù)據(jù)的保存。實(shí)驗(yàn)證明,此功能可以使單片機(jī)順利完成數(shù)據(jù)的存儲(chǔ)。
圖2 步進(jìn)電機(jī)驅(qū)動(dòng)電路
軟件設(shè)計(jì)主要包括步進(jìn)電機(jī)運(yùn)動(dòng)控制[6]和人機(jī)交互。用戶可以在拉花機(jī)顯示屏上選擇想要打印的拉花圖案,通過(guò)手機(jī)掃碼完成支付,拉花機(jī)為用戶制作一杯拉花咖啡。在步進(jìn)電機(jī)運(yùn)動(dòng)控制上提出了梯形加減速算法和速度前瞻算法。其中,梯形加減速算法主要用于控制步進(jìn)電機(jī)的運(yùn)動(dòng)過(guò)程,而速度前瞻算法運(yùn)用圓弧轉(zhuǎn)接算法對(duì)打印路徑中的拐角速度進(jìn)行速度規(guī)劃。
咖啡拉花機(jī)中的步進(jìn)電機(jī)在使用過(guò)程中會(huì)遇到以下幾種情況:首先,咖啡拉花機(jī)在步進(jìn)電機(jī)正常運(yùn)行狀態(tài)下速度相對(duì)較慢,而步進(jìn)電機(jī)啟動(dòng)、停止和速度變化較大時(shí),咖啡拉花機(jī)容易發(fā)生失步和過(guò)沖現(xiàn)象;其次,步進(jìn)電機(jī)控制系統(tǒng)的極限啟動(dòng)頻率遠(yuǎn)遠(yuǎn)低于要求的運(yùn)行速度,當(dāng)按照要求的運(yùn)行速度直接啟動(dòng)時(shí),控制系統(tǒng)可能會(huì)因速度過(guò)高而發(fā)生丟步或堵轉(zhuǎn)等現(xiàn)象;最后,當(dāng)?shù)竭_(dá)終點(diǎn)時(shí)STM32控制中心立即停止發(fā)送脈沖串,電機(jī)轉(zhuǎn)子會(huì)因系統(tǒng)慣性而轉(zhuǎn)過(guò)平衡位置,一旦系統(tǒng)負(fù)載的慣性較大,步進(jìn)電機(jī)轉(zhuǎn)子會(huì)轉(zhuǎn)到接近終點(diǎn)平衡位置的下一個(gè)平衡位置,并最終停止在該位置。因此,為了解決上述問(wèn)題,本文將采用梯形加減速算法[7]以保持良好的步進(jìn)電機(jī)運(yùn)動(dòng)控制過(guò)程。
圖3 梯形加減速算法速度變化曲線
由圖3分析可知,梯形加減速算法速度變化曲線可以分為以下三個(gè)階段:
1) 加速過(guò)程:此階段的速度保持固定斜率呈現(xiàn)不斷上升的變化趨勢(shì),得到vi+1=vi+aT,其中vi+1為第i+1個(gè)插補(bǔ)周期的速度;vi為第i個(gè)插補(bǔ)周期的速度;a為用戶設(shè)定的加速度;T為插補(bǔ)周期。
2) 勻速過(guò)程:此階段的速度將保持不變,即vi+1=vi;
3) 減速過(guò)程:此階段的速度沿直線不斷下降,即vi+1=vi-aT。
由上述曲線和數(shù)學(xué)模型可知,在給定步數(shù)時(shí),速度將從零開(kāi)始加速,當(dāng)?shù)竭_(dá)既定的最大速度后保持勻速運(yùn)動(dòng),運(yùn)動(dòng)到一定步數(shù)后開(kāi)始減速,最后停下來(lái)到達(dá)給定的步數(shù),速度曲線類似一個(gè)梯形的變化過(guò)程,這樣可以讓電機(jī)啟動(dòng)或者停止更加平滑,避免抖動(dòng)的出現(xiàn)。
咖啡拉花機(jī)在高曲率或拐角處時(shí),拉花機(jī)噴頭的方向?qū)l(fā)生突變,會(huì)嚴(yán)重影響拉花精度。本文采用速度前瞻控制算法[8]來(lái)減少打印過(guò)程中的振動(dòng)沖擊。其主要分為以下幾個(gè)步驟:首先,預(yù)先獲取待打印模型的位置信息,基于位置信息以得到規(guī)劃的最佳速度值。其次,利用得到的多個(gè)連續(xù)插補(bǔ)段速度值以避免頻繁的加減速過(guò)程,并對(duì)高曲率點(diǎn)或者拐角處的情況及時(shí)調(diào)整速度。通過(guò)預(yù)讀一部分G代碼指令,每次執(zhí)行插補(bǔ)均可提前獲取相鄰打印路徑的諸多信息,如:變速點(diǎn)位置和速度信息等,并及時(shí)對(duì)打印速度進(jìn)行平滑處理。通過(guò)圓弧轉(zhuǎn)接算法對(duì)打印路徑中的拐角速度完成規(guī)劃,可以實(shí)現(xiàn)較好的系統(tǒng)性能。
速度前瞻算法流程圖如圖4所示。STM32微控制器在執(zhí)行插補(bǔ)前,需要預(yù)讀3條G代碼指令,其中每條G代碼指令均由運(yùn)行速度值和XYZ坐標(biāo)軸位置組成。獲得坐標(biāo)位置和運(yùn)行速度后,通過(guò)對(duì)位置坐標(biāo)進(jìn)行計(jì)算以得到2段插補(bǔ)段路程分別對(duì)應(yīng)的脈沖數(shù)。在脈沖數(shù)的基礎(chǔ)上,通過(guò)查梯形曲線速度表(將事先規(guī)劃好的速度曲線存入到ROM中,在加減速過(guò)程中控制ROM地址的偏移來(lái)生成連續(xù)變化的速度值)和每段插補(bǔ)段的運(yùn)行速度,得到速度值對(duì)應(yīng)的累計(jì)脈沖數(shù)。最終,基于各插補(bǔ)段G代碼命令得到不同的運(yùn)行速度,并利用本文所提的梯形曲線加減速算法完成咖啡拉花機(jī)的速度規(guī)劃。
圖4 速度前瞻算法
本文基于STM32 ARM微控制器設(shè)計(jì)了新型的咖啡拉花機(jī),在3D打印噴頭的機(jī)械結(jié)構(gòu)設(shè)計(jì)和步進(jìn)電機(jī)運(yùn)動(dòng)控制算法等方面提出諸多改進(jìn)方案,解決了目前咖啡立體拉花打印精度低、穩(wěn)定性差等問(wèn)題。