版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p><b> (20 屆)</b></p><p> 基于51單片機的自動控制系統(tǒng)設計</p><p><b> 1 緒論</b></p><p><b> 能源危機與環(huán)境問題</b>
2、;</p><p> 能源在人類社會的發(fā)展進步過程中起到了巨大的促進作用,社會的進步與能源的開發(fā)利用是相輔相成的,在過去的兩個多世紀,化石能源為人類的進步提供了強勁的動力。然而,隨著發(fā)展的日益迅速,傳統(tǒng)化石能源日趨枯竭,但我們的能源需求卻與日劇增,我們正面臨著巨大的能源危機。相關資料表明,2010 年,全球石油消費量達到創(chuàng)紀錄的8738.2 萬桶/日(40.28 億噸),比上年增長了 3.1%(266.8 萬桶
3、/日)。這一增值是過去 10 年間平均水平的兩倍,是 2004 年以來最大的增幅;天然氣的消費也不容小覷,全球增長7.4%,為 1984 年以來最快增速;全球煤炭消費增長 7.6%,自2003 年以來沒有更高的了。另外,2010 年,化石燃料消費的全球二氧化碳排放量增長了 5.8%,達到 33.16 億噸,超過了能源消費的增長速度,達到了1969 年以來的最高水平。目前,我國經濟仍在高速發(fā)展,對能源的需求只增不減,能源問題是我們發(fā)展道路
4、上的嚴峻挑戰(zhàn),與其相隨的環(huán)境污染也會給我們帶來許多麻煩,我們面臨著巨大的能源危機。</p><p> 有關數據表明,可開采的石油和天然氣大約還能用30 年,事實上更多的石油資源藏在深深的海底,但是由于開采環(huán)境惡劣,技術條件的相對不足,這些能源還不能被充分利用。而且按照目前的消耗量,即便全都開采出來,也僅夠人類使用 270 年。煤炭是自有人類文明記載以來的最傳統(tǒng)的能源,同石油、天然氣相比,是固態(tài)的,且大部分分布在
5、陸地,雖然儲量較大,但是也僅夠再開采三百年左右。核能也許是解決能源問題的金鑰匙,但是它的能量來源--鈾礦卻是種緊俏資源資源,據已探明的儲量,全球鈾礦將在2030年以前開采完。水力資源是人類利用最早的自然資源,但是,在工業(yè)化過程中,水力資源已被開發(fā)了70%左右,而且利用水力資源的主要方式是水電站,但是水電站投資大、周期長,并且受地理環(huán)境的限制。各種傳統(tǒng)能源的逐漸匱乏,新興能源的儲量不足導致了全球范圍內的能源危機[1]。世界經濟的現(xiàn)代化,得
6、益于化石能源,如石油、天然氣、煤炭與核裂變能的廣泛應用。然而,石油、天然氣和煤炭等化石能源都是不可再生資源,隨著經濟發(fā)展,對它們的需求也將進一步增加,這將必然導致資源的枯竭和環(huán)境的惡化,極端天氣的頻繁出現(xiàn)也驗證了這一點。這種對自然的掠奪性索取的發(fā)展</p><p> 要開發(fā)利用新能源來解決這一問題。</p><p><b> 太陽能發(fā)電利用現(xiàn)狀</b></p
7、><p> 介此,世界上越來越多的國家開始致力于可再生能源的深度開發(fā)和利用,可再生能源技術將減少對化石能源的依賴和二氧化碳的排放[2],其中最被看好的就是太陽能的開發(fā)利用。人類很早以前就直接或間接地利用太陽能,但長期以來太陽能的利用發(fā)展緩慢。隨著20世紀70年代出現(xiàn)的能源危機,全球環(huán)境污染日趨嚴重,加上各領域高新型技術的迅猛發(fā)展,出現(xiàn)了太陽能利用的新熱潮。太陽能在能源利用方面占有獨特的優(yōu)勢: </p>
8、<p> ?。?)儲量及其豐富:太陽每秒鐘放射的能量相當于160×1021千瓦,其中僅有極微小的部分達到地球。即便是這樣,太陽每分鐘輻射達到地球表面的能量還高達80×1012千瓦,相當于6×109噸的標準煤。德國太陽能專家伯爾特說,只需開發(fā)非洲部分地區(qū)的太陽能發(fā)電,便能滿足全世界的電力需求,況且太陽輻射可以源源不斷的供給地球,取之不盡,用之不竭[3]。 </p><p>
9、 (2)普遍性:太陽能不像其它的能源那樣具有分布的偏集性,它處處都可就地利用,有利于緩解能源供需矛盾,緩解運輸壓力,對解決偏僻邊遠地區(qū)及交通不便的農村,海島的能源供應,更有其巨大的優(yōu)越性。 </p><p> ?。?)清潔無污染:在眾多環(huán)境問題中礦物燃料形成的污染十分嚴重,而利用太陽能則沒有廢棄物產生,這點在環(huán)境污染日趨嚴重的今天顯得尤為可貴。 </p><p> ?。?)經濟性:隨著太
10、陽能技術的發(fā)展,利用太陽能的成本已經有所下降。世界銀行的一項研究認為,許多國家發(fā)展太陽能發(fā)電站是具有經濟性的。電站的經濟性主要由以下幾部分組成:建造費、燃料費、運行管理維修及環(huán)保投資等。而用太陽能發(fā)電,既不污染環(huán)境,又取之不盡。因此從長期來看,其發(fā)電成本是相當低的。</p><p> 在當今能源短缺的情況下,各國都加快了光伏產業(yè)的發(fā)展。美國“太陽能先導計劃”旨在降低太陽能光伏發(fā)電的成本,使其在2015年達到商業(yè)
11、化競爭;日本提出在2020年達到28GW的光伏發(fā)電總量的計劃;歐洲光伏協(xié)會提出了“SET FOR 2020”規(guī)劃,讓光伏發(fā)電在2020年達到商業(yè)化競爭。在發(fā)展低碳經濟的大背景下,各國政府對光伏發(fā)電的認可度逐漸提高。我國幅員遼闊,太陽能資源十分豐富。因此,研究和重視太陽能的開發(fā)利用,對于解決我國能源問題有著重大的意義。隨著國內光伏產業(yè)規(guī)模逐步擴大、技術逐步提升,光伏發(fā)電成本會逐步下降。中國已將新能源產業(yè)上升為國家戰(zhàn)略產業(yè),未來10年擬加大
12、對包括太陽能在內的新能源產業(yè)投資,以減少經濟對石化能源依賴和降低碳排放,未來五到十年光伏發(fā)電有望規(guī)?;l(fā)展。</p><p> 太陽能發(fā)電是利用光電效應將光能轉化為電能的技術。太陽能聚光光伏發(fā)電技術是目前研究的熱點,它利用光學聚光組件提高入射到太陽能電池表面的光能量密度,可以減少系統(tǒng)中昂貴太陽能電池的使用,其整體轉換效率為31%~40.7%,是降低發(fā)電成本,提高發(fā)電效率的有效途徑。由于采用了光學聚光組件,所以聚
13、光裝置必須以較高的精度對太陽軌跡進行跟蹤,這種追蹤系統(tǒng)對一般的光伏系統(tǒng)的發(fā)電效率也有很大提升[4-7]。</p><p> 目前,追日系統(tǒng)所用的追蹤原理可以分為兩種方式:一、光電追蹤;二、太陽角度追蹤。 </p><p> ?。?)光電追蹤是一種實時閉環(huán)追蹤方式,根據太陽光的入射角度的改變來調整追蹤的方向。光電追蹤系統(tǒng)主要是用CMOS圖像傳感器[8]或光敏器件接收太陽光,通過一定的電路將
14、接收到太陽光轉變成電信號,經過處理放大后傳輸給單片機,由單片機處理、判斷應該如何改變電池板接收角度,通過指令控制電機運行,使電池板轉動到合適的角度。雖然光電追蹤靈敏度很高,結構設計也比較簡單,但易受到天氣變化的影響。如果在稍長時間段里出現(xiàn)烏云遮日或其它光源的干擾,會導致追蹤裝置無法對準太陽,甚至會引起追日裝置的誤動。 </p><p> ?。?)太陽角度計算追蹤是一種開環(huán)追蹤方式。首先根據當地的經緯度和時間來計算
15、出太陽入射的角度,由此修正太陽能電池板的角度,具體操作即控制二軸電機轉動的角度。與光電檢測追蹤相比,太陽角度追蹤方法不受天氣和其它光源的干擾。但是由于計算太陽角度所采用的數值不是十分精確,時鐘存在積累誤差和跟蹤裝置的機械結構誤差,以及其它不利因素疊加產生的誤差也是不可忽視的[9]。</p><p> 如果能夠實現(xiàn)太陽角度實時追蹤就可以提高系統(tǒng)的發(fā)電效率,更加實用,雙軸追蹤就可以實現(xiàn)這種目的。相關研究表明:采用雙
16、軸追蹤裝置收集的太陽能能量比采用固定接收裝置的高將近40%[13]。特別是聚光型太陽能發(fā)電更需要完全依賴雙軸跟蹤系統(tǒng)。未來的太陽跟蹤裝置將會采用全自動跟蹤,結構設計方面將朝著高強度,大范圍跟蹤的方向發(fā)展。系統(tǒng)控制方面將綜合采用光、機、電一體化系統(tǒng),跟蹤精度更高、角度范圍更大,且有自動返回功能[14],使得太陽能利用率更大,降低發(fā)電的成本,提高系統(tǒng)的實用性。</p><p><b> 研究課題的主要內容
17、</b></p><p> 本設計的追日系統(tǒng)將采用周期性太陽角度計算追蹤的方式,該方式下系統(tǒng)運行更加穩(wěn)定,且不受天氣情況影響。單片機通過接讀取DS1302的時間信息,計算出太陽實時的的高度角和方位角,通過步進電機調整電池板方位,使太陽能電池板始終垂直于太陽光。系統(tǒng)使用Protues7.8軟件進行硬件模擬仿真。 </p><p> 該系統(tǒng)是以51單片機為控制核心的自動控制系統(tǒng)
18、,整個系統(tǒng)由硬件電路和軟件程序組成,這也是本文的主要研究內容。</p><p><b> 硬件電路部分設計</b></p><p> 此部分設計分三步:1、芯片以及各元件選用;2、電路圖整體設計;3、電路的調試仿真電路設計主要包括下面幾個功能模塊: </p><p> (1)光電檢測電路:通過光敏二極管電路接收裝置來檢測光照強度,將光信號
19、轉換為電信號,以供單片機處理判斷光照條件,決定是否開機追蹤,光強閾值可通過光敏二極管參數和透光片的透光度設定。 </p><p> ?。?)時鐘模塊:其功能是為計算太陽角度提供時間數據,經度、緯度等一些固定參數則事先在程序中設置,作為常量使用,避免重復計算,節(jié)省系統(tǒng)資源。 </p><p> ?。?)驅動控制電路:電路以單片機為核心,對太陽能發(fā)電裝置的運動軌跡進行控制,具體需要控制兩軸電動
20、機的正反轉運動。單片機計算出雙軸各自的調整量后給步進電機驅動發(fā)出控制信號實現(xiàn)追日運動。</p><p> ?。?)電機驅動電路:此電路的功能是接受單片機發(fā)出的控制信號,然后驅動步進電機轉動,本設計選用的步進電機功率較小,可用單片機的引腳直接驅動。</p><p> ?。?)輔助電路:復位電路、振蕩電路、按鍵電路及初始位置定位設計,還有額外添加的顯示模塊,方便調試和維護。</p>
21、<p><b> 軟件程序編寫</b></p><p> 在硬件電路設計的基礎上,利用單片機C51語言編寫系統(tǒng)軟件,進行軟、硬件綜合調試,直到系統(tǒng)穩(wěn)定運行,完成設計的既定目標。</p><p><b> 本文分為五個章節(jié):</b></p><p> 第一章主要闡述了課題的研究背景、目的及意義,國內外太
22、陽能的利用現(xiàn)狀及技術的概況。</p><p> 第二章對追日系統(tǒng)進行了總體設計,確定了系統(tǒng)的追蹤方式。闡述了系統(tǒng)中使用的計算太陽高度角和方位角的數學算法,以及一些細微之處的重要設計。</p><p> 第三章闡述了整個系統(tǒng)硬件部分的設計,重點介紹各部分電路的原理以及要實現(xiàn)的功能。</p><p> 第四章詳細介紹了系統(tǒng)軟件部分,主要是角度計算模塊,顯示模塊,電
23、機驅動模塊以及整體的一些邏輯思路。</p><p> 第五章總結了本設計的測試結果,進行了一定的評估,提出了不足和發(fā)展空間,并對未來做出了展望。</p><p> 2 追日系統(tǒng)的總體設計</p><p> 2.1 系統(tǒng)研發(fā)流程設計 </p><p> 系統(tǒng)以單片機為控制核心,主要設計任務是硬件電路設計、軟件編程、系統(tǒng)仿真調試。在總體
24、設計中應明確功能要求,確定系統(tǒng)各項功能技術指標,然后由此制定相應的實施方案,元器件的選用,控制流程和數學模型設計。具體是:硬件設計中,設計并繪制電路原理圖,同時考慮程序的要求,調整和完善電路圖;再編寫控制程序。最后將軟件與硬件電路進行仿真調試,主要是檢測各模塊功能,系統(tǒng)運行效果是否達到要求,進一步調整和完善軟、硬件,直至達到系統(tǒng)設計的預期目標。</p><p> 本系統(tǒng)的開發(fā)流程如圖2.1所示:</p&g
25、t;<p><b> 是否符合要求</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖2.1 系統(tǒng)開發(fā)流程圖</p><p> 追蹤方式及系統(tǒng)流程 </p><p> 如今已
26、有種類眾多的太陽能接收裝置,但由于成本和技術因素,一般都采用固定位置接收太陽能,整體利用效率較低,為了更加充分而高效地利用太陽能,追日系統(tǒng)成為當今業(yè)界的主要研究方向。目前,采用單片機系統(tǒng)的追蹤方式比較實用[15-17],單片機具有體積小、成本低廉、使用靈活、反應靈敏等特點基于單片機的太陽能追蹤方式常用的有兩種,一是光電檢測追蹤,即通過對入射太陽光的實時檢測來進行追蹤;二是太陽角度追蹤(也稱視日運動軌跡追蹤),通過預先設定的函數,根據系統(tǒng)
27、時鐘計算出太陽的方位角和高度角,步進電機驅動,實現(xiàn)追日。 </p><p> 光電檢測追蹤靈敏度比較高,結構比較簡單,但易受天氣變化的影響;而太陽角度追蹤穩(wěn)定度比較高,不受天氣、其它光源的干擾,但卻存在角度計算誤差,系統(tǒng)跟蹤裝置的機械部分的制造精度也會對追蹤產生較大影響,可能累積較大誤差。光電檢測追蹤屬于閉環(huán)控制系統(tǒng),而太陽角度追蹤是一種開環(huán)控制系統(tǒng),綜合兩種追蹤方式的優(yōu)劣,本設計將采納太陽角度追蹤,以追求更加
28、穩(wěn)定、可靠的系統(tǒng),進而提高太陽能利用的效率。</p><p> 首先設計系統(tǒng)工作流程:上電開機后,第一步首先檢測光照條件是否符合太陽能發(fā)電的條件,若不符合,系統(tǒng)將繼續(xù)休眠;若符合,系統(tǒng)將復位,開始追日。首先計算當前太陽角度,將太陽能電池板調整到位,然后以10分鐘為周期進行角度計算并調整太陽能電池板的偏轉角和俯仰角。與此同時,光照檢測模塊以中斷方式進行后臺監(jiān)控,一旦天色暗淡,低于光強設定值,系統(tǒng)便會進入休眠狀態(tài)。
29、休眠前電池板會被調整到初始位置,這需要兩個限位開關的參與,其他電路也都將被關閉,直到單片機被激活。</p><p> 系統(tǒng)的整體流程圖如圖2.2所示:</p><p> 光照條件? N</p><p><b> Y</b></p><p> 光照條件? N</p><p&
30、gt;<b> Y</b></p><p> 圖2.2 追日系統(tǒng)整體流程圖</p><p> 2.3 系統(tǒng)的總體設計方案</p><p> 該系統(tǒng)的核心功能就是太陽角度計算與控制,下面具體介紹太陽角度追蹤模式的設計。</p><p> 太陽角度追蹤模式,就是由單片機從時鐘芯片讀取實時時間,再通過預設函數計算
31、出太陽實時角度,用以控制電機調整電池板使其追日。太陽角度追蹤模式的關鍵是太陽高度角和方位角的計算,下面介紹太陽高度角和太陽方位角的概念以及計算方法。 </p><p> 先介紹太陽高度角和太陽方位角的定義,太陽高度角:太陽高度角指從太陽中心直射到當地的光線與當地水平面的夾角,其值在0°到90°之間變化,日出日落時為0°,太陽在正天頂時為90°。太陽方位角:太陽方位角即太陽
32、所在的方位,指太陽光線在地平面上的投影與當地子午線的夾角,可近似地看作是豎立在地面上的直線在陽光下的陰影與正南方的夾角。方位角以正南方向為零,由南向東為負,由南向西為正,如太陽在正東方,方位角為-90°,在正西方時方位角為90°。要計算太陽高度角和方位角要用到一些重要的參數,下面介紹一下: </p><p> 左大康利用Flourier分析給出了赤緯與日期的經驗關系[18-19],設一年36
33、5 天對應區(qū)間為[0,π],取日角:θ0=2π(dn-1)/365 (2-1) </p><p> dn取為年的日期序列,然后n就可以把1月1號取做 1,12月31號取做365,又引用下面的公式,用弧度來表示赤緯δ: </p><p> δ=0.00689-0.39951cosθ0+0.07208sinθ0-0.00680cos2θ0</
34、p><p> +0.00090sin2θ0-0.00269cos3θ0+0.00151sin3θ0 (2-2)</p><p> 太陽時角ω可用下述方法進行計算: </p><p> ω=真太陽時(小時)×15-180 (2-3) </p>
35、<p> 式中ω單位為度,15表示每小時相當于15°時角。時差:太陽在黃道上的運動速度是不均勻的,時快時慢,因此,真太陽日的長短也就各不相同。但人們需要一種均勻不變的時間單位,這就需要尋找一個假想的太陽,它以均勻的速度在運行,這個假想的太陽就稱為平太陽,其周日的持續(xù)時間稱平太陽日,由此而來的小時稱為平太陽時[20]。 </p><p> 真太陽時=地方平時+時差=北京時+經度訂正+時差
36、=北京時+(當地經度-120)×4÷60+時差 (2-4)</p><p> 時差(弧度)=0.000076+0.001869cosθ0-0.032076sinθ0-0.014616cos2θ0</p><p> -0.04085sin2θ0
37、 (2-5) </p><p> 時差(小時)=時差(弧度)×12÷π (2-6)</p><p> 設太陽高度角和方位角分別為θh和θp,地理緯度為ψ,則根據天文學公式
38、: sinθh=sinψsinδ+cosψcosδcosω (2-7)</p><p> sinθp= cosδsinω/cosθh (2-8)</p><p> cosθp=(sinθhsinψ-sinδ)/cosθhcosψ
39、 (2-9)</p><p> 通過上面太陽高度角及太陽方位角概念和有關公式的介紹,我們了解到,只要經緯度、時間確定了,那么就能計算出相應時刻太陽高度角和方位角,而這個值是唯一確定的。介于上述函數運算較為復雜,決定選擇C51語言來進行編程,C51語言的函數功能比較強大,很方便編寫計算程序。經度和緯度是將以常量的型式預設在程序中,一些只與經緯度相關的參數也將被預設進程序,以節(jié)省系統(tǒng)資源,
40、提高運行效率。</p><p> 3 追蹤系統(tǒng)的硬件設計</p><p><b> 單片機的選用 </b></p><p> 本系統(tǒng)中單片機的主要功能是利用實時時間計算出太陽角度,進而通過步進電機調整電池板,實現(xiàn)對太陽的追蹤,它還要監(jiān)控各模塊的信號和運行情況,協(xié)調整個系統(tǒng)的正常運行,尤其是各路中斷以及外部開關信號的檢測及反應,還要做到自動
41、根據光照情況休眠或喚醒,以及電池板的復位,它是整個控制系統(tǒng)的核心。</p><p> 本系統(tǒng)用的是AT89C51單片機。AT89C51單片機因為功能強大使用簡便而被廣泛的使用,它也充分滿足本系統(tǒng)的要求,它有如下特點[21]: </p><p> (1)4KB 可改寫程序 Flash 存儲器 </p><p> ?。?)全靜態(tài)工作:0Hz-24MHz </p
42、><p> ?。?)3 級程序存儲器保密 </p><p> (4)128×8 字節(jié)內部 RAM </p><p> ?。?)32 條可編程 I/O 線 </p><p> ?。?)2 個 16 位定時器/計數器 </p><p> (7)5 個中斷源 </p><p> ?。?)可編
43、程串行通道 </p><p> AT89C51的設計選用的是靜態(tài)邏輯,也就是說它工作的頻率可以到0,可以實現(xiàn)空閑模式和掉電模式。在空閑模式中,CPU停止工作,而RAM、定時器/計數器、串行口和中斷系統(tǒng)都繼續(xù)工作;在掉電模式中,片內振蕩器停止工作,由于時鐘被“凍結”,使一切功能都暫停,故只保存片內RAM中的內容,直到下一次硬件復位為止。</p><p> 3.2 時鐘電路的設計 <
44、;/p><p> 由于系統(tǒng)中要進行時間的實時讀取,若用單片機程序計時會增加系統(tǒng)負擔,且誤差較大,這就需要引入外部時鐘芯片來提供實時時間,可以減輕系統(tǒng)負擔,提高效率好精度。 </p><p> 本設計選擇DALLAS公司生產的串行實時時鐘芯片DS1302,它沒有采取光電隔離,但由于讀寫靠時序控制,且具有寫保護位,抗干擾效果較好,而且體積小,需要接線</p><p>
45、 少,外圍只有一個32.768Hz晶振,使用靈活方便。DS1302與單片機的通信僅需三根線即SCLK(串行時鐘線)、I/O(數據線)、RST(復位線)。數據可以按每次一個字節(jié)或多達31個字節(jié)的形式傳送到時鐘RAM或從中送出。RST有兩種功能:首先,RST 接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供了單字節(jié)或多字節(jié)數據傳送的手段[22-23]。</p><p> DS1302主要引腳有:X1
46、,X2連接32.768kHz晶振。GND:電源地。RST:復位,用于對芯片操作。I/O:數據輸入、輸出引腳。SCLK:串行時鐘輸入。VCC1,VCC2:主電源與后備電源[24]。其接線圖如圖3.1所示,時鐘芯片與單片機以串行三總線的方式連接,數據的讀寫由單片機控制,VCC1為主電源,由5V蓄電池供電,蓄電池則從電池板上充電;VCC2為備用電源,此處的1000nF電容所存儲的電量可是時鐘芯片運行幾個小時,實際應用中可用紐扣電池代替,以備不
47、時之需;時鐘芯片外接了一個32.768Hz晶振,以保證芯片正常運行。</p><p> 圖3.1 時鐘芯片連接圖</p><p> 3.3 顯示模塊電路設計 </p><p> 在單片機系統(tǒng)中數碼管是應用最廣泛的一種顯示方式,其與單片機的接口方法也很簡單。由于此電路中需要顯示時,分,秒,需要驅動6個數碼管。為了節(jié)省系統(tǒng)資源,提高效率和可靠性,本系統(tǒng)的顯示部
48、分采用了MAX7219芯片來驅動。一片MAX7219 芯片最多可驅動8個LED顯示器,并可以串聯(lián)擴展。MAX7219的接線和數據讀寫都與DS1302極為相似,也采用串行三總線的方式與單片機連接,按時序讀寫.MAX7219能夠接收的數據和命令為16位數據包,前8位用作選擇MAX7219的內部寄存器地址,后8位為指令或待顯示數據的內容,高位在前,低位在后。</p><p> 電路原理圖如圖3.2所示,其中ISET作
49、用是設置數碼管的段電流,即控制亮度。正如表所述,A-G是數碼管的段選線,控制顯示的字符;DIG0-DIG5是位選線,控制各位是否顯示字符,MAX7219內部采用的是動態(tài)掃描的顯示方式。</p><p> 圖3.2 MAX7219接線圖</p><p> 3.4 驅動電路的設計</p><p> 步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進電機件
50、。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱為“步距角”,它的旋轉是以固定的角度一步一步運行的。可以通過控制脈沖個數來控制角位移量,從而達到準確的定位。步進電機的精度一般為步進角的3-5%,且不累積。由于沒有電刷,可靠性較高,因此電機的壽命僅僅取決于軸承的壽命。</p><p>
51、 實際應用中將采用蝸輪蝸桿傳動。蝸輪蝸桿傳動可以得到很大的傳動比,相當于多齒嚙合傳動,故傳動平穩(wěn)、噪聲很小。機構具有自鎖性,可實現(xiàn)反向自鎖,即只能由蝸桿帶動蝸輪,而不能由蝸輪帶動蝸桿,這也為系統(tǒng)的準確定位增加了可靠性。</p><p> 仿真時驅動部分采用5V的兩相步進電機,配合上拉電阻,直接由單片機的引腳控制驅動。雖然誤差較大,但足以說明問題。步進電機驅動電路如圖3.3所示,由于采用的步進電機比較簡單,功率較
52、小,故直接由單片機控制,配合上拉電阻理論上能使步進電機正常運轉。當P0口輸出相應的脈沖編碼,在上拉電阻的作用下,電機便會轉動相應的角度。</p><p> 圖3.3 步進電機驅動電路</p><p> 3.5 外圍輔助電路的設計</p><p> 單片機的外圍輔助電路主要是復位電路、振蕩電路、按鍵電路以及光照檢測電路。</p><p>
53、; 單片機執(zhí)行程序之前,要先進行復位,使 CPU 和其他功能部件處于初始狀態(tài),但是單片機自己不能復位,必須通過外部復位電路才行,此處復位電路給引腳RST信號為高電平時復位有效:</p><p> 外部電路產生復位信號,通過RST引腳連接到片內的復位電路,復位電路每1個機器周期對觸發(fā)器輸出采樣1次,當RST持續(xù)保持至少24個時鐘周期的高電平時,單片機便可復位。 </p><p> 單片
54、機的外部復位電路就是為內部復位電路提供至少24個時鐘周期的高電平設計的。通常有兩種形式:上電自動復位和按鍵手動復位。本系統(tǒng)采用的是二者相結合的復位電路,并且將光照檢測器件也整合進去,實現(xiàn)自動復位喚醒。</p><p> 振蕩電路的設計如下: </p><p> 在XTAL1和XTAL2引腳上接入石英晶體和電容構成的振蕩電路,C1,C2的作用是穩(wěn)定振蕩頻率以及快速起振,選用值為10pF,
55、這種振蕩方式產生的時鐘信號是比較穩(wěn)定的,由于系統(tǒng)有一定的實時性要求,需要單片機有較高的運行速度,故晶振頻率選為24MHz,這也是AT89C51單片機正常工作的最高頻率。</p><p><b> 圖3.4 振蕩電路</b></p><p> 按鍵電路的設計如下:</p><p> 為了方便調試使用,系統(tǒng)中設置了六個按鍵提供一些輔助功能。其
56、中四個按鍵負責兩軸電機的正反轉測試及位置調整,另外兩個則是顯示器的開關。這些按鍵均直接連接在單片機引腳上,采取外部中斷的方式發(fā)揮作用,具體的用法會在程序部分詳細介紹。另外,P0口的外接按鍵是必須上拉的,正如圖3.5中所示。</p><p> 圖3.5 按鍵電路接線圖</p><p> 光照檢測電路的設計:</p><p> 由于系統(tǒng)需要跟隨晝夜變化休眠和喚醒,
57、就需要外部通過相應的信號,這就要求系統(tǒng)要有一個光照檢測電路。常用的感光元件主要是硅光電池、光敏二極管和光敏三極管。其中光敏二極管在很寬的入射照度范圍內有線性電流輸出,響應速度快,對廣域范圍波長的光都有很高靈敏度,而且小型、輕量、耐振動、耐沖擊,故選擇光敏二極管作為傳感器。光敏二極管類似一個光敏開關,光照條件達到后,它便導通,阻值幾乎為0,而阻斷時它的阻值約為10K歐姆,相當于斷路。一個上拉電阻與之配合即可為單片機通過可靠的信號。電路圖如
58、圖3.6所示,實際上當光照不足時,二極管會斷開,檢測電路給出的是高電平信號,這與激活中斷的低電平信號相反,故檢測信號轉接在P3.5上(定時器T1在程序中沒有涉及),再有軟件查詢取反提供正確的中斷信號。</p><p> 圖 3.6 光照檢測電路</p><p> 4 追蹤系統(tǒng)的軟件設計</p><p> 4.1 系統(tǒng)主程序設計 </p>&
59、lt;p> 此系統(tǒng)的主程序主要是定時器和外部中斷的監(jiān)控程序,實時時間的顯示也在其中。整個程序包括太陽角度追蹤模塊、時鐘模塊、顯示模塊、驅動模塊以及輔助模塊。軟件設計思想:開機上電復位,系統(tǒng)進行初始化,開各路中斷,之后,光照檢測電路以中斷的形式判斷光照條件,若條件符合,則系統(tǒng)進入太陽角度追蹤模式;若不符合,則系統(tǒng)休眠。由于光照檢測是以外部中斷形式進行的,所以它是實時響應的。系統(tǒng)運行流程如圖 4.1 所示:</p>&
60、lt;p> 光照條件? N</p><p><b> Y</b></p><p> 光照條件? N</p><p><b> Y</b></p><p> 圖4.1 追日系統(tǒng)流程圖</p><p> 太陽角度追蹤模:利用預設的函數和經
61、緯度,從時鐘模塊讀取實時時間,計算出當前太陽的方位角和高度角。 </p><p> 時鐘部分:由串行時鐘芯片DS1302搭建的時鐘電路模塊提供的時間信息提供顯示模塊顯示出實時時間,更人性化,并提供系統(tǒng)用來計算太陽高度角和方位角的實</p><p><b> 時時間。</b></p><p> 顯示部分:通過MAX7219芯片驅動6位數碼管
62、,分別顯示時、分、秒。</p><p><b> 主程序如下:</b></p><p> void main()</p><p><b> {</b></p><p> PCON&=0xfc;</p><p><b> //開總中斷</b&
63、gt;</p><p> EA=1; </p><p><b> //開外部鍵盤中斷</b></p><p><b> EX0=1;</b></p><p> //開光照檢測中斷 </p><p><b> EX1=1;</b&g
64、t;</p><p> //開周期輸出定時器</p><p> TMOD=1;</p><p> ET0=1; </p><p><b> TR0=1;</b></p><p> TH0=(62536-60000)/256;</p><p>
65、 TL0=(62536-60000)%256;</p><p> //步進電機驅動端口初始化</p><p><b> P1=0x00;</b></p><p> //顯示芯片初始化</p><p> initial7219();</p><p> BJt=ds1302out(0
66、x85);//小時</p><p> max7219w(0x02,BJt);</p><p><b> BJt>>=4;</b></p><p> max7219w(0X01,BJt);</p><p> //實時時間顯示以及中斷查詢</p><p><b> wh
67、ile(1)</b></p><p><b> {</b></p><p> BJt=ds1302out(0x81);</p><p> max7219w(0x06,BJt);</p><p><b> BJt>>=4;</b></p><p>
68、; max7219w(0X05,BJt);</p><p> BJt=ds1302out(0x83);</p><p> max7219w(0x04,BJt);</p><p><b> BJt>>=4;</b></p><p> max7219w(0X03,BJt);</p><
69、;p><b> sun=sun0;</b></p><p> intrpt=SB1&SB2&SB3&SB4&SB5&SB6;</p><p><b> }</b></p><p><b> }</b></p><p><
70、;b> 太陽角度計算模塊 </b></p><p> 系統(tǒng)在進行太陽角度追蹤時,先從時鐘芯片讀取當前時間,再通過一系列預設數學公式,計算出太陽當前的高度角及方位角,并自動與上一次的計算結果作比較,求出角度偏差,再算入傳動比,計算出步進電機需要轉的角度,再傳遞給電機驅動模塊。延時10分鐘以后,利用相同方法計算角度偏差,繼續(xù)追蹤,延時時間由單片機定時器中斷實現(xiàn)。</p><p
71、> 此子程序中的函數用到的變量有兩類,一類是與地理位置有關的中間參數,另一類是與時間有關的角度方面的參數。其中與地理位置(主要是經緯度)有關的參數是不變的,程序中將其視作常量進行預設處理,這不會影響計算結果,還會提升系統(tǒng)效率。本程序中選取太原火車站為測試點,其經緯度為東經112°35′16.38″,北緯37°51′37.76″。具體的計算公式及流程以在第二章中做過詳細介紹,下面是該子程序的主要代碼:</
72、p><p> void mth1() //太陽角度計算子程序 </p><p><b> {</b></p><p> float xtemp=0,ytemp=0;</p><p> BJTdate();</p><p><
73、b> BJTr();</b></p><p> xtemp=asin(sin(D)*sin(kesi)</p><p> +cos(D)*cos(kesi)*cos(angle_t));</p><p> if(bjt_temp>12) </p><p> ytemp=acos((sin(xt
74、emp)*sin(D)-sin(kesi))</p><p> /(cos(xtemp)*cos(D))); </p><p> else </p><p> ytemp=-acos((sin(xtemp)*sin(D )-sin(kesi))</p><p> /(cos(xtemp)*cos(D))); <
75、;/p><p> //Mt1=xtemp*57.2958;Mt2=ytemp*57.2958;</p><p> Mt1=(xtemp-x0)*57.2958; //計算角度偏差</p><p> Mt2=(ytemp-y0)*57.2958; </p><p><b> x0=xtemp;</b&g
76、t;</p><p><b> y0=ytemp;</b></p><p><b> }</b></p><p> void BJTr() //時角計算</p><p><b> {</b></p><p&
77、gt; char dat_h,dat_m,h1; //BCD to 10D</p><p> dat_h=ds1302out(0x85);</p><p> h1=dat_h>>4;</p><p><b> h1*=10;</b></p><p> dat_h=dat_h&0
78、x0f;</p><p> dat_h+=h1;</p><p> dat_m=ds1302out(0x83); //83是分,81是秒。</p><p> h1=dat_m>>4;</p><p><b> h1*=10;</b></p><p> dat_m=dat_m
79、&0x0f;</p><p> dat_m+=h1;</p><p> bjt_temp=(float)(dat_h)+(float)(dat_m)/60;</p><p> angle_t=(12-bjt_temp-(L-120)/15)*PAI/12;//時角</p><p><b> }</b>
80、</p><p><b> 時鐘模塊設計 </b></p><p> 本系統(tǒng)采用外部時鐘電路提供實時時間,選用的芯片是串行時鐘芯片DS1302。DS1302用了3條線來和單片機連接:串行時鐘線、數據線、復位線(SCLK、 I/O、RST),分別連接單片機的P2.0-P2.2端口。首先程序變量要初始化,定義以上3條線,然后就分別是寫、讀、顯示。流程圖及子程序如下:&
81、lt;/p><p> 圖4.2 時鐘模塊程序流程圖</p><p> void ds1302w(unsigned char dat) //數據寫入</p><p><b> {</b></p><p> unsigned char i;</p><p&
82、gt;<b> clk=0;</b></p><p><b> AC8b=dat;</b></p><p> for(i=0;i<8;i++) //移位寫入</p><p><b> {</b></p>
83、<p><b> io=bit0;</b></p><p><b> clk=1;</b></p><p> delayus(2);</p><p><b> clk=0;</b></p><p> AC8b=AC8b>>1;</p>
84、;<p><b> }</b></p><p><b> }</b></p><p> unsigned char ds1302r() //數據讀出</p><p><b> {</b></p><p&
85、gt; unsigned char i,dat;</p><p> for(i=0;i<8;i++) //移位讀出</p><p><b> {</b></p><p> AC8b=AC8b>>1;</p><p> bi
86、t7=io;</p><p><b> clk=1;</b></p><p><b> clk=0;</b></p><p> delayus(2);</p><p><b> }</b></p><p> dat=AC
87、8b; </p><p> return(dat);</p><p><b> }</b></p><p> unsigned char ds1302out(unsigned char cmd) //讀取相應地址的數據</p><p><b> {</b></p>
88、;<p> unsigned char dat;</p><p><b> rst=0;</b></p><p><b> clk=0;</b></p><p><b> rst=1;</b></p><p> ds1302w(cmd);</p&g
89、t;<p> dat=ds1302r();</p><p><b> clk=1;</b></p><p><b> rst=0;</b></p><p> return(dat);</p><p><b> }</b></p><p
90、> 4.4 顯示模塊設計 </p><p> 本部分采用的是顯示接口芯片MAX7219來驅動6位數碼管,顯示時、分、秒。在單片機從時鐘芯片讀取時間信息的同時,單片機也將時間信息傳送給顯示芯片,由其控制數碼管顯示時間??刂品椒ê土鞒淘诘谌乱炎髟敿毥榻B,在此不再贅述。此模塊子程序如下:</p><p> void initial7219()
91、 //芯片初始設置</p><p><b> {</b></p><p> max7219w(0x0c,0x01);</p><p> max7219w(0x0f,0x00);</p><p> max7219w(0x09,0xff);</p><p> max7219w(0x
92、0b,0x05);</p><p> max7219w(0x0a,0x04);</p><p><b> }</b></p><p> void max7219w(unsigned char address,unsigned char dat)</p><p><b> {</b></
93、p><p> unsigned char i;</p><p> load7219=0;</p><p> for(i=0;i<8;i++) //寫入地址</p><p><b> {</b></p><p> c
94、lk7219=0;</p><p> din7219=(bit)(address&0x80);</p><p> address=address<<1;</p><p> clk7219=1;</p><p><b> }</b></p><p> for(i
95、=0;i<8;i++) //寫入數據</p><p><b> {</b></p><p> clk7219=0;</p><p> din7219=(bit)(dat&0x80);</p><p> dat=dat<
96、<1;</p><p> clk7219=1;</p><p><b> } </b></p><p> load7219=1;</p><p><b> }</b></p><p> void exter0()interrupt 0
97、 //鍵盤中斷掃描</p><p><b> {</b></p><p> if(SB1==0) //X正轉</p><p><b> {</b></p><p> //
98、 delayms(10);</p><p> if(SB1==0)</p><p><b> {</b></p><p> while(!SB1)</p><p><b> {</b></p><p> P1=motorstep_x[nx];</p>
99、<p> delayms(3);</p><p><b> nx++;</b></p><p><b> if(nx==8)</b></p><p><b> nx=0;</b></p><p> }</p><p&g
100、t;<b> }</b></p><p><b> P1=0x00;</b></p><p><b> }</b></p><p> if(SB2==0) //X反轉</p><p><b&g
101、t; {</b></p><p> // delayms(10);</p><p> if(SB2==0)</p><p><b> {</b></p><p> while(!SB2)</p><p><b> {</b></p>&
102、lt;p><b> nx--;</b></p><p> P1=motorstep_x[nx];</p><p> delayms(3);</p><p><b> if(nx==0)</b></p><p><b> nx=8;</b></p>
103、;<p><b> }</b></p><p><b> }</b></p><p><b> P1=0x00;</b></p><p><b> }</b></p><p> if(SB3==0)
104、 //Y正轉</p><p><b> {</b></p><p> // delayms(10);</p><p> if(SB3==0)</p><p><b> {</b></p><p> while(!SB3)</
105、p><p><b> {</b></p><p> P1=motorstep_y[ny];</p><p> delayms(3);</p><p><b> ny++;</b></p><p><b> if(ny==8)</b></p&g
106、t;<p><b> ny=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> P1=0x00;</b></p><p><b> }</b>&l
107、t;/p><p> if(SB4==0) //Y反轉</p><p><b> {</b></p><p> // delayms(10);</p><p> if(SB4==0)</p><p><b> {&l
108、t;/b></p><p> while(!SB4)</p><p><b> {</b></p><p><b> ny--;</b></p><p> P1=motorstep_y[ny];</p><p> delayms(3);</p>
109、;<p><b> if(ny==0)</b></p><p><b> ny=8;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> P1=0x00;</
110、b></p><p><b> }</b></p><p> if(SB5==0) //關閉顯示</p><p><b> {</b></p><p> max7219w(0x0c,0x00);</p>&l
111、t;p><b> }</b></p><p> if(SB6==0) //打開顯示</p><p><b> {</b></p><p> max7219w(0x0c,0x01);</p><p><b> }&
112、lt;/b></p><p><b> }</b></p><p> void BJTdate() //日角計算子程序</p><p><b> {</b></p><p> unsigned char dat_m,dat
113、_d,h1; //BCD to 10D</p><p> dat_m=ds1302out(0x89);</p><p> h1=dat_m>>4;</p><p><b> h1*=10;</b></p><p> dat_m=dat_m&0x0f;</p><p>
114、 dat_m+=h1;</p><p> dat_d=ds1302out(0x87);</p><p> h1=dat_d>>4;</p><p><b> h1*=10;</b></p><p> dat_d=dat_d&0x0f;</p><p> dat_d+
115、=h1;</p><p> kesitemp=(float)(datenum[dat_m]+(int)(dat_d)); //積日</p><p> kesi=(23.45*sin(2*PAI*(284+kesitemp)/365))*PAI/180; // 赤緯角</p><p> //kesitemp=((float)(datenum[d
116、at_m]+(int)(dat_d))-1)*2*PAI/365; //算法二;</p><p> //kesi=0.00689-0.39951*cos(kesitemp)+0.07208*sin(kesitemp)</p><p> // -0.00680*cos(2*kesitemp)+0.00090*sin(2*kesitemp)</p><p&g
117、t; // -0.00269*cos(3*kesitemp)+0.00151*sin(3*kesitemp) ;</p><p><b> }</b></p><p><b> 總 結</b></p><p> 經過上述硬件設計和軟件編程,最后要進行仿真測試,以檢測設計是否達到預定要求。測試在仿真軟件P
118、rotues 7.8中進行,此軟件內元件種類繁多,使用方便,繪制電路圖也很簡便。參數主要有兩部分,一是系統(tǒng)的邏輯控制是否正確,各部分是否能夠正確而穩(wěn)定地執(zhí)行任務;二是檢查角度追蹤的效果,是否能追上太陽,角度是否準確。下面介紹調試過程。</p><p> 先介紹最終的控制對象——太陽能電池板是受兩個步進電機雙軸控制的。X軸延南北方向安置,y軸延東西方向,分別由X、Y兩個步進電機驅動。為方便調試,規(guī)定X軸自東向西為
119、正,對應電機為順時針轉動;Y軸自南向北旋轉為正轉,對應電機順時針。電池板的初始位置是當地的水平狀態(tài),兩個方向上各有一個限位開關提供輔助定位。</p><p> 在仿真時,系統(tǒng)上電后,單片機開始執(zhí)行程序,短暫靜默后,數碼管亮起并顯示出當前時間,為時分秒格式;而后稍等片刻,進行第一次角度計算中斷,然后兩個步進電機會以大角度從初始位置調整到當前正確位置,隨后等待下一次中斷計算。六個按鍵也通過測試,功能正常。光照檢測休
120、眠與喚醒也是重點。當光敏二極管由于光照不足而阻斷時,此部分電路給單片機以高電平,經由軟件取反進入中斷,而后執(zhí)行中斷程序:兩電機在限位開關協(xié)助下相繼復位,使電池板回到初始位置,然后顯示關閉,單片機掉電,系統(tǒng)進入休眠狀態(tài)。當復位電路中的光敏二極管受光照又導通時,單片機復位,系統(tǒng)開始新一天的工作。</p><p> 下表是仿真時測試的一組數據,測試時間:2014.06.18 ;地點:東經112°34′北緯
121、 37°52′;即太原火車站的地理坐標。表中標準值來自華中農大開發(fā)的日梭萬年歷,比較有權威性。</p><p> 表5.1 仿真測試記錄</p><p> 經過仿真調試,系統(tǒng)能夠正常地按照預定的思路運行,各部分功能正常,能夠進行追日,從上表中可以看出精度應該可以滿足實際要求。</p><p> 本文主要研究設計了自動跟蹤太陽智能型太陽能系統(tǒng),旨在設計
122、出一種廉價、穩(wěn)定易于推廣的控制系統(tǒng),經過學習前人和一些改進創(chuàng)新,基本實現(xiàn)了追日功能,但要真正投入應用,還需要更加深入的研究改進。 </p><p> 本課題在研究過程中主要進行了以下工作: </p><p> ?。?)比較目前國內外的太陽追蹤方式,選擇了以單片機為控制核心的系統(tǒng),選擇太陽角度追蹤模式,使得系統(tǒng)有較高的穩(wěn)定性和可行性。 </p><p> (2)選
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫度自動控制畢業(yè)設計--基于51單片機的溫度自動控制系統(tǒng)設計研究
- 溫度自動控制畢業(yè)設計--基于51單片機的溫度自動控制系統(tǒng)設計研究
- 《基于51單片機的水溫自動控制系統(tǒng)應用》畢業(yè)設計(論文)
- 基于單片機的溫濕度自動控制系統(tǒng)設計畢業(yè)設計
- 基于單片機的溫濕度自動控制系統(tǒng)設計-畢業(yè)設計
- 畢業(yè)設計之基于單片機的溫室大棚自動控制系統(tǒng)
- 基于單片機的溫室自動控制系統(tǒng)設計
- 基于avr單片機水溫自動控制系統(tǒng)設計
- 基于單片機的染色自動控制系統(tǒng)設計.pdf
- 單片機室內溫度自動控制系統(tǒng)的設計
- 設計之基于單片機的溫室大棚自動控制系統(tǒng)
- 基于單片機的溫室自動控制系統(tǒng)
- 基于avr單片機水溫自動控制系統(tǒng)
- 基于c51單片機的船舶輔鍋爐水位自動控制系統(tǒng)設計
- 基于單片機自動控制系統(tǒng)調度方法
- 基于c51單片機的船舶輔鍋爐水位自動控制系統(tǒng)設計【畢業(yè)論文】
- 基于單片機的魚用投餌機自動控制系統(tǒng)的設計
- 基于單片機的節(jié)水灌溉自動控制系統(tǒng)設計開題報告
- 基于單片機的溫度自動控制系統(tǒng)的課程設計
- 基于c51單片機的船舶輔鍋爐水位自動控制系統(tǒng)設計2
評論
0/150
提交評論