【導(dǎo)讀】本文采用圖像傳感器代替了光敏電阻檢測太陽位置的變化,可以準(zhǔn)確、快速地獲得太陽位置信息,從而提高了跟蹤精度。同時其結(jié)構(gòu)簡化,成本降低。
系統(tǒng)總體設(shè)計
該系統(tǒng)主要由平面鏡跟蹤裝置、控制和驅(qū)動電路、方位限位電路、CMOS圖像傳感器(附巴德膜濾波片)等部分組成。系統(tǒng)總體設(shè)計框圖如圖1所示。跟蹤裝置實物圖如圖2所示,圖像傳感器固定在平面鏡中心。圖像傳感器產(chǎn)品主要分為CCD,CMOS以及CIS傳感器三種。目前CMOS型不僅價格低廉,而且已經(jīng)實現(xiàn)數(shù)字化輸出,軟件可編程控制,大大降低系統(tǒng)設(shè)計的難度,提高系統(tǒng)設(shè)計的靈活性、抗干擾性和穩(wěn)定性。
圖1:系統(tǒng)總體框圖
圖2:太陽自動跟蹤裝置實物圖
CMOS圖像傳感器滿足系統(tǒng)設(shè)計要求。跟蹤控制器采用羅技公司的QuickCam系列網(wǎng)絡(luò)攝像頭,具有功耗小、成本低、單一電源驅(qū)動、易于實現(xiàn)片上系統(tǒng)集成等特點。其開窗特征可以根據(jù)實際需要設(shè)置有效圖像數(shù)據(jù)窗口的大小,從而避免了對無效數(shù)據(jù)的采集,減小存儲空間。
由于太陽光十分強烈,因此在圖像采集時,需要給攝像頭加上巴德膜濾波片。實驗表明加兩層濾波片后,所得到的圖像效果較佳。
系統(tǒng)工作過程為:啟動時,上位機VC++調(diào)用視日運動規(guī)律中的sun函數(shù),獲取太陽的高度角與方位角,并轉(zhuǎn)化為俯仰和水平步進(jìn)電機的運行步數(shù),通過RS 485總線與單片機通信,驅(qū)動跟蹤裝置運轉(zhuǎn),確保太陽光斑裝入CMOS圖像傳感器視角內(nèi)。
通過MCC實現(xiàn)VC++與Matlab聯(lián)合編程,實時控制圖像傳感器采集太陽光斑圖像。VC++程序設(shè)置為每隔5 min自動調(diào)用傳感器拍一次照,傳回的圖像經(jīng)Matlab處理,計算出太陽光斑質(zhì)心坐標(biāo)與圖像中心坐標(biāo)的偏差,轉(zhuǎn)化為水平和俯仰電機需調(diào)整的步數(shù),返回給VC++,再次送給單片機,驅(qū)動步進(jìn)電機動作,進(jìn)而細(xì)微調(diào)整平面鏡跟蹤裝置,使太陽光斑始終在圖像中心位置。
當(dāng)厚云層擋住太陽時,或者由于其他原因太陽光斑無法出現(xiàn)在傳感器視角內(nèi),則VC++調(diào)用時鐘跟蹤算法,繼續(xù)跟蹤,直到云層過去后,再重新使用圖像傳感器跟蹤。
圖像傳感器實時跟蹤太陽的設(shè)計
圖像傳感器的自動跟蹤原理
VC++設(shè)置為每隔5 min自動調(diào)用傳感器拍一次照,傳回的圖像經(jīng)Matlab處理,計算出太陽質(zhì)心坐標(biāo)與圖像中心坐標(biāo)的偏差,并轉(zhuǎn)化為水平和俯仰電機需調(diào)整的步數(shù),再次送給單片機驅(qū)動步進(jìn)電機,進(jìn)而細(xì)微調(diào)整平面鏡跟蹤裝置,實現(xiàn)對太陽連續(xù)自動跟蹤。
FYP定義為俯仰步進(jìn)電機應(yīng)運行步數(shù),F(xiàn)WP表示方位步進(jìn)電機應(yīng)運行步數(shù)。方位步進(jìn)電機每動作一步實際為(1.8/100)°,俯仰步進(jìn)電機每動作一步實際為(1.8/52)°。當(dāng)系統(tǒng)實際運行時,光斑在圖像中心時設(shè)定坐標(biāo)為(160,120),向下移動出圖像FYP為50;向右移動出圖像FWP為160。若太陽光斑不在中心點時,如圖3所示,經(jīng)Matlab程序執(zhí)行結(jié)果為光斑圖像坐標(biāo)(115,117),光斑個數(shù)為1,對應(yīng)FYP為1,F(xiàn)WP為-46。
圖3:太陽光斑不在中心點的圖像
圖像處理過程中運用了最大類間方差法Otsu,是根據(jù)最小二乘原理推導(dǎo)出來的,它基于直方圖來選取閾值,其基本思路是將直方圖在某一閾值處分割成兩組,當(dāng)被分成的兩組的方差為最大時,得到閾值。方差是灰度分布均勻性一種量度,方差值越大說明構(gòu)成圖像的兩部分差別越大,當(dāng)部分目標(biāo)錯分為背景,或部分背景錯分為目標(biāo)都會導(dǎo)致兩部分差別變小,所以使類間方差最大的分割意味著錯分概率最小。Otsu算法具有簡單、分割速度快等優(yōu)點,對噪音和目標(biāo)大小十分敏感,對于信噪比較高的圖像具有很好的分割效果,被認(rèn)為閾值自動選取的最優(yōu)方法之一。
圖4為拍攝到太陽光斑存在干擾時的圖像,對比圖4(a)和圖4(b)可發(fā)現(xiàn)用Otsu法分割處理后,能有效消除圖像中細(xì)微干擾。圖4(c)由Otsu法處理后得到圖4(d),光斑圖像坐標(biāo)(160,120),光斑個數(shù)為2,對應(yīng)FYP和FWP為O。由此判斷拍攝的圖像存在明顯干擾,程序?qū)YP和FWP置為O,確保系統(tǒng)的可靠性。
圖4:跟蹤過程中存在干擾時的太陽光斑圖像
[page]
一般情況下使用圖像傳感器跟蹤,但當(dāng)陰天或出現(xiàn)厚云層時,太陽光斑無法出現(xiàn)在傳感器視角內(nèi),VC++立即調(diào)用時鐘算法,根據(jù)太陽在天空中每分鐘運動的角度,計算出跟蹤控制器5 min應(yīng)轉(zhuǎn)動的角度,從而確定出步進(jìn)電機的轉(zhuǎn)速,使得裝置根據(jù)太陽位置而相應(yīng)變動。
系統(tǒng)軟件設(shè)計
軟件的主要部分為PC機部分,PC機環(huán)境為Windows XP,使用軟件Microsoft Visual C++6.0和Matlab 7.0。啟動時VC++負(fù)責(zé)調(diào)用一次sun函數(shù),返回當(dāng)前時刻太陽的高度角和方位角,并轉(zhuǎn)化為FYP和FWP運行步數(shù)。通過調(diào)用Windows API函數(shù),實現(xiàn)上位機與單片機間數(shù)據(jù)的傳遞。通過MCC實現(xiàn)VC++與Matlab的聯(lián)合編程,控制攝像頭采集太陽光斑圖像,根據(jù)太陽光斑質(zhì)心坐標(biāo)與圖像中心坐標(biāo)的偏差轉(zhuǎn)化為FYP和FWP校正步數(shù)。
上位機可執(zhí)行程序控制界面如圖5所示,上位機控制平臺具有實現(xiàn)復(fù)位,太陽位置的跟蹤、手動校準(zhǔn)。其中“設(shè)置”按鈕,可進(jìn)行波特率、調(diào)整時間間隔等的設(shè)置。
圖5:上位機主控界面
實驗數(shù)據(jù)分析
實驗在蘇州大學(xué)現(xiàn)代光學(xué)所內(nèi)進(jìn)行,數(shù)據(jù)觀察時間為12月下旬至1月上旬。因數(shù)據(jù)量大,表1只列出2010年1月7日記錄的部分?jǐn)?shù)據(jù)。具體測試方法如下:
(1)參數(shù)設(shè)置。包括設(shè)置當(dāng)前時間、波特率、通信端口、圖像傳感器運行時間間隔等。
(2)運行VC++程序。上位機中VC++程序首先調(diào)用sun函數(shù),返回此時的太陽高度角和方位角,換算成俯仰和方位步進(jìn)電機所需的步數(shù)。只記錄下由Matlab生成txt文件中的需要校正的步數(shù)。
(3)系統(tǒng)自動校正完成后,Matlab再次寫txt文件,保存校正后太陽光斑的圖像坐標(biāo),以及光斑質(zhì)心坐標(biāo)與圖像中心坐標(biāo)的偏差。此時記錄。
(4)每隔5 min重復(fù)(2),(3)步驟。
圖6和圖7給出了太陽高度角和方位角的誤差曲線。由曲線看出,采用基于圖像傳感器的太陽自動跟蹤控制器后絕對誤差較小且保持相對穩(wěn)定。通過對實測數(shù)據(jù)的分析表明:在該系統(tǒng)中,高度角跟蹤絕對誤差小于0.12°,方位角跟蹤絕對誤差小于0.08°,采用圖像傳感器對太陽進(jìn)行跟蹤后,得到了很高的精度,且可靠性提高。
圖6:俯仰實際絕對誤差值曲線
圖7:方位誤差跟蹤曲線
結(jié)語
該跟蹤控制器可以連續(xù)跟蹤太陽的角度變化,更準(zhǔn)確實現(xiàn)對太陽運動的跟蹤。當(dāng)出現(xiàn)陰天或多云情況下,系統(tǒng)調(diào)用時鐘算法,使得裝置連續(xù)跟蹤。經(jīng)過實驗測試,各項指標(biāo)均達(dá)到了設(shè)計要求。
控制器采用低速處理器實現(xiàn)了對太陽光斑的采集及定位,可應(yīng)用于各種太陽能設(shè)備,提高太陽能的利用率。如果使用步進(jìn)電動機的微步距控制技術(shù),即用細(xì)分技術(shù)實現(xiàn)將步進(jìn)電動機一個整步均分為若干個更細(xì)的微步,可以使整個控制系統(tǒng)更加精準(zhǔn),可用來實現(xiàn)對各種點光源的檢測。