朱建軍,孫佳東,謝俊杰,李天順,姜衍超
(1.吉林化工學(xué)院,吉林吉林,132022;2.燕山大學(xué),河北秦皇島,066004)
PID[1]控制理論因其廣泛的工程應(yīng)用性,在高校的實(shí)驗(yàn)課程中占有較大比重,但是目前常見的PID控制實(shí)驗(yàn)裝置多為溫度、液位調(diào)節(jié)系統(tǒng),這類平臺(tái)普遍存在對實(shí)訓(xùn)環(huán)境要求較高、參數(shù)設(shè)定困難、調(diào)節(jié)周期長等問題。該類實(shí)驗(yàn)設(shè)備大都采購于教學(xué)儀器廠家,成本較高,維修升級(jí)麻煩。本文針對自動(dòng)控制原理實(shí)驗(yàn)課程,研制了小球懸浮實(shí)驗(yàn)裝置[2]。該裝置操作簡單且便于維護(hù),完全可以滿足自動(dòng)化專業(yè)學(xué)生掌握PID原理、編程與應(yīng)用的需要。
本系統(tǒng)硬件系統(tǒng)主要由攝像頭、Arduino單片機(jī)、串口模塊、PWM調(diào)節(jié)器、玻璃筒、乒乓球、軸流風(fēng)機(jī)等裝置組成,并在此基礎(chǔ)上設(shè)計(jì)軟件程序及上位機(jī)界面。乒乓球放置在下方安裝有軸流風(fēng)機(jī)的豎直玻璃筒內(nèi),風(fēng)機(jī)可吹動(dòng)乒乓球在筒內(nèi)沿豎直方向運(yùn)動(dòng)。上位機(jī)與單目攝像頭連接,通過OpenCV進(jìn)行顏色識(shí)別,可測得乒乓球在筒內(nèi)的位置信息,上位機(jī)通過PID算法處理位置信息,通過串口將輸出數(shù)據(jù)傳送給下位機(jī),下位機(jī)接收到數(shù)據(jù)后,通過改變電機(jī)驅(qū)動(dòng)板的輸入PWM波占空比,進(jìn)而改變電機(jī)驅(qū)動(dòng)板的輸出電壓,調(diào)整軸流風(fēng)機(jī)風(fēng)量,最終將乒乓球吹浮并穩(wěn)定于設(shè)定高度值處。PID參數(shù)、浮球位置設(shè)定值的設(shè)置可在上位機(jī)中進(jìn)行,并且通過上位機(jī)監(jiān)視界面,還可以方便地觀察乒乓球位置實(shí)時(shí)變化情況。
小球懸浮實(shí)驗(yàn)裝置硬件部分由攝像頭、PC機(jī)、Arduino微機(jī)、軸流風(fēng)機(jī)、位置控制對象等組成。根據(jù)Arduino Mega 2560、USBTOTTL模塊、軸流風(fēng)機(jī)、4~24V直流電壓源、自鎖開關(guān)等模塊的工作原理和使用方法,通過查找原理圖確定引腳的功能和連接方式,利用畫圖軟件繪制了硬件整體接線圖如圖1所示。
圖1 硬件整體接線圖
系統(tǒng)控制單元。該系統(tǒng)采用基于8位ATmega 2560芯片的Arduino Mega 2560單片機(jī)。該單片機(jī)片內(nèi)資源豐富、編程環(huán)境搭建快速、編程簡單快速、源碼開放,包含PWM接口、UART接口,時(shí)鐘、定時(shí)器等資源,負(fù)責(zé)接收PC數(shù)據(jù)和風(fēng)機(jī)PWM脈寬調(diào)制。
串口通信[3]模塊。由于單片機(jī)的串口通訊采用TTL標(biāo)準(zhǔn),因此本裝置采用USB TO TTL模塊實(shí)現(xiàn)上位機(jī)和單片機(jī)的通訊。本裝置串口波特率設(shè)置為115200bit/s,從而使系統(tǒng)整體具有較高的響應(yīng)速度。
軸流風(fēng)機(jī),具有安裝簡單、成本低廉、功耗低、散熱快、噪音低、節(jié)能環(huán)保等優(yōu)點(diǎn)。San Ace 40軸流風(fēng)機(jī)額定電壓為12V,使用范圍在8~13.2V之間,額定電流為 1.1A,最大風(fēng)量在為0.85m3/min。運(yùn)用此風(fēng)機(jī),系統(tǒng)的超調(diào)量較小,調(diào)節(jié)時(shí)間較短,能夠快速到達(dá)穩(wěn)態(tài),并且系統(tǒng)達(dá)到穩(wěn)態(tài)后,穩(wěn)態(tài)誤差能夠保持在一個(gè)較小的范圍內(nèi)。
由單目相機(jī)為主要元件組成的單目視覺高度測量系統(tǒng),通過小球在相機(jī)圖像視野中4的位置,采用比例映射法測量小球的高度信息。小球高度測量示意圖如圖2所示。
圖2 小球高度測量示意圖
玻璃導(dǎo)管標(biāo)定零點(diǎn)到標(biāo)定最高點(diǎn)之間的距離為H,用單目攝像頭將其投射到相機(jī)成像原件CCD靶面后,其在垂直方向所占像素點(diǎn)個(gè)數(shù)為N。小球每到達(dá)一個(gè)高度,在CCD靶面中都對應(yīng)著一個(gè)像素塊,像素塊的幾何中心距離圖像底部的像素個(gè)數(shù)為n。因此小球高度h可以通過下式計(jì)算:
式中:N、H都是常量,其中N可以通過設(shè)置感興趣區(qū)域更改,這里設(shè)置為320,H可以通過測量直接獲得,這里為83cm。因此可以計(jì)算出H與N的比值k為0.26cm,可將(1)式簡化為:
至此已經(jīng)完成了對坐標(biāo)世界坐標(biāo)的建立,接下來需要通過OpenCV計(jì)算機(jī)視覺庫對現(xiàn)場采集的圖像進(jìn)行處理。在數(shù)字圖像處理中常用色彩模型是RGB模型和HSV模型,HSV模型更符合人描述和解釋顏色的方式,因此本文在HSV顏色空間模型下進(jìn)行顏色識(shí)別。
通過攝像頭采集的圖像在OpenCV計(jì)算機(jī)視覺庫[4]中默認(rèn)格式為BGR格式,因此需要將圖片從BGR格式轉(zhuǎn)化為HSV格式,再對圖像進(jìn)行二值化處理,根據(jù)小球HSV值,將閾值范圍內(nèi)的像素點(diǎn)設(shè)置為1,閾值范圍外的像素點(diǎn)設(shè)置為0。對圖像進(jìn)行二值化處理后,通過區(qū)域生長算法[5]獲得白色連通區(qū)域的面積大小,通過對比選擇出最大的連通區(qū)域,即是二值化處理后的小球圖形,其程序流程圖如圖3所示。
圖3 程序流程圖
在圖像處理過程中會(huì)產(chǎn)生一些干擾[6],可以通過區(qū)域生長算法獲得干擾區(qū)域大小,若小于設(shè)定值則視為噪聲。區(qū)域生長算法先對每個(gè)需要分割的區(qū)域找到一個(gè)種子像素作為生長的起點(diǎn),然后將種子像素周圍領(lǐng)域中與種子像素具有相似性質(zhì)的像素合并到種子像素所在的區(qū)域中,將這些新像素當(dāng)做新的種子重復(fù)上面的過程。直到再?zèng)]有滿足條件的像素可被合并進(jìn)來,生長停止。圖像經(jīng)過區(qū)域生長后,可以劃分為3個(gè)部分,分別是噪音、小球、背景,其中噪音占73個(gè)像素,小于設(shè)定值,被過濾,小球占293個(gè)像素,如圖4所示。
圖4 圖像消除干擾效果
本次設(shè)計(jì)中,下位機(jī)需要具有開關(guān)狀態(tài)檢測、串口讀寫、PWM脈寬調(diào)制這三個(gè)功能,并且三個(gè)功能需要互不影響、協(xié)同工作,其具體流程為:下位機(jī)對硬件進(jìn)行初始化,初始化成功后,I/O口對軸流風(fēng)機(jī)開關(guān)狀態(tài)進(jìn)行檢測,若開關(guān)狀態(tài)引腳發(fā)生改變,則會(huì)通過串口發(fā)送開關(guān)狀態(tài)改變信號(hào)給上位機(jī),之后通過串口函數(shù)對串口輸入緩沖區(qū)進(jìn)行檢測,若在串口緩沖區(qū)有數(shù)據(jù)進(jìn)入,程序會(huì)將串口數(shù)據(jù)存入寄存器,當(dāng)計(jì)數(shù)器的計(jì)數(shù)值與寄存器中的值匹配后,計(jì)數(shù)器會(huì)在下一個(gè)時(shí)鐘周期清零計(jì)時(shí)器,重新計(jì)數(shù)。從而達(dá)到改變輸出PWM波的占空比的目的。下位機(jī)程序流程圖如圖5所示。
圖5 下位機(jī)程序流程圖
為了更好地實(shí)現(xiàn)人機(jī)交互,本文設(shè)計(jì)了基于Qt[7]框架的懸浮小球裝置人機(jī)交互軟件,該軟件實(shí)現(xiàn)了浮球位置的監(jiān)控、繪制、數(shù)據(jù)保存、HSV閾值[8]調(diào)節(jié)、小球高度設(shè)定等功能。其中,PID參數(shù)、HSV閾值數(shù)據(jù)、曲線數(shù)據(jù)都將存入SQLite數(shù)據(jù)庫中,并且曲線圖片可以通過點(diǎn)擊“保存圖片”按鈕存入本地,如圖6所示。
圖6 人機(jī)界面
在人機(jī)交互界面中能夠進(jìn)行較為人性化的操作,操作者只需要在界面中調(diào)節(jié)參數(shù)就能夠?qū)崿F(xiàn)人與軟件之間的信息交互,達(dá)到對系統(tǒng)的監(jiān)視和控制的目的。
在上位機(jī)將小球高度值設(shè)定為41.6cm和31.2cm,分 別 設(shè) 置PID參 數(shù) 為P=1.5,I=0.04,D=30和P=3,I=0.04,D=30,進(jìn)行位置控制實(shí)驗(yàn)。
系統(tǒng)的計(jì)算結(jié)果平均誤差小于0.05cm,最大誤差不超過0.6cm,實(shí)驗(yàn)結(jié)果表明:小球懸浮實(shí)驗(yàn)裝置總體具有較好的穩(wěn)定性,滿足控制要求。
在實(shí)驗(yàn)中小球的高度控制會(huì)受到系統(tǒng)本身以及外界干擾的影響,因此需要對小球的穩(wěn)定性進(jìn)行分析。當(dāng)小球進(jìn)入穩(wěn)態(tài)后,由于受到不可控的干擾影響,小球高度會(huì)產(chǎn)生微小的波動(dòng)。每次實(shí)驗(yàn)都將小球設(shè)定在不同的高度,當(dāng)小球進(jìn)入穩(wěn)態(tài)后對平均誤差和最大誤差進(jìn)行分析,計(jì)算方法如下:
式中:avee是小球進(jìn)入穩(wěn)態(tài)后的平均誤差;maxe是小球進(jìn)入穩(wěn)態(tài)后的最大誤差;a是小球進(jìn)入穩(wěn)態(tài)前所采樣點(diǎn)的個(gè)數(shù);in是第i個(gè)采樣點(diǎn)所對應(yīng)的小球高度值,setn小球設(shè)定的高度位置。
多次實(shí)驗(yàn)后,在不同的設(shè)定高度下,小球達(dá)到穩(wěn)態(tài)后所產(chǎn)生的位置誤差,如表1所示。
表1 位置誤差 單位cm
實(shí)驗(yàn)結(jié)果表明:小球懸浮實(shí)驗(yàn)裝置總體具有較好的穩(wěn)定性,在設(shè)定高度不同的情況下,其穩(wěn)定性也不同。在高度設(shè)定在160cm時(shí)穩(wěn)定性最好,平均誤差只有0.03mm,最大誤差為0.52cm。
本文同樣對系統(tǒng)的跟隨性和快速性進(jìn)行了測試,分別把小球設(shè)定值設(shè)置為余弦和方波曲線,并繪制出跟隨曲線。
通過測試結(jié)果表明,本文設(shè)計(jì)的小球懸浮裝置具有很好的跟隨性,能夠快速、準(zhǔn)確地跟隨位置設(shè)定曲線。
本文依據(jù)小球懸浮裝置控制要求,利用Qt框架、OpenCV計(jì)算機(jī)視覺庫、Arduino微機(jī)等,設(shè)計(jì)了小球懸浮控制系統(tǒng)。該系統(tǒng)搭建簡單、運(yùn)行穩(wěn)定、數(shù)據(jù)存儲(chǔ)方便、操作簡單、人機(jī)交互界面簡潔明了,可以實(shí)現(xiàn)階躍、余弦、方波曲線的跟隨實(shí)驗(yàn),能夠滿足PID實(shí)驗(yàn)課程的需求。