基于單片機(jī)的太陽自動(dòng)跟蹤系統(tǒng)的研究
2 軟件設(shè)計(jì)
本文介紹的控制系統(tǒng)的軟件設(shè)計(jì)采用了結(jié)構(gòu)化、模塊化的程序設(shè)計(jì)方法。主程序初始化完畢之后,即進(jìn)入等待狀態(tài),單片機(jī)控制運(yùn)行交由中斷服務(wù)程序控制。所需完成的功能主要由子模塊實(shí)現(xiàn)。各部分獨(dú)立完成一定的功能,又有機(jī)的結(jié)合為一個(gè)整體,完成所要求的控制任務(wù)。
程序的結(jié)構(gòu)如圖7所示。主程序包括初始化、最初的A/D轉(zhuǎn)換程序。整個(gè)程序周期里,初始化程序只在主程序第一次執(zhí)行時(shí)執(zhí)行一次。初始化之后,進(jìn)行最初A/D轉(zhuǎn)換,實(shí)際上等于對(duì)A/D轉(zhuǎn)換濾波器置初始值。本文引用地址:http://m.butianyuan.cn/article/173191.htm
2.1 定時(shí)器1溢出中斷服務(wù)程序
定時(shí)器1溢出中斷服務(wù)程序包含多個(gè)模塊,先后在一個(gè)T1溢出周期內(nèi)執(zhí)行完畢。這些模塊包括:控制算法、控制量輸出、A/D轉(zhuǎn)換、轉(zhuǎn)換結(jié)果處理和分析、異常處理等部分。通過每次T1溢出,周期性的采樣、反饋比較、調(diào)整、輸出,從而實(shí)現(xiàn)控制策略。
2.2 控制算法
編制控制算法子程序包括以下幾個(gè)步驟:計(jì)算當(dāng)前期望位置;計(jì)算補(bǔ)償通道輸出值;計(jì)算當(dāng)前實(shí)際位置;計(jì)算誤差和誤差通道輸出值;補(bǔ)償通道輸出值和誤差通道輸出值相加。
2.3 控制量輸出
單片機(jī)輸出的控制量為脈沖輸出,脈沖量的輸出可以通過軟件定時(shí)器,規(guī)定脈沖輸出的問隔時(shí)間,從而規(guī)定了脈沖輸出的頻率。
2.4 A/D轉(zhuǎn)換及其轉(zhuǎn)換結(jié)果處理和分析
雖然硬件上對(duì)模擬輸入進(jìn)行了低通濾波,但是仍然會(huì)有一些因素可能造成模擬輸入量出現(xiàn)較大的誤差。為了防止這種情況的發(fā)生,需要進(jìn)行軟件濾波,即數(shù)字濾波處理。數(shù)字濾波有許多優(yōu)點(diǎn):
(1)數(shù)字濾波器是由程序?qū)崿F(xiàn)的,不需增加硬件設(shè)備,數(shù)字濾波可以有多個(gè)輸入通道共用,因而成本低。
(2)數(shù)字濾波由程序?qū)崿F(xiàn),不需要硬件設(shè)備,因而可靠性好,穩(wěn)定性高,不存在阻抗匹配問題。
(3)數(shù)字濾波使用靈活,修改方便。而本文采用了算術(shù)平均值濾波方法。
2.5 異常處理
程序運(yùn)行中會(huì)發(fā)生多種異常情況,有些可以通過檢查輸入數(shù)據(jù)判斷,而有一些情況系統(tǒng)可以自行校正。光電傳感器誤差信號(hào)超出死區(qū)也應(yīng)視為異常情況??赡艿脑蚴浅霈F(xiàn)了一干擾光源或太陽能板與太陽位置發(fā)生偏離。為了避免在多云情況下的盲目跟蹤,如果輻射強(qiáng)度沒有達(dá)到特定值,則對(duì)于誤差信號(hào)超出死區(qū)不作任何操作。太陽能板與太陽位置發(fā)生偏離的情況下,系統(tǒng)有能力自動(dòng)的回復(fù)運(yùn)行狀態(tài)。
在每次定時(shí)器T1中斷時(shí),系統(tǒng)都檢查控制字。當(dāng)控制字表明系統(tǒng)在校正狀態(tài)時(shí),輸出控制量的值由預(yù)期位置量和光電傳感器誤差信號(hào)共同計(jì)算產(chǎn)生。
3 結(jié)語
系統(tǒng)采用特制的四象限硅光電池作為太陽跟蹤誤差校正用傳感器,并且采用AT89C51單片機(jī)作為智能單元,可以實(shí)現(xiàn)成本較低的全自動(dòng)太陽跟蹤系統(tǒng)。系統(tǒng)具備較好的穩(wěn)定性,并能夠達(dá)到相當(dāng)好的精確度和靈活性。理論分析和設(shè)計(jì)結(jié)果表明,本方法可以滿足太陽跟蹤控制的要求。
評(píng)論