蘇 楊,劉卿卿
(1. 中國民航大學(xué) 電子信息與自動化學(xué)院,天津 300300;2. 南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京 210044;3. 南京信息工程大學(xué) 大氣環(huán)境與裝備技術(shù)協(xié)同創(chuàng)新中心,江蘇 南京 210044)
目前,在儀器儀表領(lǐng)域,雙軸跟蹤器[1]和光譜儀[2]等儀器已為大家所熟知,應(yīng)用也越來越廣泛。一方面,在太陽跟蹤器領(lǐng)域,為了提高測量精度,人們多數(shù)采用傳感器跟蹤和視日軌跡跟蹤方式結(jié)合的雙軸跟蹤法。此種方法雖然能夠?qū)崿F(xiàn)全天候高精度太陽自動跟蹤,但在實際應(yīng)用中,這種持續(xù)的二維調(diào)節(jié)功耗大,造成資源浪費,使電機壽命縮短,不利于節(jié)能環(huán)保的實現(xiàn)。另一方面,在包括光譜儀在內(nèi)的一些避免直射跟蹤的測量儀器使用過程中,由于需要不斷調(diào)整儀器角度以尋求最佳測量條件,需要人工進行實時調(diào)節(jié),消耗人力。
針對直射跟蹤情況下能耗浪費的問題和避免直射跟蹤情況下需要時刻調(diào)整方位的操作不便問題,本系統(tǒng)將傳感器跟蹤與太陽運行軌跡跟蹤方式相結(jié)合,設(shè)置了一維與二維的可切換跟蹤方式,既實現(xiàn)了一種儀器將太陽跟蹤與避免直射兩種用途的結(jié)合,又達到節(jié)約人力物力的目的。本系統(tǒng)利用攝像頭作為光電傳感器來判斷天氣狀況。此外,通過STM32結(jié)合LABVIEW的設(shè)計,利用上位機進行更便捷準(zhǔn)確的太陽質(zhì)心提取,解決了傳統(tǒng)方式下太陽跟蹤過程中跟蹤精度不夠高的問題。
圖3 電機控制信號連接圖
本系統(tǒng)硬件部分由微控制器模塊、矩陣鍵盤、TFT彩屏、RTC時鐘、步進電機、攝像頭模塊和上位機組成,太陽跟蹤系統(tǒng)的系統(tǒng)框圖如圖1所示。
圖1 太陽跟蹤系統(tǒng)框圖
跟蹤方式包括兩種。其一是傳感器跟蹤方式[3]。這種方式主要由攝像頭和機械驅(qū)動部分組成,攝像頭采用OV2640模塊,機械驅(qū)動由步進電機完成,可進行對一維或二維轉(zhuǎn)臺的操作。上位機部分采用LABVIEW和MATLAB混合編程尋找太陽圖像質(zhì)心,從而確定傳感器與太陽直射方位的偏離程度。在這種方式里,太陽位置的變化引起攝像頭所拍圖像質(zhì)心的改變,這一信號被上位機所識別,上位機及時響應(yīng)這一變化,并根據(jù)算法計算的結(jié)果驅(qū)動電機改變其位置,從而調(diào)整儀器的方向,使攝像頭所拍圖像質(zhì)心重新回歸鏡頭中心點。其二是視日軌跡跟蹤方式[4]。這種跟蹤方式利用到了天文學(xué)上的一種太陽高度角和方位角的計算方法,即只要確定了觀測地點的相關(guān)數(shù)據(jù),就可以求解出觀測時刻該點的太陽高度角和方位角,從而驅(qū)動電機運行。
這兩種方式可根據(jù)攝像頭模塊采集到的光強進行必要的切換。陰天時,太陽光強較弱,攝像頭很難準(zhǔn)確獲取太陽質(zhì)心位置,系統(tǒng)必須自行進入到太陽運行軌跡跟蹤方式。晴天時,太陽光強較強,攝像頭模塊能很好地響應(yīng)太陽光位置的變化,系統(tǒng)會自行切換到傳感器跟蹤方式,以便提高太陽跟蹤的準(zhǔn)確度。
在跟蹤過程中可進行轉(zhuǎn)臺維數(shù)的變換。由電機操控一維轉(zhuǎn)臺或二維轉(zhuǎn)臺,且攝像頭和儀器之間的夾角可控,即可通過對夾角的控制實現(xiàn)儀器直射或避免直射的不同用途。在要求實時對正太陽的情況下,攝像頭與儀器夾角為0°,保持水平,并以二維轉(zhuǎn)臺控制儀器方位移動。在要求與太陽保持水平方向某一角度的情況下,調(diào)節(jié)攝像頭與儀器之間夾角,以一維轉(zhuǎn)臺控制儀器的方位,從而實現(xiàn)儀器與太陽光形成一個固定可調(diào)的投影角度,使操作簡便靈活。
本系統(tǒng)采用封裝好的OV2640攝像頭模塊[5]進行光電采集和光強判斷,電路簡單,感光靈敏,其電路模塊如圖2所示。OV2640攝像頭模塊將攝像頭和模數(shù)轉(zhuǎn)換等必要電路結(jié)合在一起,可輸出YUV、RGB和YCbCr格式圖像。此外,OV2640適用于低照度環(huán)境,其低電壓特性又適合嵌入式的開發(fā)。
圖2 OV2640模塊原理圖
本設(shè)計對步進電機進行操控。為使步進電機運行平穩(wěn)精細,通常還結(jié)合細分器的使用。本設(shè)計采用57步進電機與細分驅(qū)動芯片TA8453相結(jié)合,實現(xiàn)跟蹤的精確化。STM32和該芯片相連接[6],實現(xiàn)PWM波形輸出。兩個開關(guān)K1和K2分別用于控制微控制器的使能和步進電機的轉(zhuǎn)動方向,同時它也是芯片的時鐘輸入。電機的控制信號連接圖如圖3所示。
軟件設(shè)計由系統(tǒng)初始化、主程序設(shè)計和中斷程序設(shè)計這幾部分組成。主程序?qū)崟r調(diào)整跟蹤器位置,并且不斷檢測是否有中斷產(chǎn)生[7]。系統(tǒng)開始運行時,經(jīng)過初始化,首先將電機復(fù)位在一個特定位置,然后可根據(jù)人為需求,根據(jù)輸入命令確定采用一維或二維跟蹤方式。此外,系統(tǒng)可自動根據(jù)天氣狀況確定跟蹤模式,從而選擇單純的視日軌跡跟蹤模式或是傳感器跟蹤模式,也可以使兩種模式相結(jié)合使用。其中,傳感器跟蹤模式下,需要結(jié)合上位機部分進行處理。采集到的圖像經(jīng)過串口傳輸至上位機,當(dāng)完整的一副圖片傳遞成功后,指示燈熄滅,從而進行圖像處理。經(jīng)MATLAB計算出太陽質(zhì)心坐標(biāo)位置。該位置坐標(biāo)發(fā)送給單片機,單片機再通過對位置坐標(biāo)的計算處理。主程序流程圖如圖4所示。
圖4 主程序流程圖
上位機部分,程序開始后首先獲得采集到的圖像,經(jīng)判斷,在圖像傳輸完畢后,進行圖像的讀取和太陽質(zhì)心位置的計算。最后程序?qū)⑦@個計算所得位置坐標(biāo)輸出并結(jié)束程序。上位機部分程序流程如圖5所示。
圖5 上位機部分程序流程圖
在亮度檢測部分,本系統(tǒng)通過對攝像頭采集到的圖像進行光強提取來判斷天氣陰晴狀況。單片機程序讀取攝像頭所拍圖像每個像素點的值,再進行平均值和標(biāo)準(zhǔn)差的計算。將平均值與經(jīng)驗所確定閾值進行比較,再結(jié)合標(biāo)準(zhǔn)差來排除如夜晚晴空等特殊天氣的干擾,可以增強判斷的準(zhǔn)確性。陰晴判斷的結(jié)果是可以確定采取什么樣的跟蹤方式。首先通過視日軌跡法粗調(diào)儀器,當(dāng)攝像頭模塊采集到的光線強度平均值高于設(shè)定閾值時判斷為晴天,進入傳感器跟蹤方式。當(dāng)光線強度低于設(shè)定值時判斷為陰天,關(guān)閉傳感器跟蹤方式,僅通過太陽運行軌跡跟蹤方式來進行跟蹤。
虛擬儀器技術(shù)是以計算機軟件和硬件共同作為開發(fā)平臺,以軟件為主,硬件為輔,來實現(xiàn)一些儀器功能。本設(shè)計采用目前虛擬儀器領(lǐng)域中廣泛應(yīng)用的LABVIEW來進行編程設(shè)計,具有直觀、方便、靈活等特點。
LABVIEW中封裝好了串口通信節(jié)點,在進行串口通信時,首先要對串口進行初始化并配置好串口。本設(shè)計采用VISA配置串口節(jié)點來完成,使用該節(jié)點可以操作串口的VISA資源名稱、比特率、數(shù)據(jù)和校驗位、超時時間以及終止符等參數(shù)。通過VISA的使用實現(xiàn)了對串口的便捷操作和控制。
本設(shè)計利用對MATLAB的調(diào)用來實現(xiàn)對太陽質(zhì)心的提取[8],質(zhì)心處理流程包括控制攝像頭的圖像采集、圖像灰度轉(zhuǎn)化、圖像處理和數(shù)據(jù)顯示幾個部分。圖6所示為圖像處理流程圖。
圖6 圖像處理流程
程序?qū)D像進行二值化處理[9]。二值化要根據(jù)閾值來確定圖像中哪些是目標(biāo)哪些是背景。閾值的選擇通常有三種方法,包括全局閾值、自適應(yīng)閾值和最佳閾值三種方式。本設(shè)計中為了便于計算,方便系統(tǒng)運行,采用全局閾值法,通過設(shè)定閾值,將采集到的圖像劃分為目標(biāo)和背景。此外,程序還利用質(zhì)心法對太陽進行位置標(biāo)定。本系統(tǒng)針對二值圖像采用質(zhì)心法,該方法操作更加便捷,且效率較高。經(jīng)過處理,系統(tǒng)可以計算出圖像中質(zhì)心點的坐標(biāo)信息。
LABVIEW在界面開發(fā)、數(shù)據(jù)保存等方面有較強的優(yōu)勢,但在計算、圖像處理等領(lǐng)域不具備MATLAB的優(yōu)越性。因此將二者結(jié)合起來完成對太陽的一系列圖像采集、處理、保存等功能,揚長避短,能夠進一步優(yōu)化太陽跟蹤系統(tǒng)。LABVIEW和MATLAB的混合編程方法很多,本設(shè)計采用了直接調(diào)用LABVIEW提供的MATLAB Script節(jié)點[10],實現(xiàn)二者的無縫銜接。
MATLAB Script節(jié)點可以先在MATLAB中進行調(diào)試,調(diào)試成功后再將其導(dǎo)入到MATLAB Script節(jié)點中。MATLAB Script節(jié)點調(diào)用過程中應(yīng)注意數(shù)據(jù)類型的匹配。由于本設(shè)計涉及的算法較為簡潔,使用調(diào)用MATLAB Script節(jié)點的方法,簡單易行。MATLAB對串口獲取的圖像進行讀取和處理,處理后的圖像經(jīng)計算得到質(zhì)心坐標(biāo)值,從而控制步進電機移動相應(yīng)的距離和方向。
STM32能夠正常驅(qū)動電機運轉(zhuǎn),并通過串口將攝像頭OV2640采集到的圖像實時發(fā)送至上位機。LABVIEW成功接收到圖像,再通過調(diào)用MATLAB節(jié)點進行圖像處理,尋找到質(zhì)心并經(jīng)過串口將其坐標(biāo)發(fā)送到單片機進行進一步的電機驅(qū)動。圖7為處理前圖像,圖8為LABVIEW前面板顯示的處理后的結(jié)果,中心一點為所標(biāo)記質(zhì)心。
圖7 處理前圖像
圖8 圖像處理結(jié)果
本系統(tǒng)使用STM32和LABVIEW作為核心,通過串口通信方式完成單片機與上位機之間的數(shù)據(jù)傳遞,實現(xiàn)了不同天氣情況下對太陽的直射跟蹤或避免直射。本系統(tǒng)經(jīng)實際操作驗證,系統(tǒng)運行平穩(wěn),處理結(jié)果正確,可以應(yīng)用于如太陽能跟蹤控制系統(tǒng)或光譜儀等測量儀器中。
[1] 王海軍. 基于陰晴判斷的混合雙軸太陽跟蹤控制系統(tǒng)[D]. 武漢:武漢理工大學(xué), 2012.
[2] 劉康. 微型光譜儀關(guān)鍵技術(shù)及其應(yīng)用研究[D]. 杭州: 浙江大學(xué), 2013.
[3] QIN X S, CHEN X R, NIE D L. Dual-axis solar tracking system based on STM32[J]. Information Technology, 2013,37(4):113-115.
[4] 曾利霞. 基于視日運動軌跡的雙軸太陽跟蹤系統(tǒng)的研究[D]. 武漢:湖北工業(yè)大學(xué), 2012.
[5] WANG J, LIANG Z, ZHENG W, et al. Embedded image acquisition system design based on STM32 and OV2640[J]. Microcontrollers & Embedded Systems, 2014,14(9):46-48.
[6] 庫少平, 劉晶. 基于STM32F10x和MDK的步進電機控制系統(tǒng)設(shè)計[J]. 武漢理工大學(xué)學(xué)報, 2009, 31(3): 107-110.
[7] 凌好, 劉榮忠, 郭銳, 等. 基于STM32的太陽自動跟蹤控制系統(tǒng)的設(shè)計[J]. 計算機測量與控制, 2012, 20(2): 383-385.
[8] 尤金正, 鄒麗新, 周同, 等. 太陽圖像中光斑質(zhì)心位置的檢測[J]. 現(xiàn)代電子技術(shù), 2010, 33(12): 191-200.
[9] 楊超華. 基于LABVIEW和MATLAB混合編程技術(shù)的視頻運動目標(biāo)檢測與跟蹤方法研究[D]. 南京:南京理工大學(xué),2013.
[10] LI N, ZHANG Y P, ZHU L J. Using MATLAB Script in LabVIEW[J]. Instrument Standardization & Metrology, 2003(5):17-19.