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