,
(南京工程學(xué)院,南京 211167)
太陽能作為綠色、可再生能源,它的合理使用不會(huì)對(duì)環(huán)境產(chǎn)生污染,可以源源不斷地使用。很多國(guó)家都在改革太陽能的采集技術(shù),以便更高效地利用太陽能源,但目前太陽能采集技術(shù)比較傳統(tǒng),存在很多弊端。太陽能板是固定裝置,而太陽的位置時(shí)刻在變化,這種方式無法充分利用太陽資源,轉(zhuǎn)換效率較低。另外,太陽能板安裝在室外,容易受粉塵污染,如果不及時(shí)清理,會(huì)導(dǎo)致發(fā)電效率降低,被遮蔽的光伏電池會(huì)變成不發(fā)電的負(fù)載電阻,消耗相連電池產(chǎn)生的電力,造成發(fā)熱,這就是“熱斑效應(yīng)”。此過程會(huì)加劇電池板老化,減少光電轉(zhuǎn)化率,嚴(yán)重時(shí)會(huì)引起火災(zāi)。本文提出了一種基于圖像處理的嵌入式太陽能自動(dòng)跟蹤控制系統(tǒng)設(shè)計(jì),一方面可以實(shí)時(shí)調(diào)整太陽能板的方位角與傾斜角,使太陽能板始終正對(duì)著太陽,從而使太陽能板獲得最大的發(fā)電量,確保提高光電轉(zhuǎn)換效率,有效提高太陽能的利用率;另一方面,也可以實(shí)時(shí)觀察太陽能板灰塵度,及時(shí)清理,延長(zhǎng)太陽能板的壽命。
系統(tǒng)方案總體框圖如圖1所示。系統(tǒng)主要由處理器Smart210開發(fā)平臺(tái)、電機(jī)、單片機(jī)、GPS模塊等組成。主要工作原理是:處理器通過讀取GPS模塊輸出的緯度及時(shí)間等參數(shù),大致計(jì)算出此時(shí)太陽的高度角和方位角,再計(jì)算出電機(jī)轉(zhuǎn)動(dòng)次數(shù),實(shí)現(xiàn)對(duì)太陽方位的初始定位,然后通過對(duì)攝像頭采集的太陽圖片進(jìn)行圖像信息處理,計(jì)算得到跟蹤系統(tǒng)的誤差,驅(qū)動(dòng)電機(jī)再次定位,從而實(shí)現(xiàn)對(duì)太陽的精確跟蹤。這個(gè)跟蹤過程分為以下兩個(gè)步驟完成:
圖1 太陽方位跟蹤系統(tǒng)總體框圖
① 跟蹤裝置初始位置確定—視日運(yùn)動(dòng)軌跡跟蹤策略,由于太陽軌跡有一定規(guī)律,所以通過視日運(yùn)動(dòng)跟蹤算法能夠計(jì)算某地任意時(shí)刻的太陽高度角和方位角,進(jìn)而驅(qū)動(dòng)電機(jī)使裝置正對(duì)太陽。采用視日運(yùn)動(dòng)軌跡跟蹤有兩個(gè)主要原因: 一是實(shí)現(xiàn)跟蹤設(shè)備的初始定位;二是當(dāng)天氣陰天沒有太陽出現(xiàn)時(shí),系統(tǒng)也可以正常工作。
② 攝像頭拍攝太陽圖像以形成閉環(huán)反饋,通過攝像頭收集太陽斑點(diǎn)圖像,并對(duì)太陽斑點(diǎn)圖像進(jìn)行計(jì)算,求出太陽圖像的質(zhì)心,獲取太陽位置的偏差,反饋給跟蹤系統(tǒng),校正跟蹤裝置,然后完成對(duì)太陽位置的精確跟蹤。
太陽的高度角、方位角通過一定的算法處理后,將此加載到控制系統(tǒng)中,控制邏輯電路計(jì)算出對(duì)應(yīng)太陽移動(dòng)的位置,最后控制器控制電路驅(qū)動(dòng)電機(jī)旋轉(zhuǎn),從而使太陽能板保持與太陽光垂直。設(shè)計(jì)采用雙軸追蹤模型,一個(gè)電機(jī)控制水平轉(zhuǎn)動(dòng),另外一個(gè)電機(jī)控制垂直方向,這樣可以實(shí)現(xiàn)水平方向和垂直方向調(diào)整,實(shí)現(xiàn)了全方位追蹤。系統(tǒng)工作時(shí),根據(jù)太陽軌跡算法和太陽質(zhì)心識(shí)別算法得到太陽的高度角和方位角,方位角參數(shù)控制水平轉(zhuǎn)軸,高度角參數(shù)控制垂直轉(zhuǎn)軸,從而使得太陽能板始終對(duì)著太陽。精密攝像頭與太陽能板安裝在一個(gè)平面上,便于采集太陽圖像[1-3]。
系統(tǒng)有兩種控制模式:時(shí)間控制模式和圖像處理模式。軟件設(shè)計(jì)環(huán)境采用嵌入式QT編程,系統(tǒng)上電, QT系統(tǒng)啟動(dòng)后,先讀取GPS模塊,得到當(dāng)前時(shí)間,通過時(shí)間判是白晝還是夜晚。如果是夜晚,系統(tǒng)進(jìn)入休眠狀態(tài);如果是白晝,系統(tǒng)讀取GPS模塊得到此地的經(jīng)緯度和時(shí)間,再通過視日運(yùn)動(dòng)算法計(jì)算此時(shí)太陽的方位角和仰角,然后驅(qū)動(dòng)電機(jī)定位太陽最開始的位置,接下來就是圖像處理模塊。初始定位后,攝像頭采集此時(shí)的太陽圖像,通過圖像處理,精確定位太陽位置。由于篇幅限制,這里對(duì)于基于視日運(yùn)動(dòng)軌跡計(jì)算太陽的方位角與高度角的方法和實(shí)現(xiàn)不做詳細(xì)描述,重點(diǎn)講述圖像處理跟蹤方法。
2.2.1 圖像處理算法流程圖
利用圖像處理的方法實(shí)現(xiàn)太陽跟蹤,需要通過攝像頭采集太陽圖像,再對(duì)圖片進(jìn)行去噪聲處理,處理完成后,圖像中只有單一的太陽光斑,接下來進(jìn)行質(zhì)心定位,計(jì)算中心偏差,然后計(jì)算電機(jī)轉(zhuǎn)動(dòng)的次數(shù)。軟件流程圖如圖2所示。
圖2 太陽圖像處理操作流程圖
2.2.2 太陽光斑圖像預(yù)處理
(1)太陽光斑圖像采集方案的設(shè)計(jì)
太陽光照很強(qiáng),攝像頭直接采集太陽圖像,得到的圖像比較模糊,時(shí)間較長(zhǎng)會(huì)損壞攝像頭,所以在采集太陽圖像時(shí)要加保護(hù)措施,使太陽光間接在攝像頭內(nèi)成像。
本文采用在攝像頭前加上專用薄膜的方法,目前最常用的專用薄膜是德國(guó)發(fā)明的巴德膜,借用巴德膜采集太陽圖像更加有效,更能顯現(xiàn)太陽的真實(shí)色彩,還能濾除云朵等反射的較弱光。實(shí)驗(yàn)選擇密度為5.0、透光性約為十萬分之一的巴德膜。
由于巴德膜的透光性弱,可以得到質(zhì)量良好的太陽光斑圖像。圖3中左圖是沒有加巴德膜攝像頭采集的太陽圖像,右圖是增加保護(hù)膜后拍攝的太陽圖像。對(duì)比兩圖可以看出,使用巴德膜作為太陽濾鏡可以取得更好的像質(zhì),噪聲點(diǎn)較少,有利于后續(xù)的圖像處理,另外,對(duì)攝像頭也起到保護(hù)作用,避免燒傷。
圖3 兩次拍攝的太陽圖像對(duì)比圖
(2)太陽圖像的預(yù)處理
由于巴德膜的折痕導(dǎo)致圖像處理過程中會(huì)產(chǎn)生不可避免的噪聲點(diǎn),這些噪聲點(diǎn)會(huì)影響到最終的識(shí)別效果,因此需要對(duì)這些噪聲點(diǎn)進(jìn)行濾除,這里采取開運(yùn)算與閉運(yùn)算[4-6]。開運(yùn)算就是先腐蝕后膨脹,用來消除小物體、在纖細(xì)點(diǎn)處分離物體、平滑較大物體的邊界的同時(shí)并不明顯改變其面積。閉運(yùn)算是先膨脹后腐蝕,用來填充物體內(nèi)細(xì)小空洞、連接鄰近物體、平滑其邊界的同時(shí)并不明顯改變其面積。
① 腐蝕。兩組集合A、B,結(jié)構(gòu)元素B對(duì)A的整個(gè)腐蝕過程如下:用B結(jié)構(gòu)元素掃描圖像A的每一個(gè)像素,結(jié)構(gòu)元素中的每一個(gè)像素與其覆蓋的像素進(jìn)行“與”運(yùn)算,如果結(jié)果均為1,該像素為1,否則為0。腐蝕過程的結(jié)果是將原始二值圖像縮少一圈。
② 膨脹。用B結(jié)構(gòu)元素掃描圖像A的每一個(gè)像素,結(jié)構(gòu)元素中的每一個(gè)像素與其覆蓋的像素進(jìn)行“與”運(yùn)算,如果兩者均為0,則圖像的該像素為0,否則為1,膨脹過程使二值圖像大一圈。
本文對(duì)原始圖像先進(jìn)行開運(yùn)算填充太陽圖像中的孔,再閉運(yùn)算去除噪點(diǎn)。圖4中,左圖和右圖是經(jīng)過開閉運(yùn)算前后的對(duì)比圖。對(duì)比兩圖可知,運(yùn)用開運(yùn)算和閉運(yùn)算等方法能夠完善噪聲濾除、形態(tài)識(shí)別、圖像分割等問題。
圖4 開閉運(yùn)算前后的太陽圖像
2.2.3 光斑質(zhì)心定位
上述所做的預(yù)處理工作都是為了找到太陽質(zhì)心的精確位置,而能否找到質(zhì)心的位置是整個(gè)太陽跟蹤系統(tǒng)的關(guān)鍵。光斑質(zhì)心定位的辦法有很多種,比如圖像匹配算法、圖像邊界跟蹤算法等。由于本文中預(yù)處理之后的光斑比較單一,所以采用圖像輪廓跟蹤算法求質(zhì)心[7-8]。
(1)圖像輪廓跟蹤算法——Canny算法
Canny算法實(shí)現(xiàn)分為幾個(gè)步驟:利用高斯濾波器來消除噪聲,達(dá)到平滑圖像的目的;計(jì)算圖像中的強(qiáng)度梯度;應(yīng)用非最大抑制(non-maximum suppression)技術(shù)消除邊誤檢;應(yīng)用雙閾值方法來檢測(cè)可能的(潛在的)邊界;利用滯后技術(shù)來跟蹤邊界[9-10]。具體步驟如下:
① 圖像平滑-高斯去噪
圖像信息的原始數(shù)據(jù)要經(jīng)過高斯去噪聲來減少對(duì)邊界檢測(cè)的影響,采用的方法是原始數(shù)據(jù)與高斯mask作卷積,得到的圖像與原始圖像相比有點(diǎn)模糊。高斯濾波器核的生成方程式為:
1≤i,j?(2k-1)
(1)
假設(shè)圖像數(shù)據(jù)矩陣為A,則經(jīng)過高斯濾波(卷積)之后,平滑后的像素點(diǎn)亮度值為:
(2)
② 尋找圖像中的梯度和方向
Canny算法的核心是尋找一幅圖片中灰度強(qiáng)度變化最強(qiáng)的位置,即梯度和方向。濾波后的圖像每個(gè)像素點(diǎn)的梯度可由不同的算子(例如Roberts、Prewitt、Sobel等)來計(jì)算,這里采用Sobel算子來獲得。用于邊緣檢測(cè)的Sobel算子返回水平Gx和垂直Gy方向的一階導(dǎo)數(shù)值,由此確定像素的梯度和方向,如下式(G表示梯度強(qiáng)度,θ表示梯度的方向):
(3)
(4)
在水平x和垂直y方向的Sobel算子是:
(5)
圖5 Sobel算子的方向坐標(biāo)圖
其中Sx用于檢測(cè)垂直方向的邊緣算子,Sy表示用于檢測(cè)水平方向的邊緣算子。在笛卡爾坐標(biāo)中,Sobel算子的方向坐標(biāo)如圖5所示。
假設(shè)圖像矩陣為A,利用Sobel算子進(jìn)行卷積計(jì)算后,像素e點(diǎn)在x和y軸方向上的梯度值分別是Gx和Gy,表達(dá)式如下:
(6)
(7)
所以,計(jì)算結(jié)果x方向Gx值和y方向的梯度值Gy,代入式(3)和式(4),計(jì)算出梯度和方向。
③ 非極大值抑制
非極大值抑制采用邊緣稀疏技術(shù),目的是削薄邊緣。非極大值抑制就是保留每個(gè)像素點(diǎn)上梯度強(qiáng)度的最大值,而刪除其他值。梯度圖像中每個(gè)像素點(diǎn)的非極大值抑制操作如下:
a. 將當(dāng)前像素的梯度強(qiáng)度與梯度方向?yàn)檎?fù)梯度的兩個(gè)像素進(jìn)行比較;
b. 如果當(dāng)前像素的梯度強(qiáng)度與其他兩個(gè)像素梯度相比最大,則該像素點(diǎn)保留,否則刪除該像素點(diǎn)。
④ 雙閾值檢測(cè)
經(jīng)過非極大值抑制后圖像仍有很多噪聲點(diǎn),Canny算法采用了一種雙閾值技術(shù)來進(jìn)一步降低這些噪聲。即設(shè)定一個(gè)閾值的上限和一個(gè)閾值的下限;圖像中的像素點(diǎn)強(qiáng)度如果大于閾值的上限,則認(rèn)為是強(qiáng)邊界;小于閾值的下限,則不是邊界;如果像素點(diǎn)的梯度值大于低閾值小于高閾值,則認(rèn)為是弱邊界,需要進(jìn)一步處理。
⑤ 抑制孤立的弱邊界點(diǎn)
經(jīng)過雙閾值檢測(cè)得到了強(qiáng)邊緣和弱邊緣,對(duì)于強(qiáng)邊緣,可以認(rèn)為它是實(shí)際的輪廓。對(duì)于弱邊緣,它不一定是實(shí)際邊緣,需要抑制孤立邊緣。原理為:如果弱邊界的8個(gè)鄰域邊緣中存在強(qiáng)邊緣,則保留邊緣;反之,則抑制該弱邊緣。
通過上述步驟完成了Canny算法對(duì)圖像進(jìn)行邊緣檢測(cè),圖6為Canny算法之后的邊緣圖。
圖6 Canny算法之后的邊緣圖像
(2)計(jì)算太陽輪廓的質(zhì)心
獲取到太陽輪廓后,計(jì)算太陽質(zhì)心就比較簡(jiǎn)單了,步驟如下:查找最大的輪廓;計(jì)算輪廓的空間矩;計(jì)算質(zhì)心。
圖7所示為太陽圖像的質(zhì)心檢測(cè)結(jié)果,圖中小圓圈為太陽質(zhì)心位置。
圖7 光斑質(zhì)心檢測(cè)結(jié)果
2.2.4 控制電機(jī)運(yùn)轉(zhuǎn)實(shí)現(xiàn)太陽跟蹤
攝像頭安裝在太陽能板上,攝像頭采集太陽圖像的大小為320×240,圖像左下角為坐標(biāo)原點(diǎn),圖像中心位置的坐標(biāo)是(160,120),當(dāng)太陽光斑位于圖像中心時(shí),太陽能板正對(duì)著太陽。太陽光斑移動(dòng)示意圖如圖8所示。
圖8 太陽光斑運(yùn)動(dòng)示意圖
通過實(shí)驗(yàn)測(cè)試得知步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的角度與質(zhì)心像素點(diǎn)的移動(dòng)存在線性關(guān)系,步進(jìn)電機(jī)轉(zhuǎn)動(dòng)1個(gè)單位,質(zhì)心像素點(diǎn)移動(dòng)5個(gè)像素點(diǎn)。假設(shè)太陽光斑圖像某一刻坐標(biāo)為(X,Y),步進(jìn)電機(jī)轉(zhuǎn)動(dòng)次數(shù)設(shè)為Cx、Cy(分別表示水平、垂直轉(zhuǎn)動(dòng)次數(shù)),則有:
Gx=(X-160)/5
(8)
Gy=(Y-120)/5
(9)
步進(jìn)電機(jī)轉(zhuǎn)動(dòng)相應(yīng)次數(shù),完成跟蹤。
2.2.5 計(jì)算太陽能板粉塵覆蓋率
截取太陽能板圖像,計(jì)算太陽能板的面積,對(duì)太陽能板圖像二值化,進(jìn)行Canny算法,尋找粉塵覆蓋輪廓,計(jì)算輪廓面積,求取灰塵覆蓋率。由于篇幅有限,這里不做詳細(xì)介紹。
圖9 系統(tǒng)晴天時(shí)跟蹤太陽的圖像
實(shí)驗(yàn)測(cè)試需要在晴天環(huán)境下操作,通過GPS模塊知道此地的經(jīng)緯度為北緯31.55度,東經(jīng)118.52度。首先將裝置面朝正北方,將轉(zhuǎn)臺(tái)復(fù)位,然后開啟系統(tǒng)。系統(tǒng)每隔15分鐘追蹤太陽,系統(tǒng)的工作步驟為:每次跟蹤之前,先通過太陽軌跡運(yùn)動(dòng)規(guī)律算法定位太陽大致方位,然后通過圖像處理算法找到太陽精確位置,這里為了減小誤差,進(jìn)行了5次圖像處理,以達(dá)到更高的精確性。圖9為系統(tǒng)晴天時(shí)跟蹤太陽的圖像,圖9(a)是太陽圖像初始位置,圖9(b)是根據(jù)太陽圖像分析處理調(diào)整電機(jī)旋轉(zhuǎn)后的位置,接近坐標(biāo)的中心位置,說明太陽能板已經(jīng)正對(duì)著太陽。注:(144.2,143.7)代表太陽初始位置坐標(biāo),(157.7,121.4)是調(diào)整后的坐標(biāo)。