太陽(yáng)能智能控制儀-充放電控制-自動(dòng)跟蹤-畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  摘 要</b></p><p>  為實(shí)現(xiàn)對(duì)太陽(yáng)光的自動(dòng)跟蹤,最大化的利用太陽(yáng)能,本課題實(shí)現(xiàn)了以單片機(jī)為核心處理器的太陽(yáng)能控制儀,該控制儀可根據(jù)太陽(yáng)轉(zhuǎn)動(dòng)的規(guī)律以及太陽(yáng)能電池板的原理實(shí)現(xiàn)自動(dòng)跟蹤太陽(yáng)光和控制充電放電。太陽(yáng)能智能控制儀可以自動(dòng)檢測(cè)蓄電池的電壓,當(dāng)蓄電池的電量低于30%時(shí),太陽(yáng)能智能控制儀會(huì)控制蓄電池停止對(duì)外放電。該系統(tǒng)主要以單片機(jī)STC89C52、

2、ADC0809、步進(jìn)電機(jī)28BYJ-48、光敏電阻等為核心,使用PWM信號(hào)控制充放電,有效的防止過(guò)充,延長(zhǎng)蓄電池的使用壽命。使用光敏電阻檢測(cè)光的方向,原理簡(jiǎn)單,使用方便,具有很大的實(shí)用價(jià)值。</p><p>  關(guān)鍵詞: 太陽(yáng)能跟蹤;單片機(jī);智能充放電</p><p><b>  Abstract</b></p><p>  In order

3、to realize the automatic tracking of the sun light, solar maximum, the subject realizes the solar controller with single-chip microcomputer as the core processor, this controller according to the principle of the Sun rul

4、es as well as the solar panel to realize the automatic tracking solar light and control the charging and discharge. Solar intelligent control device can automatically detect the battery voltage, when the battery is less

5、than 30%, solar intelligent control device can cont</p><p>  Keywords: Solar tracking; Microcontroller; Intelligent charging and discharging</p><p><b>  目 錄</b></p><p>

6、<b>  摘 要I</b></p><p>  AbstractII</p><p><b>  目 錄III</b></p><p>  第一章 緒 論1</p><p>  1.1系統(tǒng)的研究背景1</p><p>  1.2 系統(tǒng)的研究意義1<

7、;/p><p><b>  1.3設(shè)計(jì)目標(biāo)2</b></p><p><b>  1.4本章小結(jié)2</b></p><p>  第二章 系統(tǒng)總體設(shè)計(jì)3</p><p>  2.1系統(tǒng)的工作原理3</p><p>  2.2系統(tǒng)的硬件組成3</p><

8、p><b>  2.3本章小結(jié)4</b></p><p>  第三章 系統(tǒng)方案論證5</p><p>  3.1模塊方案比較5</p><p>  3.1.1跟蹤方案的選擇5</p><p>  3.1.2電機(jī)的選擇5</p><p>  3.1.3太陽(yáng)能板的選擇5</p&

9、gt;<p>  3.1.4顯示模塊的方案選擇6</p><p><b>  3.2本章小結(jié)6</b></p><p>  第四章 系統(tǒng)硬件設(shè)計(jì)7</p><p>  4.1 主要芯片介紹7</p><p>  4.1.1 STC89C527</p><p>  4.1.

10、2 ADC08098</p><p>  4.1.3 LCD16029</p><p>  4.1.4步進(jìn)電機(jī)28BYJ-489</p><p>  4.2 電路硬件的設(shè)計(jì)9</p><p>  4.2.1充電控制模塊9</p><p>  4.2.2放電控制模塊10</p><p>

11、;  4.2.3單片機(jī)控制模塊11</p><p>  4.2.4 A/D轉(zhuǎn)換模塊12</p><p>  4.2.5跟蹤光信號(hào)采集模塊13</p><p>  4.2.6步進(jìn)電機(jī)驅(qū)動(dòng)模塊13</p><p>  4.2.7系統(tǒng)整體原理圖14</p><p>  4.3本章小結(jié)16</p>&

12、lt;p>  第五章 系統(tǒng)軟件設(shè)計(jì)17</p><p>  5.1系統(tǒng)主程序流程圖設(shè)計(jì)17</p><p>  5.2子程序的設(shè)計(jì)20</p><p>  5.2.1A/D轉(zhuǎn)換程序20</p><p>  5.2.2顯示程序21</p><p>  5.2.3跟蹤程序22</p><

13、;p>  5.2.4充放電控制程序24</p><p>  5.3本章小結(jié)26</p><p>  第六章 系統(tǒng)安裝調(diào)試27</p><p>  6.1整體系統(tǒng)調(diào)試27</p><p>  6.2 硬件的調(diào)試27</p><p>  6.3 軟件調(diào)試28</p><p>  6

14、.4本章小結(jié)29</p><p>  第七章 總結(jié)與展望30</p><p><b>  7.1 總結(jié)30</b></p><p><b>  7.2 展望30</b></p><p><b>  參考文獻(xiàn)31</b></p><p><

15、b>  致 謝32</b></p><p><b>  附 錄33</b></p><p>  附錄1 控制儀的硬件實(shí)物圖33</p><p>  附錄2 控制儀的PCB圖33</p><p>  附錄3 系統(tǒng)的實(shí)物圖34</p><p>  第一章 緒

16、論</p><p>  本課題主要設(shè)計(jì)一種基于單片機(jī)的太陽(yáng)能智能控制系統(tǒng),主要介紹該系統(tǒng)如何采集光信號(hào),控制步進(jìn)電機(jī)跟蹤太陽(yáng),以及采集太陽(yáng)能電池板和蓄電池的電壓,如何使用PWM控制充放電的。</p><p>  1.1系統(tǒng)的研究背景</p><p>  面對(duì)日益枯竭的化石能源,尋找一種代替化石能源的綠色能源日益緊迫。而太陽(yáng)能是一次能源,對(duì)環(huán)境無(wú)污染,還是可再生能源。

17、因此發(fā)展太陽(yáng)能,是解決能源問(wèn)題的出路。隨著光伏技術(shù)的發(fā)展,現(xiàn)在光伏器件逐漸降價(jià)以及逐漸普及,個(gè)人太陽(yáng)能電站聯(lián)網(wǎng)已經(jīng)不再是夢(mèng)想。</p><p>  我國(guó)是一個(gè)能源消費(fèi)大國(guó),但我國(guó)的能源消費(fèi)結(jié)構(gòu)很不平衡,我國(guó)能源主要依賴(lài)煤炭和石油等常規(guī)能源。但是這些能源是不可再生能源,是會(huì)枯竭的。世界經(jīng)濟(jì)的現(xiàn)代化,也是得益于化石能源,如石油、天然氣、煤炭與核裂變能的廣泛的投入應(yīng)用。因而它是建筑在化石能源基礎(chǔ)之上的一種經(jīng)濟(jì)[1]。但

18、隨著這些化石能源的日益枯竭,必將導(dǎo)致世界經(jīng)濟(jì)危機(jī)。所以在化石能源供應(yīng)日益緊張的背景下,如何開(kāi)發(fā)和利用可再生能源成為各國(guó)能源戰(zhàn)略中的重要組成部分。而太陽(yáng)能是重要的清潔能源之一,它具有取之不盡、用之不竭、無(wú)污染等特點(diǎn)。只要有太陽(yáng)光的地方,就可以直接開(kāi)放和利用太陽(yáng)能,沒(méi)有地域的限制。不需運(yùn)輸,無(wú)需開(kāi)采。它是最清潔的能源之一。在當(dāng)今社會(huì)污染越來(lái)越嚴(yán)重的今天,無(wú)污染性,顯得特別重要。</p><p>  我國(guó)的太陽(yáng)能資源非

19、常豐富,全國(guó)各地的太陽(yáng)能輻射總量高達(dá)837kJ/cm2。特別是青藏高原地區(qū),該地區(qū)空氣稀薄,日照時(shí)間長(zhǎng),太陽(yáng)能源非常豐富,如果可以利用好這些能源就,將會(huì)給當(dāng)?shù)貛?lái)新的發(fā)展機(jī)遇。也對(duì)當(dāng)?shù)氐沫h(huán)境提供更好的保護(hù)[2]。</p><p>  所以,如何開(kāi)發(fā)使用這么豐富的太陽(yáng)能資源,是當(dāng)今能源開(kāi)發(fā)的重任,是保護(hù)環(huán)境的重要途徑,是可持續(xù)發(fā)展的重要途徑。</p><p>  1.2 系統(tǒng)的研究意義<

20、;/p><p>  隨著太陽(yáng)能技術(shù)的發(fā)展,開(kāi)發(fā)個(gè)人太陽(yáng)能發(fā)電站已經(jīng)不再是夢(mèng)想,有效的利用太陽(yáng)能資源,不但可以緩解當(dāng)今的能源緊張,還可以保護(hù)環(huán)境。</p><p>  太陽(yáng)能智能控制儀,實(shí)現(xiàn)自動(dòng)跟蹤太陽(yáng)最大功率點(diǎn),實(shí)現(xiàn)提高光電轉(zhuǎn)換效率,系統(tǒng)成本低,可以應(yīng)用在航天航空上,也可以應(yīng)用在太陽(yáng)能發(fā)電站上,也可以應(yīng)用在太陽(yáng)能路燈上。</p><p>  太陽(yáng)能智能控制儀的主要功能是

21、控制太陽(yáng)能板自動(dòng)跟蹤太陽(yáng)光,使太陽(yáng)能板始終保持與太陽(yáng)光垂直,只有太陽(yáng)光與太陽(yáng)能板垂直,太陽(yáng)能板轉(zhuǎn)換的效率才是最高的,同時(shí)太陽(yáng)能智能控制儀控制充放電,只有太陽(yáng)能板輸出電壓大于蓄電池的電壓才開(kāi)始充電,同時(shí)檢測(cè)蓄電池的電壓。當(dāng)蓄電池滿(mǎn)時(shí),太陽(yáng)能智能控制儀會(huì)自動(dòng)停止充電。智能的控制跟蹤、充放電。使光電轉(zhuǎn)換效率最高。同時(shí)延長(zhǎng)蓄電池的使用壽命。</p><p><b>  1.3設(shè)計(jì)目標(biāo) </b><

22、;/p><p>  本課題的設(shè)計(jì)目標(biāo):可實(shí)現(xiàn)對(duì)太陽(yáng)光線(xiàn)的實(shí)時(shí)跟蹤;可供普通的手機(jī)電池充電,輸出電壓4V左右;輸出電流300mA-400mA;要求充電時(shí)間小于2小時(shí)要有相應(yīng)的保護(hù)裝置以防電池被過(guò)充;放電過(guò)程中若電池容量小于總?cè)萘康?0%時(shí),放電終止,保證電池不會(huì)因?yàn)檫^(guò)放電而損壞;系統(tǒng)損耗盡量降低以延長(zhǎng)電池的使用壽命。</p><p><b>  1.4本章小結(jié)</b><

23、;/p><p>  本文的第一章主要對(duì)太陽(yáng)能智能控制器作了簡(jiǎn)單的概述,本文介紹了太陽(yáng)能智能控制系統(tǒng)的工作原理,接著第三章主要介紹了太陽(yáng)能智能控制器的設(shè)計(jì)方案選擇,然后是主要控制芯片的介紹,接著介紹太陽(yáng)能智能控制器的硬件設(shè)計(jì),太陽(yáng)能智能控制儀的軟件設(shè)計(jì)部分,第六章介紹系統(tǒng)的安裝以及調(diào)試,最后是總結(jié)部分,并提出這個(gè)系統(tǒng)的新看法以及展望。</p><p>  第二章 系統(tǒng)總體設(shè)計(jì)</p>

24、<p>  2.1系統(tǒng)的工作原理</p><p>  基于單片機(jī)的太陽(yáng)能智能控制儀的工作原理是:本系統(tǒng)是用一個(gè)單片機(jī)來(lái)自動(dòng)控制跟蹤太陽(yáng)光,同時(shí)控制充放電。當(dāng)檢測(cè)到太陽(yáng)能板不與太陽(yáng)光線(xiàn)垂直時(shí),就會(huì)控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng),使太陽(yáng)能板始終保持與太陽(yáng)光線(xiàn)垂直。當(dāng)檢測(cè)太陽(yáng)能板的電壓達(dá)到可以為蓄電池充電的電壓時(shí)同時(shí)檢測(cè)蓄電池的電壓是否低于設(shè)定值時(shí),若兩者都滿(mǎn)足就控制開(kāi)始快速充電,當(dāng)檢測(cè)到蓄電池的電壓差不多達(dá)到飽和值時(shí)

25、,就開(kāi)始控制充電方式為浮充。這樣提高蓄電池的壽命,同時(shí)提高太陽(yáng)能板的轉(zhuǎn)換效率。</p><p>  具體功能設(shè)計(jì)要求如下:</p><p> ?。?)實(shí)現(xiàn)對(duì)太陽(yáng)光線(xiàn)的實(shí)時(shí)跟蹤。</p><p> ?。?)實(shí)現(xiàn)智能控制蓄電池的最優(yōu)充放電。</p><p> ?。?)實(shí)現(xiàn)充電狀態(tài)的顯示,與蓄電池狀態(tài)的顯示。</p><p>

26、; ?。?)實(shí)現(xiàn)穩(wěn)定的太陽(yáng)能電源輸出,可以為外設(shè)備提供電源(5V)。</p><p>  2.2系統(tǒng)的硬件組成</p><p>  太陽(yáng)能智能控制儀的硬件組成:系統(tǒng)的信號(hào)采集電路主要是使用電阻分壓方式采集,采集到適合ADC0809轉(zhuǎn)換的電壓。再交給ADC0809進(jìn)行模數(shù)轉(zhuǎn)換,再給單片機(jī)處理,然后單片機(jī)做出控制,控制顯示部分、步進(jìn)電機(jī)驅(qū)動(dòng)電路和充放電路。系統(tǒng)總體設(shè)計(jì)方案如圖2-1所示。<

27、;/p><p>  圖2-1 系統(tǒng)的硬件組成</p><p>  系統(tǒng)主要由STC89C51單片機(jī)、ADC0809、步進(jìn)電機(jī)驅(qū)動(dòng)芯片ULN2003A、開(kāi)關(guān)芯片IRF9540N、穩(wěn)壓芯片7805等器件組成。單片機(jī)主要完成控制ADC0809、ULN2003和IRF9540。系統(tǒng)有以功能模塊:</p><p><b>  充放電控制模塊;</b><

28、;/p><p><b>  單片機(jī)控制模塊;</b></p><p><b>  步進(jìn)電機(jī)驅(qū)動(dòng)模塊;</b></p><p><b>  LCD顯示模塊;</b></p><p><b>  A/D轉(zhuǎn)換模塊;</b></p><p> 

29、 跟蹤光信號(hào)采集模塊;</p><p><b>  2.3本章小結(jié)</b></p><p>  本章對(duì)系統(tǒng)設(shè)計(jì)的工作原理和結(jié)構(gòu)作了簡(jiǎn)單的介紹,本系統(tǒng)主要有單片機(jī)控制模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、A/D轉(zhuǎn)換模塊、光電采集模塊、LCD顯示模塊。單片機(jī)模塊主要負(fù)責(zé)處理數(shù)據(jù),并控制其他模塊,是系統(tǒng)的控制中心。A/D模塊負(fù)責(zé)將模擬數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù),因單片機(jī)只能處理數(shù)字?jǐn)?shù)據(jù)。本章主要

30、簡(jiǎn)單介紹了系統(tǒng)的總體設(shè)計(jì)。</p><p>  第三章 系統(tǒng)方案論證</p><p>  本系統(tǒng)需要實(shí)現(xiàn)的功能有:實(shí)現(xiàn)自動(dòng)跟蹤太陽(yáng)光,實(shí)現(xiàn)自動(dòng)控制充放電,實(shí)現(xiàn)對(duì)外輸出穩(wěn)定電源,實(shí)現(xiàn)實(shí)時(shí)顯示充電狀態(tài)和蓄電池的電量,但隨著電子技術(shù)的高速發(fā)展,各種控制器技術(shù)也日益完善,控制芯片已經(jīng)加速換代,由此需要討論跟蹤方案、控制方案、電機(jī)的選擇。以下是本系統(tǒng)的方案選擇。</p><p&g

31、t;  3.1模塊方案比較 </p><p>  3.1.1跟蹤方案的選擇</p><p>  方案一:視日運(yùn)動(dòng)軌跡跟蹤</p><p>  由于地球繞太陽(yáng)轉(zhuǎn)動(dòng)是有規(guī)律的,所以太陽(yáng)的位置是可以預(yù)測(cè)的,只要計(jì)算好每時(shí)每刻太陽(yáng)的位置,就可以控制跟蹤。但算法十分復(fù)雜,所以控制系統(tǒng)的成本也很高,而且沒(méi)有反饋,初始校準(zhǔn)麻煩。</p><p><

32、b>  方案二:光電跟蹤</b></p><p>  在太陽(yáng)能板安裝兩個(gè)光敏電阻,檢測(cè)兩個(gè)光敏電阻的電阻值,就可判斷光線(xiàn)的方向。這種跟蹤方式原理簡(jiǎn)單,成本低,具有實(shí)時(shí)反饋,可以控制實(shí)時(shí)跟蹤。而且誤差小。</p><p>  方案選擇:根據(jù)兩種方案,方案一控制系統(tǒng)復(fù)雜,算法復(fù)雜,成本高,而方案二實(shí)現(xiàn)實(shí)時(shí)跟蹤,成本低,精度高,所以本系統(tǒng)采用方案二光電跟蹤。</p>

33、<p>  3.1.2電機(jī)的選擇</p><p><b>  方案一:直流電機(jī)</b></p><p>  直流電機(jī)就是輸入為直流信號(hào)就可以控制電機(jī)轉(zhuǎn)動(dòng)的,實(shí)現(xiàn)了直流電能轉(zhuǎn)換為機(jī)械能。直流電機(jī)具有調(diào)速特性好,能實(shí)現(xiàn)頻發(fā)制動(dòng)和逆向旋轉(zhuǎn),過(guò)載能力強(qiáng)。</p><p><b>  方案二:步進(jìn)電機(jī)</b></

34、p><p>  步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)化為角位移的,當(dāng)步進(jìn)電機(jī)就收到一個(gè)脈沖,它就驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一個(gè)固定的角度。所以通過(guò)控制脈沖個(gè)數(shù)和頻率就可以控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)的角度和速度。所以步進(jìn)電機(jī)具有準(zhǔn)確定位的能力,同時(shí)可以準(zhǔn)確的控制速度。步進(jìn)電機(jī)在自動(dòng)控制上和機(jī)器人上應(yīng)用非常廣泛。</p><p>  方案選擇:本系統(tǒng)需要實(shí)現(xiàn)準(zhǔn)確跟蹤太陽(yáng)位置,根據(jù)直流電機(jī)和步進(jìn)電機(jī)的特點(diǎn),本方案選擇使用步進(jìn)電機(jī)。

35、</p><p>  3.1.3太陽(yáng)能板的選擇</p><p>  方案一: 單晶硅太陽(yáng)能板</p><p>  單晶硅太陽(yáng)能板時(shí)采用轉(zhuǎn)換效率比較高的單晶硅電池片按照需求串、并陣列方式構(gòu)成的板塊。使用壽命長(zhǎng),轉(zhuǎn)換效率高,可以應(yīng)用在交通領(lǐng)域、衛(wèi)星、航天器上。但是其制作成本比較高,價(jià)格也比較高。</p><p>  方案二:多晶硅太陽(yáng)能板<

36、/p><p>  多晶硅太陽(yáng)能板時(shí)使用多晶硅電池片串并聯(lián)出不同功率的太陽(yáng)能板。制作成本低,市場(chǎng)價(jià)格便宜,可以應(yīng)用在小型太陽(yáng)能電源。但是其轉(zhuǎn)換效率不是很高,壽命不長(zhǎng)。</p><p>  方案選擇:根據(jù)設(shè)計(jì)要求,設(shè)計(jì)成本不能太高,本設(shè)計(jì)選用價(jià)格比較低的多晶硅太陽(yáng)能板。</p><p>  3.1.4顯示模塊的方案選擇</p><p><b&g

37、t;  方案一:數(shù)碼管顯示</b></p><p>  一個(gè)數(shù)碼管有八個(gè)小LED發(fā)光二極管,通過(guò)控制不同的LED發(fā)光二極管的亮滅來(lái)顯示不同的字形。價(jià)格便宜,但可以顯示的內(nèi)容少,軟件編寫(xiě)繁瑣,硬件設(shè)計(jì)比較復(fù)雜。</p><p><b>  方案二:LCD顯示</b></p><p>  LCD1602顯示可以同時(shí)顯示16×0

38、2個(gè)字符,顯示字母和數(shù)字非常方便,控制也很簡(jiǎn)單,成本不高,顯示質(zhì)量高,體積小,重量輕,功耗低。</p><p>  方案選擇:根據(jù)設(shè)計(jì)要求,本設(shè)計(jì)要求要顯示四個(gè)電壓值,顯示量大,如果使用數(shù)碼管顯示的話(huà),就需要很多接口控制,且設(shè)計(jì)硬件很繁瑣,軟件編寫(xiě)也很麻煩。而LCD1602可以同時(shí)顯示16×02個(gè)字符,顯示量足夠,且設(shè)計(jì)簡(jiǎn)單,軟件編寫(xiě)也很簡(jiǎn)單,所以選擇方案二LCD顯示。</p><p

39、><b>  3.2本章小結(jié)</b></p><p>  本章對(duì)系統(tǒng)的設(shè)計(jì)方案作了簡(jiǎn)單的論證,并結(jié)合實(shí)際情況,對(duì)跟蹤方案、電機(jī)方案、太陽(yáng)能板方案、顯示方案做出了論證分析,結(jié)合實(shí)際需求,做出了合理的方案選擇。具體的硬件設(shè)計(jì)將在第四章詳細(xì)講解。</p><p>  第四章 系統(tǒng)硬件設(shè)計(jì)</p><p>  本系統(tǒng)主要以單片機(jī)為處理器,單片機(jī)

40、的外圍電路有A/D轉(zhuǎn)換電路、步進(jìn)電機(jī)驅(qū)動(dòng)電路,LCD顯示電路等。接下來(lái)將詳細(xì)介紹各個(gè)器件和電路的原理。</p><p>  4.1 主要芯片介紹</p><p>  4.1.1 STC89C52</p><p>  STC89C52是屬于STC公司最新推出的STC系列的單片機(jī),具有反復(fù)擦寫(xiě)程序的能力,且兼容MCS-51指令系統(tǒng), STC89C52是一種低功耗、高性能

41、的微控制器,在眾多嵌入式控制應(yīng)用系統(tǒng)中提供靈活有效的解決方案[3]。其引腳圖如圖4-1所示。</p><p>  STC89C52主要性能參數(shù):</p><p>  1、8k字節(jié)Flash;</p><p>  2、512字節(jié)RAM;</p><p>  3、32位I/O口線(xiàn);</p><p><b>  4

42、、看門(mén)狗定時(shí)器;</b></p><p>  5、MAX810復(fù)位電路;</p><p>  6、3個(gè)16位定時(shí)器/計(jì)數(shù)器;</p><p><b>  7、4個(gè)外部中斷;</b></p><p><b>  8、全雙工串行口;</b></p><p>  圖4-

43、1 STC89C52單片機(jī)引腳</p><p>  STC89C52具有32位I/O端口,兩個(gè)外部中斷,3個(gè)16位可設(shè)定的計(jì)數(shù)器,它有40個(gè)引腳,按功能分大致可以分為4類(lèi),分別為電源、時(shí)鐘、控制、I/O口等四類(lèi)[4]。以下就按這四類(lèi)功能對(duì)STC89C52進(jìn)行管腳分析。</p><p><b>  電源管腳</b></p><p> ?。?)VC

44、C:接5V電源正極。</p><p> ?。?)GND:接電源地線(xiàn)。</p><p><b>  2、時(shí)鐘管腳</b></p><p> ?。?)X1:內(nèi)部振蕩電路的輸入端。</p><p> ?。?)X2:內(nèi)部振蕩電路的輸出端。</p><p><b>  3、輸入/輸出口</b

45、></p><p>  STC89C52有4組8位并行的輸入/輸出口,分別為P0、P1、P2、P3。</p><p> ?。?)P0口:8位雙向并行I/O接口。當(dāng)P0口作為輸入/輸出口時(shí),P0口是漏極開(kāi)路輸出,當(dāng)驅(qū)動(dòng)拉電流負(fù)載時(shí),需要外接上拉電阻。</p><p>  (2)P1口:8位準(zhǔn)雙向并行I/O接口。P1口是純粹的輸入/輸出口,沒(méi)有其他的第二功能。&

46、lt;/p><p> ?。?)P2口:8位準(zhǔn)雙向并行I/O接口,可以作為輸入/輸出口,也可以作為地址總線(xiàn)。</p><p>  (4)P3口:P3口是一個(gè)多功能口,除了可以作為輸入/輸出口外,還有第二功能。</p><p>  4.1.2 ADC0809</p><p>  ADC0809是一個(gè)8位逐次逼近式的模數(shù)轉(zhuǎn)換芯片,它是由美國(guó)國(guó)家半導(dǎo)體公

47、司生產(chǎn)的,是CMOS器件,多路開(kāi)關(guān)可以選擇8個(gè)模擬通道,允許8路模擬量輸入,ADC0809的轉(zhuǎn)換時(shí)間為100µs,模擬量輸入范圍為0~5V [5]。</p><p>  圖4-2 ADC0809引腳圖</p><p>  其引腳圖如圖4-2所示,ADC0809芯片有28條管腳,使用的是雙列直插式封裝。下面將介紹主要管腳的功能。</p><p>  IN0

48、~IN7:8路模擬通道輸入端。</p><p>  D0~D7:8位數(shù)據(jù)輸出端。</p><p>  ADDA、ADDB、ADDC:模擬通道選擇端,地址信號(hào)和通道選擇的關(guān)系如表4-1。</p><p>  表4-1地址信號(hào)與通道選擇的關(guān)系</p><p>  4.1.3 LCD1602</p><p>  LCD160

49、2顯示模塊是專(zhuān)門(mén)用于顯示字母和數(shù)字的LCD陣列。LCD1602可以顯示兩行,每一行可以顯示16個(gè)字符。</p><p>  圖4-3 LCD1602管腳圖</p><p>  LCD1602采用的是16腳接口,各引腳功能說(shuō)明如下表4-2。</p><p>  表4-2 LCD1602管腳說(shuō)明表 </p><p>  4.1.4步進(jìn)電機(jī)28BY

50、J-48</p><p>  28BYJ-48是一種將脈沖信號(hào)轉(zhuǎn)換為角位移的機(jī)器,28BYJ-48是四相8拍電機(jī),輸入電壓可以為5V-12V,四相步進(jìn)電機(jī)的通電方式有單四拍和雙四拍之分,單四拍是(A-B-C-D-A),雙四拍的是(AB-BC-CD-DA-AB)[6]。</p><p>  4.2 電路硬件的設(shè)計(jì)</p><p>  本系統(tǒng)分為六個(gè)模塊,分別為充放電控

51、制模塊、單片機(jī)控制模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、AD轉(zhuǎn)換模塊、光電采集模塊和LCD顯示模塊。下文將會(huì)對(duì)各個(gè)模塊進(jìn)行詳細(xì)介紹。</p><p>  4.2.1充電控制模塊</p><p>  充放電控制模塊的原理電路圖如圖4-4所示。</p><p>  圖4-4充電控制模塊</p><p>  如圖所示,J2為太陽(yáng)能電池板接入端子,太陽(yáng)電池板的峰峰

52、值為11V,功率為2.5W。該系統(tǒng)主要工作在5V電壓下,蓄電池的電壓為6.5V左右。所以5V電壓可由蓄電池P2接一個(gè)LM7805穩(wěn)壓管,輸出為5.0V。同時(shí)可以作為本系統(tǒng)的輸出。</p><p>  由上所述,J2接入太陽(yáng)能電池板,P2接入蓄電池,充電回路則是D2→Q1→ D1→P2→丄。其中D2是防回充二極管,使用型號(hào)是1N4007。Q1是MOS管IRF9540。</p><p>  充

53、電控制的核心是控制MOS管。而三極管Q3、R1、R5、R21構(gòu)成的電路是實(shí)現(xiàn)控制MOS管的。控制系統(tǒng)產(chǎn)生的PWM0控制信號(hào)接入NPN型三極管Q3的基極上。當(dāng)PWM0信號(hào)輸出為高電平時(shí),可以知道三極管處于導(dǎo)通狀態(tài),所以MOS管的IRF9540的門(mén)極為低電平,MOS管處于導(dǎo)通狀態(tài),充電回路就處于導(dǎo)通狀態(tài),蓄電池則處于充電狀態(tài)。當(dāng)PWM0輸出為低電平時(shí),三極管處于截止?fàn)顟B(tài),MOS管Q1的源極和門(mén)極的電壓相等,則MOS管處于截止?fàn)顟B(tài),所以充電回

54、路處于斷開(kāi)狀態(tài)。</p><p>  本系統(tǒng)可以控制PWM0改變充電狀態(tài),當(dāng)PWM0一直為高電平時(shí)為快速充電狀態(tài);當(dāng)PWM0為一定頻率的脈沖信號(hào),則此時(shí)為浮充狀態(tài),從而有效的保護(hù)電池,延長(zhǎng)蓄電池的壽命。圖4-3中,R2、R20與太陽(yáng)能構(gòu)成的回路是太陽(yáng)能電源采集電路,由于太陽(yáng)能的電壓不能直接給A/D轉(zhuǎn)換,所以要一個(gè)分壓電路,使R20的電壓在0~5V之間,R20的電阻為10KΩ,R2的阻值為22KΩ,R20的電壓接入

55、ADC0809的通道0上,通過(guò)轉(zhuǎn)換得到R20的電壓,就可以計(jì)算出太陽(yáng)能電池的電壓。R4、R8與蓄電池構(gòu)成的路是蓄電池電壓采集電路,R4的電阻為6.8KΩ,R8的阻值為10KΩ,R8的電壓接入ADC0809的通道1上。通過(guò)轉(zhuǎn)換得到R8的電壓,就可以計(jì)算出蓄電池的電壓。通過(guò)檢測(cè)太陽(yáng)能的電壓和蓄電池的電壓,實(shí)現(xiàn)對(duì)充放電狀態(tài)的控制,圖4-3中的J1為USB接口,可以輸出穩(wěn)定的5V電源為手機(jī)等電器充電[7]。</p><p&g

56、t;  4.2.2放電控制模塊</p><p>  放電控制部分的原理和充電控制的原理一樣的,如圖4-5所示,放電控制主要由Q2、Q4、R3、R7、R22構(gòu)成的電路組成。當(dāng)PWM1為高電平時(shí),則三極管Q4導(dǎo)通,Q2的門(mén)極則為低電平,MOS管Q2則導(dǎo)通,則系統(tǒng)可以對(duì)外放電,當(dāng)PWM1為低電平時(shí),三極管Q4不導(dǎo)通,則Q2的門(mén)極為高電平,MOS管Q2截止,系統(tǒng)停止對(duì)外止放電。通過(guò)檢測(cè)蓄電池的電量,當(dāng)蓄電池的電量過(guò)小時(shí),

57、可以通過(guò)控制PWM1,控制蓄電池是否停止放電。R3的阻值為5KΩ,R7的阻值為1 KΩ。R3和R7的作用是分壓和限流。圖4-5中的J1為USB接口,U1是LM7809,由于蓄電池的電壓大于5V。而系統(tǒng)是工作于5V的電源,所以控制系統(tǒng)的電源由蓄電池接一個(gè)5V穩(wěn)壓管LM7809。同時(shí)可以輸出穩(wěn)定的5V電源為手機(jī)等電器充電。C6和C8都是濾波電容,電容值都為0.01µF。開(kāi)關(guān)SW是系統(tǒng)的電源開(kāi)關(guān)。</p><p&

58、gt;  圖4-5放電控制模塊</p><p>  4.2.3單片機(jī)控制模塊</p><p>  STC89C52作為本系統(tǒng)的主要控制芯片,STC89C52控制系統(tǒng)的數(shù)據(jù)處理,控制AD轉(zhuǎn)換器,控制LCD的顯示,同時(shí)控制顯示狀態(tài)燈,控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),STC89C52是控制儀的核心。本節(jié)將介紹STC89C52的外圍電路,如圖4-6所示。</p><p>  圖4-6單

59、片機(jī)控制模塊</p><p>  電路圖中主要有單片機(jī)的復(fù)位電路和時(shí)鐘電路。復(fù)位電路由開(kāi)關(guān)S1、瓷片電容C9和電子R19組成。當(dāng)按下開(kāi)關(guān)S1時(shí),單片機(jī)的RST口輸入為高電平,則單片機(jī)就會(huì)復(fù)位,R19是限流電阻,C9的電容值為20µF。電阻R19的阻值為1kΩ。時(shí)鐘電路由晶振Y1和兩個(gè)22pF的瓷片電容組成。單片機(jī)的P0口接AD轉(zhuǎn)換出來(lái)的數(shù)據(jù)。P2.0是控制DS1的端口。當(dāng)P2.0為低電平時(shí),這DS1亮,

60、當(dāng)P2.0為高電平時(shí),則DS1滅;P2.1控制ADC0809的EOC管腳;P2.2是用來(lái)檢測(cè)A/D轉(zhuǎn)換器的OE,檢測(cè)A/D轉(zhuǎn)換器是否轉(zhuǎn)換結(jié)束;P2.3是接AD轉(zhuǎn)換器的CLK,AD轉(zhuǎn)換器的時(shí)鐘是有單片機(jī)用編程控制實(shí)現(xiàn)的;P2.4、P2.5、P2.6是AD轉(zhuǎn)換器的通道選擇控制位;P2.7口是AD轉(zhuǎn)換器的開(kāi)關(guān)控制位,當(dāng)將P2.7拉高一段可以使AD轉(zhuǎn)換器響應(yīng)的時(shí)間,則AD轉(zhuǎn)換器開(kāi)始轉(zhuǎn)換數(shù)據(jù);P0口是讀取AD轉(zhuǎn)換出來(lái)的數(shù)據(jù),并將這個(gè)數(shù)據(jù)儲(chǔ)存起來(lái)。

61、P1口低四位接步進(jìn)電機(jī)驅(qū)動(dòng)電路。P1.4和P1.5是輸出控制充放電的PWM信號(hào)。P3口是接LCD1602的八位數(shù)據(jù)引腳。DS1是顯示充電狀態(tài)的LED燈,當(dāng)開(kāi)始充電時(shí),則單片機(jī)控制LED亮,</p><p>  4.2.4 A/D轉(zhuǎn)換模塊</p><p>  ADC0809是一個(gè)8位逐次逼近式的模數(shù)轉(zhuǎn)換芯片,如圖4-7為A/D轉(zhuǎn)換模塊電路圖,本系統(tǒng)需要轉(zhuǎn)換4個(gè)模擬量,一個(gè)是太陽(yáng)能電池板的電壓

62、,一個(gè)是蓄電池的電池,還有兩個(gè)是光信號(hào)的電壓。這四個(gè)模擬量分別選用了通道0、通道1、通道2、通道3。ADC0809的時(shí)鐘信號(hào)由單片機(jī)的使用軟件產(chǎn)生,由單片機(jī)的P2.3輸出。ADC0809的數(shù)據(jù)輸出端口接入單片機(jī)的P0口。逐次逼近形就是將輸入的模擬變量和ADC0809的參考電壓比較,在ADC0809內(nèi)部有將參考電壓分壓成為n等分,輸入的模擬量如果大于參考電壓則輸出1.并在三態(tài)鎖存器里保存,當(dāng)都比較完之后就將EOC置1,這表示轉(zhuǎn)換已經(jīng)結(jié)束,

63、若果在OE口輸入高電平,則打開(kāi)三態(tài)鎖存器,將數(shù)據(jù)輸出。</p><p>  圖4-7 A/D轉(zhuǎn)換模塊</p><p>  4.2.5跟蹤光信號(hào)采集模塊</p><p>  光信號(hào)采集主要是由光敏電阻檢測(cè)光的強(qiáng)度,在太陽(yáng)能板的東西兩側(cè)各安裝一個(gè)光敏電阻,當(dāng)光沒(méi)有垂直照射到太陽(yáng)能板上的話(huà),東西兩側(cè)的光敏電阻的阻值則不一樣,只要通過(guò)檢測(cè)光敏電阻的電壓就可以判斷光線(xiàn)的方向。

64、如圖4-8是跟蹤光信號(hào)的電路圖[8]。P3和P4是控制器和檢測(cè)模塊的接口。如圖4-8所示R18和R17是精密滑動(dòng)變阻器,將兩個(gè)滑動(dòng)變阻器調(diào)為10kΩ,R14、R15為光敏電阻,光敏電阻的阻值根據(jù)光強(qiáng)的不同其變化范圍為1kΩ到17kΩ之間。兩個(gè)電阻的電壓送到ADC0809的通道2和通道3上。轉(zhuǎn)換為數(shù)字量時(shí)交給單片機(jī)處理,控制驅(qū)動(dòng)模塊驅(qū)動(dòng)電機(jī)跟蹤。根據(jù)光敏電阻的光照特性,當(dāng)光線(xiàn)照到光敏電阻上時(shí),光敏電阻的阻值會(huì)很小,當(dāng)沒(méi)有光照射時(shí),光敏電阻

65、的阻值就會(huì)很大,由此可以判斷光線(xiàn)的方向,這樣就可以控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)跟蹤,具體跟蹤控制程序第五章將詳細(xì)介紹。</p><p>  圖4-8跟蹤光信號(hào)采集模塊</p><p>  4.2.6步進(jìn)電機(jī)驅(qū)動(dòng)模塊</p><p>  本系統(tǒng)的步進(jìn)電機(jī)驅(qū)動(dòng)芯片選擇的是ULN2003,ULN2003是耐高壓大電流的達(dá)林頓晶體管陣列。具有電流增益高、工作電壓高、帶負(fù)載能力強(qiáng)等特點(diǎn)。

66、由于單片機(jī)輸出電流不夠大,所以要接上拉電阻才可以驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。當(dāng)輸入為低電平時(shí),ULN2003則輸出高電平。P4是步進(jìn)電機(jī)接口。步進(jìn)電機(jī)28BYJ-48的紅色線(xiàn)接到P4的管腳1。ULN2003的IN1到IN4分別接到單片機(jī)的P1口的低四位,由單片機(jī)控制輸出步進(jìn)電機(jī)的控制脈沖。如圖4-9是本系統(tǒng)的步進(jìn)電機(jī)驅(qū)動(dòng)模塊的電路原理圖[9]。</p><p>  圖4-9步進(jìn)電機(jī)驅(qū)動(dòng)模塊</p><p

67、>  4.2.7系統(tǒng)整體原理圖</p><p>  如圖4-10所示是本系統(tǒng)的整體原理圖。整體的原理圖是按照功能模塊來(lái)設(shè)計(jì)的,整個(gè)控制系統(tǒng)的原理圖包括單片機(jī)控制模塊、充放電控制模塊、A/D轉(zhuǎn)換模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、LCD顯示控制模塊、光信號(hào)采集模塊。每個(gè)模塊都有獨(dú)立的功能,但每個(gè)模塊都有聯(lián)系的。該系統(tǒng)以單片機(jī)為核心,單片機(jī)模塊負(fù)責(zé)其他模塊的控制信號(hào)的輸出。充放電控制模塊主要負(fù)責(zé)實(shí)現(xiàn)充放電的控制,單片機(jī)控制

68、模塊輸出的PWM是控制充放電模塊的,而單片機(jī)的數(shù)據(jù)是從A/D轉(zhuǎn)換模塊讀取的。光信號(hào)采集模塊采集的電壓是輸入到A/D轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字量的。LCD顯示控制模塊是有單片機(jī)控制的,顯示的數(shù)據(jù)也是A/D轉(zhuǎn)換出來(lái)的數(shù)字量。</p><p>  圖4-10系統(tǒng)的整體原理圖</p><p><b>  4.3本章小結(jié)</b></p><p>  本章主要介紹

69、了太陽(yáng)能的硬件模塊電路,分析了主要器件的原理,分析了單片機(jī)的原理、ADC0809的原理與管腳的功能,還有步進(jìn)電機(jī)28BYJ-48的原理,以及LCD1602的的顯示特性和管腳功能。本系統(tǒng)是分模塊設(shè)計(jì)的,本章詳細(xì)的介紹了各個(gè)模塊的原理和功能,本系統(tǒng)的主要模塊有單片機(jī)控制模塊、充放電控制模塊、A/D轉(zhuǎn)換控制模塊、光信號(hào)采集模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊。還詳細(xì)介紹了本系統(tǒng)各個(gè)模塊的信號(hào)流,和各個(gè)模塊的各個(gè)器件的作用。</p><p

70、>  第五章 系統(tǒng)軟件設(shè)計(jì)</p><p>  本系統(tǒng)的軟件設(shè)計(jì)主要分為系統(tǒng)初始化、A/D轉(zhuǎn)換程序、顯示程序、跟蹤控制程序、充放電控制程序。A/D轉(zhuǎn)換程序是本設(shè)計(jì)的重點(diǎn),如果A/D轉(zhuǎn)換程序不好的話(huà)就會(huì)影響本系統(tǒng)的準(zhǔn)確性,下面將是對(duì)每個(gè)單元模塊程序進(jìn)行詳細(xì)說(shuō)明。</p><p>  5.1系統(tǒng)主程序流程圖設(shè)計(jì)</p><p>  該系統(tǒng)的主程序整體流程圖如圖5-

71、1所示。</p><p><b>  圖5-1整體流程圖</b></p><p>  系統(tǒng)初始化程序主要是初始化單片機(jī)的數(shù)據(jù),和LCD的初始化顯示。跟蹤程序是檢測(cè)兩個(gè)光敏電阻的電壓,判斷光線(xiàn)的位置,然后控制步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。顯示程序是主要顯示蓄電池的電壓和天陽(yáng)能電池板的電壓,同時(shí)顯示兩個(gè)光敏電阻的電壓。控制充放電程序是根據(jù)天陽(yáng)能電池板的電壓和蓄電池的電壓,然后做出充電放電

72、的控制。</p><p>  /*-----主函數(shù)----*/</p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p><b>  init();</b></p><p><b>  while (1)&

73、lt;/b></p><p><b>  {</b></p><p>  AD(0);//轉(zhuǎn)換通道0的值</p><p>  AD0=AD_DATA[1];</p><p>  AD(1);//轉(zhuǎn)換通道1的值</p><p>  AD1=AD_DATA[2];</p

74、><p><b>  AD(2);</b></p><p>  AD2=AD_DATA[3];//轉(zhuǎn)換通道3的值</p><p><b>  AD(3);</b></p><p>  AD3=AD_DATA[4];//轉(zhuǎn)換通道4的值</p><p>  AZ0=AD0*3.23;

75、//計(jì)算太陽(yáng)能板電壓的真實(shí)值</p><p>  AZ1=AD1*1.68;//計(jì)算蓄電池電壓的真實(shí)值</p><p>  write_rs(2,AZ0); //顯示通道0的值</p><p>  delay(20);</p><p>  write_xs(11,AZ1); //顯示通道1的值</p><p>

76、  delay(20);</p><p>  write_ysfm(2,AD2); //顯示通道2的值</p><p>  delay(10);</p><p>  write_ysfm(11,AD3); //顯示通道3的值</p><p><b>  k=0;</b></p><p>  //

77、AD0=150;</p><p>  // AD1=195;</p><p>  if(AD1<=150) //放電控制,當(dāng)蓄電池的電壓小于設(shè)定值則停止放電</p><p><b>  {</b></p><p><b>  k=1;</b></p><p><b

78、>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  k=0;</b></p><p><b>  } </b></p><p> 

79、 if(AD0>90) //充放電控制</p><p><b>  {</b></p><p>  if(AD1>=215) //如果電池電壓高于7V則停止充電</p><p><b>  {</b></p><p>  g=0;//控制停止充電</p><p&

80、gt;<b>  TR1=0;</b></p><p>  LED=1;//關(guān)掉充電顯示燈</p><p><b>  }</b></p><p>  else if(AD1>200) //如果電池的電壓在6.8V到7V之間則開(kāi)始浮充</p><p><b>  {</b&g

81、t;</p><p>  TR1=1;//定時(shí)器1開(kāi)始運(yùn)行</p><p>  LED=0;//開(kāi)顯示充電燈</p><p>  g=1;//開(kāi)啟充電</p><p><b>  }</b></p><p>  else if(AD1<=200) //如果電池電壓低于6.0V則開(kāi)

82、始快速充電</p><p><b>  {</b></p><p>  g=1;//開(kāi)始快速充電</p><p>  TR1=0;// 關(guān)閉定時(shí)器1</p><p>  LED=0;// 開(kāi)顯示充電燈</p><p><b>  } </b></p>

83、<p><b>  } </b></p><p>  elseif(AD0<=90) //如果太陽(yáng)能板電壓低于6.5V則停止充電</p><p><b>  {</b></p><p><b>  g=1;</b></p><p><b&g

84、t;  TR1=0;</b></p><p><b>  LED=1;</b></p><p><b>  } </b></p><p>  if(AD2>AD3) //跟蹤控制</p><p><b>  {</b></p><p

85、>  aa=AD2-AD3 ;</p><p><b>  if(aa>15)</b></p><p><b>  {</b></p><p>  R_Rotation(aa);</p><p>  delay(10) ;</p><p>  P1=P1&

86、 0xf0;</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  aa=AD3-AD2;</p><p><b>  if(aa>15)<

87、;/b></p><p><b>  {</b></p><p>  L_Rotation(aa);</p><p>  P1=P1&0xf0; </p><p>  delay(10) ;</p><p><b>  } </b></p>&

88、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  5.2子程序的設(shè)計(jì)</b></p><p>  5.2.1A/D轉(zhuǎn)換程序</p><p>  A/D轉(zhuǎn)換程序,主要是將控制A/D轉(zhuǎn)換,采集需要的數(shù)據(jù),以及處理數(shù)據(jù),其程序

89、流程圖如圖5-2所示。先是初始化,A/D轉(zhuǎn)換子程序的輸入值m是通道的選擇,輸入0時(shí),則選擇通道0,輸入m為1時(shí),則選擇了通道1,然后將STA1拉高,開(kāi)始轉(zhuǎn)換,然后檢查EOC是否輸出高,若果EOC輸出高,則表示轉(zhuǎn)換已經(jīng)結(jié)束,再將OE拉高,則允許ADC0809將轉(zhuǎn)換的數(shù)據(jù)輸出,然后單片機(jī)的P0口將數(shù)據(jù)讀走,保存在AD_DATA[m]里面。</p><p>  void AD(uchar m) //A/D轉(zhuǎn)換函數(shù)&

90、lt;/p><p><b>  {</b></p><p><b>  STA1=0;</b></p><p>  delay(20);</p><p>  if(m==0) //選擇通道</p><p><b>  { </b></p>

91、<p><b>  ADA=0;</b></p><p><b>  ADB=0;</b></p><p><b>  ADC=0;</b></p><p><b>  }</b></p><p>  else if(m==1)</p&g

92、t;<p>  { </p><p>  ADA=1; </p><p><b>  AD

93、B=0;</b></p><p><b>  ADC=0;</b></p><p><b>  }</b></p><p>  else if(m==2)</p><p><b>  {</b></p><p>  圖5-2 A/D轉(zhuǎn)換程

94、序流程圖</p><p><b>  ADA=0;</b></p><p><b>  ADB=1;</b></p><p><b>  ADC=0;</b></p><p><b>  }</b></p><p>  else

95、 if(m==3)</p><p><b>  {</b></p><p><b>  ADA=1;</b></p><p><b>  ADB=1;</b></p><p><b>  ADC=0;</b></p><p>&

96、lt;b>  }</b></p><p>  STA1=1;//開(kāi)始轉(zhuǎn)換</p><p>  delay(20);</p><p><b>  STA1=0;</b></p><p>  while (EOC==0);//等待轉(zhuǎn)換結(jié)束信號(hào)</p><p><b>

97、;  delay(2);</b></p><p>  AD0E=1;//允許數(shù)據(jù)輸出</p><p>  AD_DATA[m+1]=P0;</p><p>  delay(20);</p><p><b>  AD0E=0;</b></p><p><b>  }</b

98、></p><p><b>  5.2.2顯示程序</b></p><p>  顯示函數(shù)主要負(fù)責(zé)控制LCD1602,控制LCD顯示太陽(yáng)能電池板的電壓和蓄電池的電壓,還有兩個(gè)光敏電阻的電壓。顯示函數(shù)可也讓用戶(hù)清晰的直到充電的狀態(tài),和太陽(yáng)能電池板、蓄電池的狀態(tài)。顯示函數(shù)是先處理有A/D轉(zhuǎn)換出來(lái)的數(shù)據(jù),計(jì)算出要顯示的真實(shí),再調(diào)用LCD寫(xiě)數(shù)據(jù)函數(shù),將數(shù)據(jù)寫(xiě)入LCD顯示。

99、</p><p>  void write_com(uchar com)//lcd寫(xiě)指令函數(shù)</p><p><b>  {</b></p><p><b>  lcdrs=0;</b></p><p><b>  P3=com;</b></p><p&g

100、t;<b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }<

101、/b></p><p>  void write_data(uchar date)//lcd寫(xiě)數(shù)據(jù)函數(shù) </p><p><b>  {</b></p><p><b>  lcdrs=1;</b></p><p><b>  P3=date;&l

102、t;/b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p>

103、<p><b>  }</b></p><p>  void write_ysfm(uchar add,uchar date)//lcd定位寫(xiě)數(shù)據(jù)函數(shù)(第一行)</p><p><b>  {</b></p><p>  uchar bai,shi,ge;</p><p>  add

104、ate=1.9607*date; //計(jì)算電壓真實(shí)值</p><p>  bai=addate/100;//取出個(gè)位數(shù)</p><p>  shi=addate/10%10; //取出分位數(shù)</p><p>  ge=addate%10 ; //取出十分位數(shù)</p><p>  write_com(0x80+add); //寫(xiě)指令函數(shù),將

105、指針指到第一行第一位</p><p>  write_data(0x30+bai); //顯示出個(gè)位數(shù)</p><p>  write_data(0x2e); //顯示小數(shù)點(diǎn)</p><p>  write_data(0x30+shi); //顯示出分位數(shù)</p><p>  write_data(0x30+ge); //顯示出十分位數(shù)<

106、;/p><p><b>  }</b></p><p>  void write_sfm(uchar add,uchar date)//lcd定位寫(xiě)數(shù)據(jù)函數(shù)(第二行)</p><p><b>  {</b></p><p>  uchar bai,shi,ge;</p><p>

107、;  addate=1.9607*date; //計(jì)算電壓真實(shí)值</p><p>  bai=addate/100;</p><p>  shi=addate/10%10;</p><p>  ge=addate%10 ;</p><p>  write_com(0x80+0x40+add);</p><p>  

108、write_data(0x30+bai);</p><p>  write_data(0x2e);</p><p>  write_data(0x30+shi);</p><p>  write_data(0x30+ge);</p><p><b>  }</b></p><p><b>

109、;  5.2.3跟蹤程序</b></p><p>  跟蹤程序主要根據(jù)兩個(gè)光敏電阻的電壓進(jìn)行控制,計(jì)算ADC0809轉(zhuǎn)換出來(lái)的光敏電阻的電壓,比較兩個(gè)電壓,若果左邊的光敏電阻的電壓高的話(huà),則可以知道太陽(yáng)在電池板的右邊,因?yàn)楣饷綦娮璧淖柚翟谟泄饩€(xiàn)照射時(shí)會(huì)變得很小,所以電壓也會(huì)很小。然后可以控制步進(jìn)電機(jī)向右轉(zhuǎn)。直到對(duì)準(zhǔn)太陽(yáng)光線(xiàn)。其程序流程圖如圖5-3所示。</p><p>  vo

110、id L_Rotation(uchar k) //步進(jìn)電機(jī)正轉(zhuǎn) (4拍)</p><p><b>  {</b></p><p>  uchar i,n;</p><p>  for(n=0;n<k;n++)</p><p><b>  {</b></p><p> 

111、 for(i=0;i<4;i++)</p><p><b>  {</b></p><p>  temp=B_Rotation[i] ;</p><p>  P1=(P1|0x0F)& temp;</p><p>  delay(60);</p><p><b>  }&

112、lt;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void R_Rotation(uchar k) //步進(jìn)電機(jī)反轉(zhuǎn) (4拍)</p><p><b>  {</b></p><p>

113、;  uchar i,n;</p><p>  for(n=0;n<k;n++)</p><p><b>  {</b></p><p>  圖5-3 跟蹤程序流程圖</p><p>  for(i=0;i<4;i++)</p><p><b>  {</b>&

114、lt;/p><p>  temp=F_Rotation[i] ;</p><p>  P1=(P1|0x0F)& temp;</p><p>  delay(60);</p><p><b>  }</b></p><p><b>  }</b></p>&

115、lt;p><b>  }</b></p><p>  if(AD2>AD3)//跟蹤控制步進(jìn)電機(jī)左轉(zhuǎn)</p><p><b>  {</b></p><p>  aa=AD2-AD3 ;</p><p>  if(aa>15)//設(shè)定允許光強(qiáng)差</p><p&

116、gt;<b>  {</b></p><p>  R_Rotation(aa);//控制步進(jìn)電機(jī)左轉(zhuǎn)</p><p>  delay(10) ;</p><p>  P1=P1& 0xf0;</p><p><b>  }</b></p><p><b>

117、;  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  aa=AD3-AD2;</p><p><b>  if(aa>15)</b></p><p><b&g

118、t;  {</b></p><p>  L_Rotation(aa);//控制步進(jìn)電機(jī)右轉(zhuǎn)</p><p>  P1=P1&0xf0; </p><p>  delay(10) ;</p><p><b>  } </b></p><p><b>  }</

119、b></p><p>  5.2.4充放電控制程序</p><p>  充放電控制是通過(guò)分析計(jì)算ADC0809轉(zhuǎn)換出來(lái)的數(shù)據(jù),檢測(cè)太陽(yáng)能電池板的電壓,如果可以為蓄電池充電,則判斷蓄電池是否需要充電,然后進(jìn)行充電控制,充電控制主要控制P1.4口的輸出。當(dāng)P1.4輸出為高電平時(shí),則是開(kāi)始快速充電,如果P1.4輸出為脈沖一定頻率的PWM信號(hào),則是開(kāi)始浮充狀態(tài)。當(dāng)P1.4輸出為低電平時(shí),則是

120、停止充電。放電控制程序則是判斷蓄電池的電壓,如果蓄電池的電壓小于某設(shè)定值,則控制P1.5輸出低電平,停止放電。若果高壓設(shè)定值,這控制P1.5輸出高電平,允許放電。充電控制是先判斷太陽(yáng)能的電壓,若果高壓蓄電池電壓,這判斷蓄電池的電壓若果蓄電池是滿(mǎn)的則執(zhí)行停止充電,否則,判斷蓄電池的電壓是不是在6.8V~7.0V之間,則執(zhí)行浮充。否則開(kāi)始快速充電。程序控制簡(jiǎn)單。其程序框圖如圖5-4所示。V1為蓄電池電壓,V2為太陽(yáng)能電池板電壓。</p

121、><p>  if(AD1<=150)//放電控制</p><p><b>  {</b></p><p>  k=0;//停止對(duì)外放電</p><p><b>  }</b></p><p><b>  else</b></p><

122、;p><b>  {</b></p><p>  k=1;//允許對(duì)外放電</p><p><b>  } </b></p><p>  if(AD0>90) //充電控制</p><p><b>  {</b></p><p> 

123、 if(AD1>=215) //如果電池電壓高于7V則停止充電</p><p><b>  {</b></p><p><b>  g=0;</b></p><p><b>  TR1=0;</b></p><p><b>  LED=1;</b>

124、;</p><p><b>  }</b></p><p>  else if(AD1>200) //如果電池的電壓在6.8V到7V之間則開(kāi)始浮充</p><p><b>  {</b></p><p>  `TR1=1;//定時(shí)器1開(kāi)始運(yùn)行</p><p>

125、<b>  LED=0;</b></p><p><b>  }</b></p><p>  else if(AD1<=200) //如果電池電壓低于6.8V則開(kāi)始快速充電</p><p><b>  {</b></p><p>  g=1;//開(kāi)始快速充電&l

126、t;/p><p><b>  TR1=0;</b></p><p><b>  LED=0;</b></p><p><b>  } </b></p><p>  elseif(AD0<=90) //如果太陽(yáng)能板電壓低于7V則停止充電</p>

127、<p><b>  {</b></p><p><b>  g=1;</b></p><p><b>  TR1=0;</b></p><p><b>  LED=1;</b></p><p><b>  } </b>&

128、lt;/p><p>  void timer1() interrupt 3 //產(chǎn)生充電控制的PWM</p><p><b>  {</b></p><p>  圖5-4充放電控制程序流程圖</p><p>  TH1=(65536-50000)/256;</p><p>  TL1=(655

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論