孫雪非,張 濤,2
(1.中南大學 信息科學與工程學院,長沙 410083;2.湖南省長沙市礦山研究院,長沙 410083)
電飯煲、豆漿機、榨汁機等自動化廚房設備的相繼面世以來,極大的便利了人們的生活。自動炒菜機也成為人們越來越期望的自動化設備。總結市面上現有的自動炒菜機和研究學者提出的理想方案,主要分為以下三種:第一種是以九陽J7全自動智能炒菜機為例的小型炒菜機,帶有一個普通炒鍋,使用手機APP或電腦控制點菜,加入食材自動燜煮、最后手工調味。第二種是以德國寶ISF-622多功能智能炒菜機為例的帶滾筒的較大型炒菜機,帶有控制面板,加入食材之后,可模擬人工翻炒,最后手工調味。第三種是Morishita等人提出的包含多個監控烹飪動作的傳感器、完成廚房烹飪流水線廚房控制系統[1]。
第一種方案操作靈活,但由于炊具的限制,只能實現燜煮的操作,可以烹飪的菜肴有限;第二種方案可以實現食材的充分混合,烹飪方式有所增加,但與第一種方案均需要人工加入調料、端菜和洗鍋;第三種方案基本可以滿足要求,但目前還停留在概念階段。本文旨在設計出能代替人的大部分甚至是全部的工作,設計出能夠烹飪多種復雜的菜式且口味有一定的保證;能夠端出烹飪完成的菜肴并實現傳菜功能;能夠循環烹飪、自動洗鍋刷鍋的智能炒菜機。
本文在設計時希望可以省去人工添加調料,端菜和洗鍋的工作,人工只需要在已經分好類(肉類1、肉類2、蔬菜1、蔬菜2、蔬菜3、主食、鹽、醋、糖、醬油和料酒等)的盒子中加入相應原料,等待菜肴烹制完成出鍋即可。因此將該智能炒菜機設計成為一個流水系統,又參考了小型自動炒菜機的手機和PC終端點菜控制功能,設計了一個由一臺上位機下發控制指令,多臺下位機接收指令并執行的系統,整體結構圖如圖1所示。其中,上位機人機交互界面由QT編寫[2],具有點菜、預約和取消等功能,與數據庫相連,可從數據庫中調取廚師的經典菜單。下位機包含檢測模塊和執行模塊兩個主要部分,執行部分包括電源模塊、炒菜過程中需要使用的炒鍋、電磁爐模塊及洗鍋、投放物料和端菜傳菜過程需使用的直流電機、步進電機及步進電機驅動器模塊。檢測部分包括檢測炒鍋和電磁爐內液面高度的液位浮球開關、檢測炒鍋和電磁爐內物料溫度的PT100測溫元件和檢測電機運轉狀態的接近開關等模塊。本文的主要研究對象是智能炒菜機的下位機部分。

圖1 智能炒菜機系統結構框圖
本次設計需要下位機實現以下功能:對6臺步進電機、8臺直流電機、1臺變頻電機的控制;對炒鍋和電磁爐的溫度控制;對16個接近開關和8個浮球液位開關的狀態的檢測;對溫度和電流的檢測??紤]到可以使用輪詢訪問方式減少接近開關及浮球液位開關所使用的IO口總數,增加IO口的利用率,在設計因此在設計硬件原題圖時,引入了片選芯片74HC4051、7CHC4067,整個系統共計需要40余個開關量和模擬量的輸入輸出,系統的原理設計圖如圖2所示。

圖2 系統硬件設計原理框圖
其中主控制器為Microchip公司生產的PIC18F87K22芯片[3],PIC18F87K22有RA至RG共7組IO口,每一組IO口有八個子IO口,共計56個IO口,該芯片還帶有12位AD轉換器、1MB增強型閃存器、具有80引腳的高性能單片機,可以提供3路PWM輸出,可滿足本次設計的所有要求[4]。
智能炒菜機在炒菜、端菜、傳菜和洗鍋過程中需要使用到直流電機、步進電機和變頻電機。對于直流電機的控制,本文利用繼電器的開關特性既可以實現無驅動器控制的直流電機控制方式,同時也支持有驅動器環境下的直流電機的控制。圖3為一組直流電機控制的電路原理圖。無驅動器控制時,利用繼電器使直流電機兩端電壓分別為+12V和AGND,實現直流電機正轉或反轉;當直流電機兩端電壓相同時,電機停轉。有驅動器控制時,可通過控制“使能端”和“方向端”的電壓值為+12V或AGND,與直流電機驅動器相連,控制同理。

圖3 直流電機控制電路
對于步進電機的控制,本系統采用了MOONS'公司的SR2驅動器,共陰極接法。PIC單片機輸出兩路開關量“EN”和“DIR”分別控制步進電機的轉停和轉向,輸出一路脈沖“STEP”控制步進電機的轉速。步進電機驅動示意圖如圖4所示。

圖4 步進電機驅動示意圖
對于變頻電機的控制,PIC18F87K22單片機具有PWM輸出功能,為了保證這一路輸出經過光電耦合器只被隔離而不影響原有的占空比,本文采用輸入輸出成線性關系的HCNR200線性光耦,調整電路參數[5],使輸入輸出保持線性關系。
PIC單片機輸出的PWM脈沖,即為HCNR的輸入端,其電壓為Vin;連接變頻器的端口為HCNR的輸出端,電壓為Vout,HCNR的輸入端和輸出端存在如下線性關系:

圖5 PT100測溫前置放大電路

其中,K為比例系數,R1和R2分別如輸入端和輸出端的電阻。因此,可以驅動PIC單片機輸出占空比不同的PWM方波,再通過HCNR200線性光耦驅動變頻電機以不同速率工作。
智能炒菜機系統在制作菜肴時需要實時監控鍋內物料的溫度,因此選取合適的溫度傳感器及設計相應放大電路來獲取準確的溫度值是本系統硬件設計的一個重點。本文使用的溫度傳感器是PT100,是一種穩定性和線性都比較好的鉑絲熱電阻傳感器,工作范圍為-200℃至 650℃[6]??紤]到炒菜環境中的物料溫度,本系統中選擇其工作在0℃~500℃范圍。PT100測溫電路分為兩部分:傳感器前置放大電路和單片機A/D轉換電路。前置放大部分原理圖如圖5所示。從圖中可以看出傳感器的兩端接入一個二級放大電路,放大倍數分別為。按照PT100的參數,其在0℃~500℃的區間內,電阻值為100~280.9Ω,根據放大電路的工作原理,PT100放大電路的輸出端電壓Up與PT100阻值有如下關系:

其中,Vcc為參考電壓,RPT100為PT100傳感器的實時電阻,根據式(2)可求得RPT100,又因為在-200℃~650℃范圍內,溫度T與阻值RPT100間存在較好的線性關系,則有:

其中RPT100為PT100在環境溫度為0℃時的阻值。連列式(2)和式(3)可以計算出不同輸出電壓對應的檢測溫度[6]。

圖6 PIC單片機主程序流程框圖
完成了系統的硬件部分的實物設計后,需要根據本次設計需要,在PIC單片機機中燒錄相應程序。下位機的程序決定了與上位機之間的通信方式,及收到上位機指令后將如何動作,程序主要分為主程序和中斷兩個部分,主程序的流程框圖如圖6所示。由圖中可以看出,主程序中為一個大循環,在每一次循環中下位機判斷上位機是否有發給該下位機節點的指令,若有,則存儲指令,更新相應的標志位和時間點,并根據已經獲得的接近開關和浮球液位開關的實時檢測結果Flagi(i=1,2,…,24)來控制執行機構的執行相應的動作;若沒有上位機的新指令,根據原有的標志位和時間節點,結合實時檢測結果Flagi(i=1,2,…,24)執行相應動作。
中斷程序分為三個部分,T0中斷用于檢測接近開關和浮球液位開關的動作變換及獲得對應序號,T2中斷用于指令動作時間的定時,AD中斷用于檢測外部的輸入,流程框圖如圖7所示。

圖7 PIC單片機中斷程序流程框圖
T0中斷設為50ms,即每50ms進入一次T0中斷,在該中斷中,T0定時器重新賦初值,控制片選芯片,一次訪問片選芯片的各個輸出端的端口電壓,則可獲得各個接近開關和浮球液位開關的狀態,刷新實時檢測結果Flagi(i=1,2,…,24)。
T2中斷設為100ms,通過累加獲得系統時間的秒、分和時,用于下位機的定時,與指令中各執行機構的開始動作時間和結束動作時間結合判斷,控制執行機構的動作。系統進入AD中斷后,開始將外部系統輸入的模擬量轉化為數字量,再由PIC單片機做后續處理。
本系統PC端的人機交互界面實現點菜、預約等功能,本文在設計界面時選擇了QT作為開發平臺,C++作為編程語言,利用QT自帶的串口庫程序,實現與下位機的通訊。本文設計的指令發送界面如圖8所示,此界面分為三個區域,串口設置區域、發送區域和接收區域。接收區域可以選擇通訊端口及傳輸速率,發送區域為指令列表,接收區域為下位機發送來的各外圍設備運行狀態的檢測數據[5]。

圖8 上位機指令發送界面
由于菜譜數據復雜多變,且需要在云端更新,我們引入了MySQL數據庫,將菜譜中的每一道菜存為一組長為28個字節的指令數據,存儲于數據庫中的一個表中,接收到的檢測數據存儲了數據庫的另一個表中,需要時我們可以直接查閱并調用數據庫。
由于在使用過程中,主控制器需要不斷地將檢測模塊的實時檢測數據和當前執行模塊的運行狀態傳送給上位機,上位機通過計算判斷需要不斷給主控制器發送指令,因此上位機與下位機的通訊需要高速且穩定,由于智能炒菜機系統需要多個主控器及其外圍設備配合,因此通訊時還需要考慮多個節點之間的干擾和對總線的占用問題。本文針對上述要求,選擇工業級別的Modbus總線協議,使用RS485通訊接口,實現上位機與多個下位機之間的通訊。為了精簡系統結構,增加系統的通訊靈活性,本系統沒有使用Modbus芯片,而采用了軟件編寫代碼的方式實現Modbus協議[6],上位機Modubus模塊的流程框圖如圖9所示。

圖9 Modbus協議代碼實現流程圖
本文基于PIC18F87K22單片機,實現了AD轉換,實現了PWM輸出,實現了對多節點、多路輸出的控制,實現了對多路接近開關和浮球液位開關的輪詢訪問,設計完成了一個集點菜、烹飪、傳菜和刷鍋功能于一體的智能炒菜機系統。在整個烹飪過程中,人工只需從菜譜中選擇烹飪的菜肴并投入相應物料即可,極大的解放了繁雜的烹飪工作,在智能廚房等項目中有良好的應用前景。
此外,本系統也存在一些可以改進的地方,在人機交互方面,可以考慮與手機app結合,實現移動化控制;在產品功能方面,可以增加物料的分類洗滌,如對肉類原料和蔬菜類原料進行不同程度的清洗等。