朱建軍,孫佳東,謝俊杰,李天順,姜衍超
(1.吉林化工學院,吉林吉林,132022;2.燕山大學,河北秦皇島,066004)
PID[1]控制理論因其廣泛的工程應用性,在高校的實驗課程中占有較大比重,但是目前常見的PID控制實驗裝置多為溫度、液位調節系統,這類平臺普遍存在對實訓環境要求較高、參數設定困難、調節周期長等問題。該類實驗設備大都采購于教學儀器廠家,成本較高,維修升級麻煩。本文針對自動控制原理實驗課程,研制了小球懸浮實驗裝置[2]。該裝置操作簡單且便于維護,完全可以滿足自動化專業學生掌握PID原理、編程與應用的需要。
本系統硬件系統主要由攝像頭、Arduino單片機、串口模塊、PWM調節器、玻璃筒、乒乓球、軸流風機等裝置組成,并在此基礎上設計軟件程序及上位機界面。乒乓球放置在下方安裝有軸流風機的豎直玻璃筒內,風機可吹動乒乓球在筒內沿豎直方向運動。上位機與單目攝像頭連接,通過OpenCV進行顏色識別,可測得乒乓球在筒內的位置信息,上位機通過PID算法處理位置信息,通過串口將輸出數據傳送給下位機,下位機接收到數據后,通過改變電機驅動板的輸入PWM波占空比,進而改變電機驅動板的輸出電壓,調整軸流風機風量,最終將乒乓球吹浮并穩定于設定高度值處。PID參數、浮球位置設定值的設置可在上位機中進行,并且通過上位機監視界面,還可以方便地觀察乒乓球位置實時變化情況。
小球懸浮實驗裝置硬件部分由攝像頭、PC機、Arduino微機、軸流風機、位置控制對象等組成。根據Arduino Mega 2560、USBTOTTL模塊、軸流風機、4~24V直流電壓源、自鎖開關等模塊的工作原理和使用方法,通過查找原理圖確定引腳的功能和連接方式,利用畫圖軟件繪制了硬件整體接線圖如圖1所示。

圖1 硬件整體接線圖
系統控制單元。該系統采用基于8位ATmega 2560芯片的Arduino Mega 2560單片機。該單片機片內資源豐富、編程環境搭建快速、編程簡單快速、源碼開放,包含PWM接口、UART接口,時鐘、定時器等資源,負責接收PC數據和風機PWM脈寬調制。
串口通信[3]模塊。由于單片機的串口通訊采用TTL標準,因此本裝置采用USB TO TTL模塊實現上位機和單片機的通訊。本裝置串口波特率設置為115200bit/s,從而使系統整體具有較高的響應速度。
軸流風機,具有安裝簡單、成本低廉、功耗低、散熱快、噪音低、節能環保等優點。San Ace 40軸流風機額定電壓為12V,使用范圍在8~13.2V之間,額定電流為 1.1A,最大風量在為0.85m3/min。運用此風機,系統的超調量較小,調節時間較短,能夠快速到達穩態,并且系統達到穩態后,穩態誤差能夠保持在一個較小的范圍內。
由單目相機為主要元件組成的單目視覺高度測量系統,通過小球在相機圖像視野中4的位置,采用比例映射法測量小球的高度信息。小球高度測量示意圖如圖2所示。

圖2 小球高度測量示意圖
玻璃導管標定零點到標定最高點之間的距離為H,用單目攝像頭將其投射到相機成像原件CCD靶面后,其在垂直方向所占像素點個數為N。小球每到達一個高度,在CCD靶面中都對應著一個像素塊,像素塊的幾何中心距離圖像底部的像素個數為n。因此小球高度h可以通過下式計算:

式中:N、H都是常量,其中N可以通過設置感興趣區域更改,這里設置為320,H可以通過測量直接獲得,這里為83cm。因此可以計算出H與N的比值k為0.26cm,可將(1)式簡化為:

至此已經完成了對坐標世界坐標的建立,接下來需要通過OpenCV計算機視覺庫對現場采集的圖像進行處理。在數字圖像處理中常用色彩模型是RGB模型和HSV模型,HSV模型更符合人描述和解釋顏色的方式,因此本文在HSV顏色空間模型下進行顏色識別。
通過攝像頭采集的圖像在OpenCV計算機視覺庫[4]中默認格式為BGR格式,因此需要將圖片從BGR格式轉化為HSV格式,再對圖像進行二值化處理,根據小球HSV值,將閾值范圍內的像素點設置為1,閾值范圍外的像素點設置為0。對圖像進行二值化處理后,通過區域生長算法[5]獲得白色連通區域的面積大小,通過對比選擇出最大的連通區域,即是二值化處理后的小球圖形,其程序流程圖如圖3所示。

圖3 程序流程圖
在圖像處理過程中會產生一些干擾[6],可以通過區域生長算法獲得干擾區域大小,若小于設定值則視為噪聲。區域生長算法先對每個需要分割的區域找到一個種子像素作為生長的起點,然后將種子像素周圍領域中與種子像素具有相似性質的像素合并到種子像素所在的區域中,將這些新像素當做新的種子重復上面的過程。直到再沒有滿足條件的像素可被合并進來,生長停止。圖像經過區域生長后,可以劃分為3個部分,分別是噪音、小球、背景,其中噪音占73個像素,小于設定值,被過濾,小球占293個像素,如圖4所示。

圖4 圖像消除干擾效果
本次設計中,下位機需要具有開關狀態檢測、串口讀寫、PWM脈寬調制這三個功能,并且三個功能需要互不影響、協同工作,其具體流程為:下位機對硬件進行初始化,初始化成功后,I/O口對軸流風機開關狀態進行檢測,若開關狀態引腳發生改變,則會通過串口發送開關狀態改變信號給上位機,之后通過串口函數對串口輸入緩沖區進行檢測,若在串口緩沖區有數據進入,程序會將串口數據存入寄存器,當計數器的計數值與寄存器中的值匹配后,計數器會在下一個時鐘周期清零計時器,重新計數。從而達到改變輸出PWM波的占空比的目的。下位機程序流程圖如圖5所示。

圖5 下位機程序流程圖
為了更好地實現人機交互,本文設計了基于Qt[7]框架的懸浮小球裝置人機交互軟件,該軟件實現了浮球位置的監控、繪制、數據保存、HSV閾值[8]調節、小球高度設定等功能。其中,PID參數、HSV閾值數據、曲線數據都將存入SQLite數據庫中,并且曲線圖片可以通過點擊“保存圖片”按鈕存入本地,如圖6所示。

圖6 人機界面
在人機交互界面中能夠進行較為人性化的操作,操作者只需要在界面中調節參數就能夠實現人與軟件之間的信息交互,達到對系統的監視和控制的目的。
在上位機將小球高度值設定為41.6cm和31.2cm,分 別 設 置PID參 數 為P=1.5,I=0.04,D=30和P=3,I=0.04,D=30,進行位置控制實驗。
系統的計算結果平均誤差小于0.05cm,最大誤差不超過0.6cm,實驗結果表明:小球懸浮實驗裝置總體具有較好的穩定性,滿足控制要求。
在實驗中小球的高度控制會受到系統本身以及外界干擾的影響,因此需要對小球的穩定性進行分析。當小球進入穩態后,由于受到不可控的干擾影響,小球高度會產生微小的波動。每次實驗都將小球設定在不同的高度,當小球進入穩態后對平均誤差和最大誤差進行分析,計算方法如下:

式中:avee是小球進入穩態后的平均誤差;maxe是小球進入穩態后的最大誤差;a是小球進入穩態前所采樣點的個數;in是第i個采樣點所對應的小球高度值,setn小球設定的高度位置。
多次實驗后,在不同的設定高度下,小球達到穩態后所產生的位置誤差,如表1所示。

表1 位置誤差 單位cm
實驗結果表明:小球懸浮實驗裝置總體具有較好的穩定性,在設定高度不同的情況下,其穩定性也不同。在高度設定在160cm時穩定性最好,平均誤差只有0.03mm,最大誤差為0.52cm。
本文同樣對系統的跟隨性和快速性進行了測試,分別把小球設定值設置為余弦和方波曲線,并繪制出跟隨曲線。
通過測試結果表明,本文設計的小球懸浮裝置具有很好的跟隨性,能夠快速、準確地跟隨位置設定曲線。
本文依據小球懸浮裝置控制要求,利用Qt框架、OpenCV計算機視覺庫、Arduino微機等,設計了小球懸浮控制系統。該系統搭建簡單、運行穩定、數據存儲方便、操作簡單、人機交互界面簡潔明了,可以實現階躍、余弦、方波曲線的跟隨實驗,能夠滿足PID實驗課程的需求。