版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 為實現對太陽光的自動跟蹤,最大化的利用太陽能,本課題實現了以單片機為核心處理器的太陽能控制儀,該控制儀可根據太陽轉動的規(guī)律以及太陽能電池板的原理實現自動跟蹤太陽光和控制充電放電。太陽能智能控制儀可以自動檢測蓄電池的電壓,當蓄電池的電量低于30%時,太陽能智能控制儀會控制蓄電池停止對外放電。該系統(tǒng)主要以單片機STC89C52、
2、ADC0809、步進電機28BYJ-48、光敏電阻等為核心,使用PWM信號控制充放電,有效的防止過充,延長蓄電池的使用壽命。使用光敏電阻檢測光的方向,原理簡單,使用方便,具有很大的實用價值。</p><p> 關鍵詞: 太陽能跟蹤;單片機;智能充放電</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設計目標2</b></p><p><b> 1.4本章小結2</b></p><p> 第二章 系統(tǒng)總體設計3</p><p> 2.1系統(tǒng)的工作原理3</p><p> 2.2系統(tǒng)的硬件組成3</p><
8、p><b> 2.3本章小結4</b></p><p> 第三章 系統(tǒng)方案論證5</p><p> 3.1模塊方案比較5</p><p> 3.1.1跟蹤方案的選擇5</p><p> 3.1.2電機的選擇5</p><p> 3.1.3太陽能板的選擇5</p&
9、gt;<p> 3.1.4顯示模塊的方案選擇6</p><p><b> 3.2本章小結6</b></p><p> 第四章 系統(tǒng)硬件設計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步進電機28BYJ-489</p><p> 4.2 電路硬件的設計9</p><p> 4.2.1充電控制模塊9</p><p> 4.2.2放電控制模塊10</p><p>
11、; 4.2.3單片機控制模塊11</p><p> 4.2.4 A/D轉換模塊12</p><p> 4.2.5跟蹤光信號采集模塊13</p><p> 4.2.6步進電機驅動模塊13</p><p> 4.2.7系統(tǒng)整體原理圖14</p><p> 4.3本章小結16</p>&
12、lt;p> 第五章 系統(tǒng)軟件設計17</p><p> 5.1系統(tǒng)主程序流程圖設計17</p><p> 5.2子程序的設計20</p><p> 5.2.1A/D轉換程序20</p><p> 5.2.2顯示程序21</p><p> 5.2.3跟蹤程序22</p><
13、;p> 5.2.4充放電控制程序24</p><p> 5.3本章小結26</p><p> 第六章 系統(tǒng)安裝調試27</p><p> 6.1整體系統(tǒng)調試27</p><p> 6.2 硬件的調試27</p><p> 6.3 軟件調試28</p><p> 6
14、.4本章小結29</p><p> 第七章 總結與展望30</p><p><b> 7.1 總結30</b></p><p><b> 7.2 展望30</b></p><p><b> 參考文獻31</b></p><p><
15、b> 致 謝32</b></p><p><b> 附 錄33</b></p><p> 附錄1 控制儀的硬件實物圖33</p><p> 附錄2 控制儀的PCB圖33</p><p> 附錄3 系統(tǒng)的實物圖34</p><p> 第一章 緒
16、論</p><p> 本課題主要設計一種基于單片機的太陽能智能控制系統(tǒng),主要介紹該系統(tǒng)如何采集光信號,控制步進電機跟蹤太陽,以及采集太陽能電池板和蓄電池的電壓,如何使用PWM控制充放電的。</p><p> 1.1系統(tǒng)的研究背景</p><p> 面對日益枯竭的化石能源,尋找一種代替化石能源的綠色能源日益緊迫。而太陽能是一次能源,對環(huán)境無污染,還是可再生能源。
17、因此發(fā)展太陽能,是解決能源問題的出路。隨著光伏技術的發(fā)展,現在光伏器件逐漸降價以及逐漸普及,個人太陽能電站聯網已經不再是夢想。</p><p> 我國是一個能源消費大國,但我國的能源消費結構很不平衡,我國能源主要依賴煤炭和石油等常規(guī)能源。但是這些能源是不可再生能源,是會枯竭的。世界經濟的現代化,也是得益于化石能源,如石油、天然氣、煤炭與核裂變能的廣泛的投入應用。因而它是建筑在化石能源基礎之上的一種經濟[1]。但
18、隨著這些化石能源的日益枯竭,必將導致世界經濟危機。所以在化石能源供應日益緊張的背景下,如何開發(fā)和利用可再生能源成為各國能源戰(zhàn)略中的重要組成部分。而太陽能是重要的清潔能源之一,它具有取之不盡、用之不竭、無污染等特點。只要有太陽光的地方,就可以直接開放和利用太陽能,沒有地域的限制。不需運輸,無需開采。它是最清潔的能源之一。在當今社會污染越來越嚴重的今天,無污染性,顯得特別重要。</p><p> 我國的太陽能資源非
19、常豐富,全國各地的太陽能輻射總量高達837kJ/cm2。特別是青藏高原地區(qū),該地區(qū)空氣稀薄,日照時間長,太陽能源非常豐富,如果可以利用好這些能源就,將會給當地帶來新的發(fā)展機遇。也對當地的環(huán)境提供更好的保護[2]。</p><p> 所以,如何開發(fā)使用這么豐富的太陽能資源,是當今能源開發(fā)的重任,是保護環(huán)境的重要途徑,是可持續(xù)發(fā)展的重要途徑。</p><p> 1.2 系統(tǒng)的研究意義<
20、;/p><p> 隨著太陽能技術的發(fā)展,開發(fā)個人太陽能發(fā)電站已經不再是夢想,有效的利用太陽能資源,不但可以緩解當今的能源緊張,還可以保護環(huán)境。</p><p> 太陽能智能控制儀,實現自動跟蹤太陽最大功率點,實現提高光電轉換效率,系統(tǒng)成本低,可以應用在航天航空上,也可以應用在太陽能發(fā)電站上,也可以應用在太陽能路燈上。</p><p> 太陽能智能控制儀的主要功能是
21、控制太陽能板自動跟蹤太陽光,使太陽能板始終保持與太陽光垂直,只有太陽光與太陽能板垂直,太陽能板轉換的效率才是最高的,同時太陽能智能控制儀控制充放電,只有太陽能板輸出電壓大于蓄電池的電壓才開始充電,同時檢測蓄電池的電壓。當蓄電池滿時,太陽能智能控制儀會自動停止充電。智能的控制跟蹤、充放電。使光電轉換效率最高。同時延長蓄電池的使用壽命。</p><p><b> 1.3設計目標 </b><
22、;/p><p> 本課題的設計目標:可實現對太陽光線的實時跟蹤;可供普通的手機電池充電,輸出電壓4V左右;輸出電流300mA-400mA;要求充電時間小于2小時要有相應的保護裝置以防電池被過充;放電過程中若電池容量小于總容量的30%時,放電終止,保證電池不會因為過放電而損壞;系統(tǒng)損耗盡量降低以延長電池的使用壽命。</p><p><b> 1.4本章小結</b><
23、;/p><p> 本文的第一章主要對太陽能智能控制器作了簡單的概述,本文介紹了太陽能智能控制系統(tǒng)的工作原理,接著第三章主要介紹了太陽能智能控制器的設計方案選擇,然后是主要控制芯片的介紹,接著介紹太陽能智能控制器的硬件設計,太陽能智能控制儀的軟件設計部分,第六章介紹系統(tǒng)的安裝以及調試,最后是總結部分,并提出這個系統(tǒng)的新看法以及展望。</p><p> 第二章 系統(tǒng)總體設計</p>
24、<p> 2.1系統(tǒng)的工作原理</p><p> 基于單片機的太陽能智能控制儀的工作原理是:本系統(tǒng)是用一個單片機來自動控制跟蹤太陽光,同時控制充放電。當檢測到太陽能板不與太陽光線垂直時,就會控制步進電機轉動,使太陽能板始終保持與太陽光線垂直。當檢測太陽能板的電壓達到可以為蓄電池充電的電壓時同時檢測蓄電池的電壓是否低于設定值時,若兩者都滿足就控制開始快速充電,當檢測到蓄電池的電壓差不多達到飽和值時
25、,就開始控制充電方式為浮充。這樣提高蓄電池的壽命,同時提高太陽能板的轉換效率。</p><p> 具體功能設計要求如下:</p><p> ?。?)實現對太陽光線的實時跟蹤。</p><p> ?。?)實現智能控制蓄電池的最優(yōu)充放電。</p><p> ?。?)實現充電狀態(tài)的顯示,與蓄電池狀態(tài)的顯示。</p><p>
26、; ?。?)實現穩(wěn)定的太陽能電源輸出,可以為外設備提供電源(5V)。</p><p> 2.2系統(tǒng)的硬件組成</p><p> 太陽能智能控制儀的硬件組成:系統(tǒng)的信號采集電路主要是使用電阻分壓方式采集,采集到適合ADC0809轉換的電壓。再交給ADC0809進行模數轉換,再給單片機處理,然后單片機做出控制,控制顯示部分、步進電機驅動電路和充放電路。系統(tǒng)總體設計方案如圖2-1所示。<
27、;/p><p> 圖2-1 系統(tǒng)的硬件組成</p><p> 系統(tǒng)主要由STC89C51單片機、ADC0809、步進電機驅動芯片ULN2003A、開關芯片IRF9540N、穩(wěn)壓芯片7805等器件組成。單片機主要完成控制ADC0809、ULN2003和IRF9540。系統(tǒng)有以功能模塊:</p><p><b> 充放電控制模塊;</b><
28、;/p><p><b> 單片機控制模塊;</b></p><p><b> 步進電機驅動模塊;</b></p><p><b> LCD顯示模塊;</b></p><p><b> A/D轉換模塊;</b></p><p>
29、 跟蹤光信號采集模塊;</p><p><b> 2.3本章小結</b></p><p> 本章對系統(tǒng)設計的工作原理和結構作了簡單的介紹,本系統(tǒng)主要有單片機控制模塊、步進電機驅動模塊、A/D轉換模塊、光電采集模塊、LCD顯示模塊。單片機模塊主要負責處理數據,并控制其他模塊,是系統(tǒng)的控制中心。A/D模塊負責將模擬數據轉換為數字數據,因單片機只能處理數字數據。本章主要
30、簡單介紹了系統(tǒng)的總體設計。</p><p> 第三章 系統(tǒng)方案論證</p><p> 本系統(tǒng)需要實現的功能有:實現自動跟蹤太陽光,實現自動控制充放電,實現對外輸出穩(wěn)定電源,實現實時顯示充電狀態(tài)和蓄電池的電量,但隨著電子技術的高速發(fā)展,各種控制器技術也日益完善,控制芯片已經加速換代,由此需要討論跟蹤方案、控制方案、電機的選擇。以下是本系統(tǒng)的方案選擇。</p><p&g
31、t; 3.1模塊方案比較 </p><p> 3.1.1跟蹤方案的選擇</p><p> 方案一:視日運動軌跡跟蹤</p><p> 由于地球繞太陽轉動是有規(guī)律的,所以太陽的位置是可以預測的,只要計算好每時每刻太陽的位置,就可以控制跟蹤。但算法十分復雜,所以控制系統(tǒng)的成本也很高,而且沒有反饋,初始校準麻煩。</p><p><
32、b> 方案二:光電跟蹤</b></p><p> 在太陽能板安裝兩個光敏電阻,檢測兩個光敏電阻的電阻值,就可判斷光線的方向。這種跟蹤方式原理簡單,成本低,具有實時反饋,可以控制實時跟蹤。而且誤差小。</p><p> 方案選擇:根據兩種方案,方案一控制系統(tǒng)復雜,算法復雜,成本高,而方案二實現實時跟蹤,成本低,精度高,所以本系統(tǒng)采用方案二光電跟蹤。</p>
33、<p> 3.1.2電機的選擇</p><p><b> 方案一:直流電機</b></p><p> 直流電機就是輸入為直流信號就可以控制電機轉動的,實現了直流電能轉換為機械能。直流電機具有調速特性好,能實現頻發(fā)制動和逆向旋轉,過載能力強。</p><p><b> 方案二:步進電機</b></
34、p><p> 步進電機是將電脈沖信號轉化為角位移的,當步進電機就收到一個脈沖,它就驅動步進電機轉動一個固定的角度。所以通過控制脈沖個數和頻率就可以控制步進電機轉動的角度和速度。所以步進電機具有準確定位的能力,同時可以準確的控制速度。步進電機在自動控制上和機器人上應用非常廣泛。</p><p> 方案選擇:本系統(tǒng)需要實現準確跟蹤太陽位置,根據直流電機和步進電機的特點,本方案選擇使用步進電機。
35、</p><p> 3.1.3太陽能板的選擇</p><p> 方案一: 單晶硅太陽能板</p><p> 單晶硅太陽能板時采用轉換效率比較高的單晶硅電池片按照需求串、并陣列方式構成的板塊。使用壽命長,轉換效率高,可以應用在交通領域、衛(wèi)星、航天器上。但是其制作成本比較高,價格也比較高。</p><p> 方案二:多晶硅太陽能板<
36、/p><p> 多晶硅太陽能板時使用多晶硅電池片串并聯出不同功率的太陽能板。制作成本低,市場價格便宜,可以應用在小型太陽能電源。但是其轉換效率不是很高,壽命不長。</p><p> 方案選擇:根據設計要求,設計成本不能太高,本設計選用價格比較低的多晶硅太陽能板。</p><p> 3.1.4顯示模塊的方案選擇</p><p><b&g
37、t; 方案一:數碼管顯示</b></p><p> 一個數碼管有八個小LED發(fā)光二極管,通過控制不同的LED發(fā)光二極管的亮滅來顯示不同的字形。價格便宜,但可以顯示的內容少,軟件編寫繁瑣,硬件設計比較復雜。</p><p><b> 方案二:LCD顯示</b></p><p> LCD1602顯示可以同時顯示16×0
38、2個字符,顯示字母和數字非常方便,控制也很簡單,成本不高,顯示質量高,體積小,重量輕,功耗低。</p><p> 方案選擇:根據設計要求,本設計要求要顯示四個電壓值,顯示量大,如果使用數碼管顯示的話,就需要很多接口控制,且設計硬件很繁瑣,軟件編寫也很麻煩。而LCD1602可以同時顯示16×02個字符,顯示量足夠,且設計簡單,軟件編寫也很簡單,所以選擇方案二LCD顯示。</p><p
39、><b> 3.2本章小結</b></p><p> 本章對系統(tǒng)的設計方案作了簡單的論證,并結合實際情況,對跟蹤方案、電機方案、太陽能板方案、顯示方案做出了論證分析,結合實際需求,做出了合理的方案選擇。具體的硬件設計將在第四章詳細講解。</p><p> 第四章 系統(tǒng)硬件設計</p><p> 本系統(tǒng)主要以單片機為處理器,單片機
40、的外圍電路有A/D轉換電路、步進電機驅動電路,LCD顯示電路等。接下來將詳細介紹各個器件和電路的原理。</p><p> 4.1 主要芯片介紹</p><p> 4.1.1 STC89C52</p><p> STC89C52是屬于STC公司最新推出的STC系列的單片機,具有反復擦寫程序的能力,且兼容MCS-51指令系統(tǒng), STC89C52是一種低功耗、高性能
41、的微控制器,在眾多嵌入式控制應用系統(tǒng)中提供靈活有效的解決方案[3]。其引腳圖如圖4-1所示。</p><p> STC89C52主要性能參數:</p><p> 1、8k字節(jié)Flash;</p><p> 2、512字節(jié)RAM;</p><p> 3、32位I/O口線;</p><p><b> 4
42、、看門狗定時器;</b></p><p> 5、MAX810復位電路;</p><p> 6、3個16位定時器/計數器;</p><p><b> 7、4個外部中斷;</b></p><p><b> 8、全雙工串行口;</b></p><p> 圖4-
43、1 STC89C52單片機引腳</p><p> STC89C52具有32位I/O端口,兩個外部中斷,3個16位可設定的計數器,它有40個引腳,按功能分大致可以分為4類,分別為電源、時鐘、控制、I/O口等四類[4]。以下就按這四類功能對STC89C52進行管腳分析。</p><p><b> 電源管腳</b></p><p> (1)VC
44、C:接5V電源正極。</p><p> ?。?)GND:接電源地線。</p><p><b> 2、時鐘管腳</b></p><p> (1)X1:內部振蕩電路的輸入端。</p><p> (2)X2:內部振蕩電路的輸出端。</p><p><b> 3、輸入/輸出口</b
45、></p><p> STC89C52有4組8位并行的輸入/輸出口,分別為P0、P1、P2、P3。</p><p> ?。?)P0口:8位雙向并行I/O接口。當P0口作為輸入/輸出口時,P0口是漏極開路輸出,當驅動拉電流負載時,需要外接上拉電阻。</p><p> ?。?)P1口:8位準雙向并行I/O接口。P1口是純粹的輸入/輸出口,沒有其他的第二功能。&
46、lt;/p><p> (3)P2口:8位準雙向并行I/O接口,可以作為輸入/輸出口,也可以作為地址總線。</p><p> (4)P3口:P3口是一個多功能口,除了可以作為輸入/輸出口外,還有第二功能。</p><p> 4.1.2 ADC0809</p><p> ADC0809是一個8位逐次逼近式的模數轉換芯片,它是由美國國家半導體公
47、司生產的,是CMOS器件,多路開關可以選擇8個模擬通道,允許8路模擬量輸入,ADC0809的轉換時間為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位數據輸出端。</p><p> ADDA、ADDB、ADDC:模擬通道選擇端,地址信號和通道選擇的關系如表4-1。</p><p> 表4-1地址信號與通道選擇的關系</p><p> 4.1.3 LCD1602</p><p> LCD160
49、2顯示模塊是專門用于顯示字母和數字的LCD陣列。LCD1602可以顯示兩行,每一行可以顯示16個字符。</p><p> 圖4-3 LCD1602管腳圖</p><p> LCD1602采用的是16腳接口,各引腳功能說明如下表4-2。</p><p> 表4-2 LCD1602管腳說明表 </p><p> 4.1.4步進電機28BY
50、J-48</p><p> 28BYJ-48是一種將脈沖信號轉換為角位移的機器,28BYJ-48是四相8拍電機,輸入電壓可以為5V-12V,四相步進電機的通電方式有單四拍和雙四拍之分,單四拍是(A-B-C-D-A),雙四拍的是(AB-BC-CD-DA-AB)[6]。</p><p> 4.2 電路硬件的設計</p><p> 本系統(tǒng)分為六個模塊,分別為充放電控
51、制模塊、單片機控制模塊、步進電機驅動模塊、AD轉換模塊、光電采集模塊和LCD顯示模塊。下文將會對各個模塊進行詳細介紹。</p><p> 4.2.1充電控制模塊</p><p> 充放電控制模塊的原理電路圖如圖4-4所示。</p><p> 圖4-4充電控制模塊</p><p> 如圖所示,J2為太陽能電池板接入端子,太陽電池板的峰峰
52、值為11V,功率為2.5W。該系統(tǒng)主要工作在5V電壓下,蓄電池的電壓為6.5V左右。所以5V電壓可由蓄電池P2接一個LM7805穩(wěn)壓管,輸出為5.0V。同時可以作為本系統(tǒng)的輸出。</p><p> 由上所述,J2接入太陽能電池板,P2接入蓄電池,充電回路則是D2→Q1→ D1→P2→丄。其中D2是防回充二極管,使用型號是1N4007。Q1是MOS管IRF9540。</p><p> 充
53、電控制的核心是控制MOS管。而三極管Q3、R1、R5、R21構成的電路是實現控制MOS管的。控制系統(tǒng)產生的PWM0控制信號接入NPN型三極管Q3的基極上。當PWM0信號輸出為高電平時,可以知道三極管處于導通狀態(tài),所以MOS管的IRF9540的門極為低電平,MOS管處于導通狀態(tài),充電回路就處于導通狀態(tài),蓄電池則處于充電狀態(tài)。當PWM0輸出為低電平時,三極管處于截止狀態(tài),MOS管Q1的源極和門極的電壓相等,則MOS管處于截止狀態(tài),所以充電回
54、路處于斷開狀態(tài)。</p><p> 本系統(tǒng)可以控制PWM0改變充電狀態(tài),當PWM0一直為高電平時為快速充電狀態(tài);當PWM0為一定頻率的脈沖信號,則此時為浮充狀態(tài),從而有效的保護電池,延長蓄電池的壽命。圖4-3中,R2、R20與太陽能構成的回路是太陽能電源采集電路,由于太陽能的電壓不能直接給A/D轉換,所以要一個分壓電路,使R20的電壓在0~5V之間,R20的電阻為10KΩ,R2的阻值為22KΩ,R20的電壓接入
55、ADC0809的通道0上,通過轉換得到R20的電壓,就可以計算出太陽能電池的電壓。R4、R8與蓄電池構成的路是蓄電池電壓采集電路,R4的電阻為6.8KΩ,R8的阻值為10KΩ,R8的電壓接入ADC0809的通道1上。通過轉換得到R8的電壓,就可以計算出蓄電池的電壓。通過檢測太陽能的電壓和蓄電池的電壓,實現對充放電狀態(tài)的控制,圖4-3中的J1為USB接口,可以輸出穩(wěn)定的5V電源為手機等電器充電[7]。</p><p&g
56、t; 4.2.2放電控制模塊</p><p> 放電控制部分的原理和充電控制的原理一樣的,如圖4-5所示,放電控制主要由Q2、Q4、R3、R7、R22構成的電路組成。當PWM1為高電平時,則三極管Q4導通,Q2的門極則為低電平,MOS管Q2則導通,則系統(tǒng)可以對外放電,當PWM1為低電平時,三極管Q4不導通,則Q2的門極為高電平,MOS管Q2截止,系統(tǒng)停止對外止放電。通過檢測蓄電池的電量,當蓄電池的電量過小時,
57、可以通過控制PWM1,控制蓄電池是否停止放電。R3的阻值為5KΩ,R7的阻值為1 KΩ。R3和R7的作用是分壓和限流。圖4-5中的J1為USB接口,U1是LM7809,由于蓄電池的電壓大于5V。而系統(tǒng)是工作于5V的電源,所以控制系統(tǒng)的電源由蓄電池接一個5V穩(wěn)壓管LM7809。同時可以輸出穩(wěn)定的5V電源為手機等電器充電。C6和C8都是濾波電容,電容值都為0.01µF。開關SW是系統(tǒng)的電源開關。</p><p&
58、gt; 圖4-5放電控制模塊</p><p> 4.2.3單片機控制模塊</p><p> STC89C52作為本系統(tǒng)的主要控制芯片,STC89C52控制系統(tǒng)的數據處理,控制AD轉換器,控制LCD的顯示,同時控制顯示狀態(tài)燈,控制步進電機的轉動,STC89C52是控制儀的核心。本節(jié)將介紹STC89C52的外圍電路,如圖4-6所示。</p><p> 圖4-6單
59、片機控制模塊</p><p> 電路圖中主要有單片機的復位電路和時鐘電路。復位電路由開關S1、瓷片電容C9和電子R19組成。當按下開關S1時,單片機的RST口輸入為高電平,則單片機就會復位,R19是限流電阻,C9的電容值為20µF。電阻R19的阻值為1kΩ。時鐘電路由晶振Y1和兩個22pF的瓷片電容組成。單片機的P0口接AD轉換出來的數據。P2.0是控制DS1的端口。當P2.0為低電平時,這DS1亮,
60、當P2.0為高電平時,則DS1滅;P2.1控制ADC0809的EOC管腳;P2.2是用來檢測A/D轉換器的OE,檢測A/D轉換器是否轉換結束;P2.3是接AD轉換器的CLK,AD轉換器的時鐘是有單片機用編程控制實現的;P2.4、P2.5、P2.6是AD轉換器的通道選擇控制位;P2.7口是AD轉換器的開關控制位,當將P2.7拉高一段可以使AD轉換器響應的時間,則AD轉換器開始轉換數據;P0口是讀取AD轉換出來的數據,并將這個數據儲存起來。
61、P1口低四位接步進電機驅動電路。P1.4和P1.5是輸出控制充放電的PWM信號。P3口是接LCD1602的八位數據引腳。DS1是顯示充電狀態(tài)的LED燈,當開始充電時,則單片機控制LED亮,</p><p> 4.2.4 A/D轉換模塊</p><p> ADC0809是一個8位逐次逼近式的模數轉換芯片,如圖4-7為A/D轉換模塊電路圖,本系統(tǒng)需要轉換4個模擬量,一個是太陽能電池板的電壓
62、,一個是蓄電池的電池,還有兩個是光信號的電壓。這四個模擬量分別選用了通道0、通道1、通道2、通道3。ADC0809的時鐘信號由單片機的使用軟件產生,由單片機的P2.3輸出。ADC0809的數據輸出端口接入單片機的P0口。逐次逼近形就是將輸入的模擬變量和ADC0809的參考電壓比較,在ADC0809內部有將參考電壓分壓成為n等分,輸入的模擬量如果大于參考電壓則輸出1.并在三態(tài)鎖存器里保存,當都比較完之后就將EOC置1,這表示轉換已經結束,
63、若果在OE口輸入高電平,則打開三態(tài)鎖存器,將數據輸出。</p><p> 圖4-7 A/D轉換模塊</p><p> 4.2.5跟蹤光信號采集模塊</p><p> 光信號采集主要是由光敏電阻檢測光的強度,在太陽能板的東西兩側各安裝一個光敏電阻,當光沒有垂直照射到太陽能板上的話,東西兩側的光敏電阻的阻值則不一樣,只要通過檢測光敏電阻的電壓就可以判斷光線的方向。
64、如圖4-8是跟蹤光信號的電路圖[8]。P3和P4是控制器和檢測模塊的接口。如圖4-8所示R18和R17是精密滑動變阻器,將兩個滑動變阻器調為10kΩ,R14、R15為光敏電阻,光敏電阻的阻值根據光強的不同其變化范圍為1kΩ到17kΩ之間。兩個電阻的電壓送到ADC0809的通道2和通道3上。轉換為數字量時交給單片機處理,控制驅動模塊驅動電機跟蹤。根據光敏電阻的光照特性,當光線照到光敏電阻上時,光敏電阻的阻值會很小,當沒有光照射時,光敏電阻
65、的阻值就會很大,由此可以判斷光線的方向,這樣就可以控制步進電機轉動跟蹤,具體跟蹤控制程序第五章將詳細介紹。</p><p> 圖4-8跟蹤光信號采集模塊</p><p> 4.2.6步進電機驅動模塊</p><p> 本系統(tǒng)的步進電機驅動芯片選擇的是ULN2003,ULN2003是耐高壓大電流的達林頓晶體管陣列。具有電流增益高、工作電壓高、帶負載能力強等特點。
66、由于單片機輸出電流不夠大,所以要接上拉電阻才可以驅動步進電機轉動。當輸入為低電平時,ULN2003則輸出高電平。P4是步進電機接口。步進電機28BYJ-48的紅色線接到P4的管腳1。ULN2003的IN1到IN4分別接到單片機的P1口的低四位,由單片機控制輸出步進電機的控制脈沖。如圖4-9是本系統(tǒng)的步進電機驅動模塊的電路原理圖[9]。</p><p> 圖4-9步進電機驅動模塊</p><p
67、> 4.2.7系統(tǒng)整體原理圖</p><p> 如圖4-10所示是本系統(tǒng)的整體原理圖。整體的原理圖是按照功能模塊來設計的,整個控制系統(tǒng)的原理圖包括單片機控制模塊、充放電控制模塊、A/D轉換模塊、步進電機驅動模塊、LCD顯示控制模塊、光信號采集模塊。每個模塊都有獨立的功能,但每個模塊都有聯系的。該系統(tǒng)以單片機為核心,單片機模塊負責其他模塊的控制信號的輸出。充放電控制模塊主要負責實現充放電的控制,單片機控制
68、模塊輸出的PWM是控制充放電模塊的,而單片機的數據是從A/D轉換模塊讀取的。光信號采集模塊采集的電壓是輸入到A/D轉換模塊轉換為數字量的。LCD顯示控制模塊是有單片機控制的,顯示的數據也是A/D轉換出來的數字量。</p><p> 圖4-10系統(tǒng)的整體原理圖</p><p><b> 4.3本章小結</b></p><p> 本章主要介紹
69、了太陽能的硬件模塊電路,分析了主要器件的原理,分析了單片機的原理、ADC0809的原理與管腳的功能,還有步進電機28BYJ-48的原理,以及LCD1602的的顯示特性和管腳功能。本系統(tǒng)是分模塊設計的,本章詳細的介紹了各個模塊的原理和功能,本系統(tǒng)的主要模塊有單片機控制模塊、充放電控制模塊、A/D轉換控制模塊、光信號采集模塊、步進電機驅動模塊。還詳細介紹了本系統(tǒng)各個模塊的信號流,和各個模塊的各個器件的作用。</p><p
70、> 第五章 系統(tǒng)軟件設計</p><p> 本系統(tǒng)的軟件設計主要分為系統(tǒng)初始化、A/D轉換程序、顯示程序、跟蹤控制程序、充放電控制程序。A/D轉換程序是本設計的重點,如果A/D轉換程序不好的話就會影響本系統(tǒng)的準確性,下面將是對每個單元模塊程序進行詳細說明。</p><p> 5.1系統(tǒng)主程序流程圖設計</p><p> 該系統(tǒng)的主程序整體流程圖如圖5-
71、1所示。</p><p><b> 圖5-1整體流程圖</b></p><p> 系統(tǒng)初始化程序主要是初始化單片機的數據,和LCD的初始化顯示。跟蹤程序是檢測兩個光敏電阻的電壓,判斷光線的位置,然后控制步進電機轉動。顯示程序是主要顯示蓄電池的電壓和天陽能電池板的電壓,同時顯示兩個光敏電阻的電壓??刂瞥浞烹姵绦蚴歉鶕礻柲茈姵匕宓碾妷汉托铍姵氐碾妷海缓笞龀龀潆姺烹?/p>
72、的控制。</p><p> /*-----主函數----*/</p><p> void main() //主函數</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);//轉換通道0的值</p><p> AD0=AD_DATA[1];</p><p> AD(1);//轉換通道1的值</p><p> AD1=AD_DATA[2];</p
74、><p><b> AD(2);</b></p><p> AD2=AD_DATA[3];//轉換通道3的值</p><p><b> AD(3);</b></p><p> AD3=AD_DATA[4];//轉換通道4的值</p><p> AZ0=AD0*3.23;
75、//計算太陽能板電壓的真實值</p><p> AZ1=AD1*1.68;//計算蓄電池電壓的真實值</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) //放電控制,當蓄電池的電壓小于設定值則停止放電</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;//關掉充電顯示燈</p><p><b> }</b></p><p> else if(AD1>200) //如果電池的電壓在6.8V到7V之間則開始浮充</p><p><b> {</b&g
81、t;</p><p> TR1=1;//定時器1開始運行</p><p> LED=0;//開顯示充電燈</p><p> g=1;//開啟充電</p><p><b> }</b></p><p> else if(AD1<=200) //如果電池電壓低于6.0V則開
82、始快速充電</p><p><b> {</b></p><p> g=1;//開始快速充電</p><p> TR1=0;// 關閉定時器1</p><p> LED=0;// 開顯示充電燈</p><p><b> } </b></p>
83、<p><b> } </b></p><p> elseif(AD0<=90) //如果太陽能板電壓低于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子程序的設計</b></p><p> 5.2.1A/D轉換程序</p><p> A/D轉換程序,主要是將控制A/D轉換,采集需要的數據,以及處理數據,其程序
89、流程圖如圖5-2所示。先是初始化,A/D轉換子程序的輸入值m是通道的選擇,輸入0時,則選擇通道0,輸入m為1時,則選擇了通道1,然后將STA1拉高,開始轉換,然后檢查EOC是否輸出高,若果EOC輸出高,則表示轉換已經結束,再將OE拉高,則允許ADC0809將轉換的數據輸出,然后單片機的P0口將數據讀走,保存在AD_DATA[m]里面。</p><p> void AD(uchar m) //A/D轉換函數&
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轉換程
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;//開始轉換</p><p> delay(20);</p><p><b> STA1=0;</b></p><p> while (EOC==0);//等待轉換結束信號</p><p><b>
97、; delay(2);</b></p><p> AD0E=1;//允許數據輸出</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> 顯示函數主要負責控制LCD1602,控制LCD顯示太陽能電池板的電壓和蓄電池的電壓,還有兩個光敏電阻的電壓。顯示函數可也讓用戶清晰的直到充電的狀態(tài),和太陽能電池板、蓄電池的狀態(tài)。顯示函數是先處理有A/D轉換出來的數據,計算出要顯示的真實,再調用LCD寫數據函數,將數據寫入LCD顯示。
99、</p><p> void write_com(uchar com)//lcd寫指令函數</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寫數據函數 </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定位寫數據函數(第一行)</p><p><b> {</b></p><p> uchar bai,shi,ge;</p><p> add
104、ate=1.9607*date; //計算電壓真實值</p><p> bai=addate/100;//取出個位數</p><p> shi=addate/10%10; //取出分位數</p><p> ge=addate%10 ; //取出十分位數</p><p> write_com(0x80+add); //寫指令函數,將
105、指針指到第一行第一位</p><p> write_data(0x30+bai); //顯示出個位數</p><p> write_data(0x2e); //顯示小數點</p><p> write_data(0x30+shi); //顯示出分位數</p><p> write_data(0x30+ge); //顯示出十分位數<
106、;/p><p><b> }</b></p><p> void write_sfm(uchar add,uchar date)//lcd定位寫數據函數(第二行)</p><p><b> {</b></p><p> uchar bai,shi,ge;</p><p>
107、; addate=1.9607*date; //計算電壓真實值</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> 跟蹤程序主要根據兩個光敏電阻的電壓進行控制,計算ADC0809轉換出來的光敏電阻的電壓,比較兩個電壓,若果左邊的光敏電阻的電壓高的話,則可以知道太陽在電池板的右邊,因為光敏電阻的阻值在有光線照射時會變得很小,所以電壓也會很小。然后可以控制步進電機向右轉。直到對準太陽光線。其程序流程圖如圖5-3所示。</p><p> vo
110、id L_Rotation(uchar k) //步進電機正轉 (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) //步進電機反轉 (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)//跟蹤控制步進電機左轉</p><p><b> {</b></p><p> aa=AD2-AD3 ;</p><p> if(aa>15)//設定允許光強差</p><p&
116、gt;<b> {</b></p><p> R_Rotation(aa);//控制步進電機左轉</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);//控制步進電機右轉</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> 充放電控制是通過分析計算ADC0809轉換出來的數據,檢測太陽能電池板的電壓,如果可以為蓄電池充電,則判斷蓄電池是否需要充電,然后進行充電控制,充電控制主要控制P1.4口的輸出。當P1.4輸出為高電平時,則是開始快速充電,如果P1.4輸出為脈沖一定頻率的PWM信號,則是開始浮充狀態(tài)。當P1.4輸出為低電平時,則是
120、停止充電。放電控制程序則是判斷蓄電池的電壓,如果蓄電池的電壓小于某設定值,則控制P1.5輸出低電平,停止放電。若果高壓設定值,這控制P1.5輸出高電平,允許放電。充電控制是先判斷太陽能的電壓,若果高壓蓄電池電壓,這判斷蓄電池的電壓若果蓄電池是滿的則執(zhí)行停止充電,否則,判斷蓄電池的電壓是不是在6.8V~7.0V之間,則執(zhí)行浮充。否則開始快速充電。程序控制簡單。其程序框圖如圖5-4所示。V1為蓄電池電壓,V2為太陽能電池板電壓。</p
121、><p> if(AD1<=150)//放電控制</p><p><b> {</b></p><p> k=0;//停止對外放電</p><p><b> }</b></p><p><b> else</b></p><
122、;p><b> {</b></p><p> k=1;//允許對外放電</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之間則開始浮充</p><p><b> {</b></p><p> `TR1=1;//定時器1開始運行</p><p>
125、<b> LED=0;</b></p><p><b> }</b></p><p> else if(AD1<=200) //如果電池電壓低于6.8V則開始快速充電</p><p><b> {</b></p><p> g=1;//開始快速充電&l
126、t;/p><p><b> TR1=0;</b></p><p><b> LED=0;</b></p><p><b> } </b></p><p> elseif(AD0<=90) //如果太陽能板電壓低于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 //產生充電控制的PWM</p><p><b> {</b></p><p> 圖5-4充放電控制程序流程圖</p><p> TH1=(65536-50000)/256;</p><p> TL1=(655
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 太陽能智能控制儀-充放電控制-自動跟蹤-畢業(yè)設計
- 太陽能充放電控制器的設計
- 太陽能充放電控制器的研究.pdf
- 太陽能充、放電控制器設計
- MPPT太陽能充放電控制器的研究與實現.pdf
- 維爾仕太陽能充放電控制器ws-c486060a
- 畢業(yè)設計--太陽能充電控制器設計
- 太陽能充電控制器設計 畢業(yè)設計
- 太陽能充電控制器設計畢業(yè)設計
- 太陽能自動跟蹤發(fā)電控制系統(tǒng)的開發(fā)與設計
- 基于單片機的太陽能LED路燈充放電控制器的設計.pdf
- 太陽能自動跟蹤發(fā)電控制系統(tǒng)的開發(fā)與設計.pdf
- 太陽能充放電系統(tǒng)優(yōu)化控制技術研究.pdf
- 太陽能自動跟蹤發(fā)電控制系統(tǒng)的開發(fā)與設計.pdf
- 智能太陽能路燈控制器畢業(yè)設計論文
- 自動跟蹤太陽智能型太陽能系統(tǒng)設計
- 太陽能自動跟蹤控制系統(tǒng)的設計.pdf
- 智能太陽能路燈控制器畢業(yè)設計論文
- 儲能電感充放電控制及應用.pdf
- 自動跟蹤太陽智能型太陽能系統(tǒng)設計.txt
評論
0/150
提交評論