版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計論文</b></p><p> 題 目: 太陽跟蹤儀系統(tǒng)設(shè)計 </p><p> 院 系: 自動控制系 </p><p> 專業(yè)班級: 自動化 </p><p> 組 長
2、: </p><p> 二○一三 年 一 月 十三 日</p><p><b> 太陽跟蹤儀系統(tǒng)設(shè)計</b></p><p> 摘要:本論設(shè)計的是一個太陽方位全自動跟蹤儀,實現(xiàn)了利用攝像頭來始終跟蹤太陽。實驗以單片機89系列芯片STC89C51作為主控芯片來設(shè)計高精度的太陽跟蹤儀,分
3、別通過高精度的永磁力矩直流電機精確控制其角位移。跟蹤儀利用攝像頭采集信息,根據(jù)得到的圖像灰度值,設(shè)定一個閥值進行二值化,確定兩個方向的偏差,接著用PID算法來分別控制x和y兩個方向的偏差最終實現(xiàn)攝像頭實時精確地跟蹤太陽。 </p><p> 關(guān)鍵詞:太陽跟蹤,單片機89C51 ,攝像頭,二值化 ,PID算法</p><p><b> 引言</b></
4、p><p> 太陽跟蹤儀是使得攝像頭能夠跟蹤上太陽中心,如果可以實現(xiàn)這一功能,則在實際應(yīng)用中,可以改進使得太陽能電池板隨時正對太陽,讓太陽光的光線隨時垂直照射太陽能電池板的動力裝置,采用太陽能跟蹤儀能顯著提高太陽能光伏組件的發(fā)電效率。</p><p> 所以本文是實現(xiàn)太陽能高效率利用的前提實驗。</p><p><b> 硬件介紹</b>&l
5、t;/p><p><b> 1.1單片機模塊</b></p><p> 單片機又稱單片微控制器, 是在一塊芯片中集成了CPU( 中央處理器)、RAM( 數(shù)據(jù)存儲器)、ROM( 程序存儲器)、定時器/ 計數(shù)器和多種功能的I/O( 輸入/ 輸出) 接口等一臺計算機所需要的基本功能部件,從而可以完成復(fù)雜的運算、邏輯控制、通信等功能。</p><p>
6、 在簡單了解了什么是單片機之后,然后我們來構(gòu)建單片機的最小系統(tǒng),單片機的最小系統(tǒng)就是讓單片機能正常工作并發(fā)揮其功能時所必須的組成部分,也可理解為是用最少的元件組成的單片機可以工作的系統(tǒng)。對51 系列單片機來說, 最小系統(tǒng)一般應(yīng)該包括: 單片機、時鐘電路、復(fù)位電路、輸入/ 輸出設(shè)備等。STC89C52單片機的引腳圖1-1-1所示:</p><p> 圖1-1-1 STC89C52單片機引腳圖</p>
7、;<p> 1.1.1 單片機最小系統(tǒng)</p><p> 單片機的最小系統(tǒng)框圖如圖1-1-2所示,單片機的最小系統(tǒng)的仿真圖如圖1-1-3所示:</p><p> 圖1-1-2 單片機最小系統(tǒng)框圖</p><p> 圖1-1-3 單片機最小系統(tǒng)仿真電路圖</p><p> 1.1.2 單片機復(fù)位電路</p>
8、<p> 復(fù)位是單片機的初始化操作,只要給RESET引腳加上2個機器周期以上的高電平信號,即可使單片機復(fù)位。除了進入系統(tǒng)的正常初始化之外,當(dāng)程序運行出錯或是操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為了擺脫死鎖狀態(tài),也需要按復(fù)位鍵重新復(fù)位。</p><p> 在系統(tǒng)中,為了實現(xiàn)上述的兩項功能,采用常用的按鍵電平復(fù)位電路,這樣復(fù)位鍵有復(fù)位和停止兩個功能,如圖1-1-4所示:</p><p&
9、gt; 圖1-1-4 復(fù)位電路</p><p> 從圖中可以看出,當(dāng)系統(tǒng)得到工作電壓的時候,復(fù)位電路工作在上電自動復(fù)位狀態(tài),通過外部復(fù)位電路的電容充電來實現(xiàn),只要Vcc的上升時間不超過1ms就可以實現(xiàn)自動上電復(fù)位功能。在本系統(tǒng)中,采用10uF的電容和100kΩ的電阻來實現(xiàn)復(fù)位電路。當(dāng)系統(tǒng)出錯時,直接按開關(guān)實現(xiàn)模擬系統(tǒng)上電復(fù)位的功能,從而實現(xiàn)系統(tǒng)重新復(fù)位啟動。</p><p> 1.
10、1.3 時鐘電路</p><p> 時鐘電路是用于產(chǎn)生單片機工作時所必需的時鐘信號。時鐘是單片機的心臟,單片機各功能部件的運行都是以時鐘頻率為基準(zhǔn)的,有條不紊地一拍一拍地工作。時鐘頻率直接影響單片機的速度,時鐘電路的質(zhì)量也直接影響單片機系統(tǒng)的穩(wěn)定性。在本系統(tǒng)中采用外部時鐘方式的電路,如圖1-1-5所示:</p><p> 圖1-1-5 系統(tǒng)時鐘電路</p><p&
11、gt; 在本設(shè)計中的電容C1、C2典型值為30±10 pF。外接代內(nèi)容的值雖然沒有嚴(yán)格的要求,但是電容的大小會影響振蕩器的穩(wěn)定性和起振的快速性。同時,在系統(tǒng)中采用12MHz的晶體振蕩器來產(chǎn)生時鐘脈沖。這樣可以滿足系統(tǒng)在設(shè)計時的機器周期的需要。</p><p><b> 1.2圖像采集模塊</b></p><p> 1.2.1 攝像頭ov7620的介紹&
12、lt;/p><p> OV7620 是美國OmniVision 公司開發(fā)的CMOS 彩色圖像傳感器芯片, 該芯片將CMOS 傳感器技術(shù)與數(shù)字接口組合, 用于視頻圖像應(yīng)用。OV7620 芯片的基本參數(shù)為:</p><p> 1) 單片1/ 3 英寸彩色/ 黑白數(shù)字圖像傳感器, 48 引腳。</p><p> 2) 隔行掃描或逐行掃描。</p><
13、p> 3) 圖像尺寸: 4. 86* 3. 64 mm。像素尺寸:</p><p> 7. 6 um ×7. 6 um</p><p> 4) 有效像素: 664* 492, 默認(rèn)值: 640* 480;</p><p> 5) 內(nèi)部10 bit 雙通道A/ D 轉(zhuǎn)換, 8/ 10b it 輸出。</p><p>
14、6) 曝光設(shè)定500: 1;</p><p> 7) 信噪比> 48 dB;</p><p> OV7620 是高性能的數(shù)字圖像傳感器, 可提供彩色/ 黑白多種格式的輸出, 且支持8/ 16 Bit 60H Z YCrCb 4: 2: 2格式, 8/ 16 Bit RGB RAW 數(shù)據(jù), 和CCIR601/ CCIR656 格式。并可用SCCB 進行內(nèi)部寄存器編程。在輸出數(shù)字視頻
15、流的同時還提供像素時鐘PCLK、水平參考信號HREF、垂直同步信號VSYNC 便于外部電路讀取圖像, 并可編程設(shè)置HREF、V SYNC 在圖像局部開窗, 輸出窗口圖像。它被廣泛應(yīng)用在網(wǎng)絡(luò)攝像頭、攝像手機等產(chǎn)品中。由它組成的圖像采集系統(tǒng),比較常見的設(shè)計方法為OV7620搭配OV5ll+或CPLD/FPGA。</p><p> OV7620有4個同步信號,VSYNC(垂直同步信號)、FODD(奇數(shù)場同步信號)、H
16、SYNC(水平同步信號)和PCLK(像素同步信號)。采用連續(xù)掃描方式時,只使用VSYNC和HSYNC、PCLK三個同步信號,為檢測OV7620掃描窗口的有效大小,還引入HREF水平參考信號。ARM的三個外部中斷引腳分別作為3個同步信號的輸入,在內(nèi)存中定義一個二維數(shù)組存儲圖像數(shù)據(jù),一維用于水平同步信號計數(shù),二維用于像素同步信號計數(shù)。圖像采集的流程為:初始化好OV7620后,使能VSYNC對應(yīng)的中端,在中斷服務(wù)程序中判斷是否已取得一幀數(shù)據(jù),
17、接收到則進行數(shù)據(jù)處理。</p><p> 1.2.2 工作原理</p><p> 圖像傳感器即攝像頭,是組成機器視覺系統(tǒng)的非常重要的元器件。根據(jù)其原理不同分?jǐn)z像頭主要分為兩種:CCD(Charge Coupled Device)攝像頭,CMOS攝像頭。CCD也稱電耦合器件,其工作原理是:被攝物體反射光線到攝像頭上,經(jīng)過鏡頭聚焦到CCD感光芯片上,感光芯片根據(jù)光線的強弱積聚相應(yīng)電荷,經(jīng)周
18、期性放電而產(chǎn)生表示圖像的電信號。CMOS攝像頭其實跟CCD差不多,也是將光轉(zhuǎn)換成電信號的器件。它們的差異之處就是圖像的掃描方式不同,CCD是采用連續(xù)掃描方式,即它只有等到最后一個像素掃描完成后才進行放大;CMOS傳感器的每個像素都有一個將電荷放大為電信號的轉(zhuǎn)換器。 </p><p> CMOS傳感器的圖像采集方式為主動式, 感光二極管所產(chǎn)生的電荷直接由晶體管放大輸出,不需要外加電壓,5V的電壓就可以工作,所以C
19、MOS的功耗比CCD要小。由于CMOS功耗小,較CCD要便宜,而且圖像質(zhì)量滿足要求。 本次設(shè)計采用的OV7620這一款攝像頭。</p><p> 1.2.3 工作時序 </p><p> OV7620的同步信號時序如下:場同步信號VSYN為兩個正脈沖之間掃描一幀的定時,即完整的一幀圖像在兩個正脈沖之間;行同步信號HREF掃描該幀圖像中各行像素的定時,即高電平時為掃描一行像素的有效時間;
20、像素同步信號PCLK為讀取有效像素值提供同步信號,高電平時輸出有效圖像數(shù)據(jù)。VYNSC 是判斷是否一幅圖像開始,周期是 20ms, 其中高電平持續(xù)時間很短;HREF 是判斷是否一行圖像的開始,周期是 63us 左右,其中高電平持續(xù)時間為 40US,低電平持續(xù)時間 23US.攝像頭實物圖如圖1-2-1所示:</p><p> 圖1-2-1 攝像頭實物圖</p><p> PIN1-PIN
21、8 灰度信號輸出接口 Y0-Y7</p><p> PIN11 SCCB數(shù)據(jù)接口 SDA</p><p> PIN12 奇偶場同步信號 PODD</p><p> PIN13 SCCB數(shù)據(jù)時鐘 SCL</p><p> PIN14 行中斷信號 HREF</p><p> PIN16 場中斷信號 VSYN<
22、;/p><p> PIN18 像素同步信號 PCLK(也叫TCLK)</p><p> PIN32 模擬信號輸出接口 VTO</p><p><b> 1.3電機驅(qū)動模塊</b></p><p> 1.3.1 L298N芯片的介紹</p><p> L298N是SGS公司的產(chǎn)品,是具有15引
23、腳的芯片,內(nèi)部包含4通道邏輯驅(qū)動電路。是一種二相和四相電機的專用驅(qū)動器,即內(nèi)含二個H橋的高電壓大電流雙全橋式驅(qū)動器,接收標(biāo)準(zhǔn)TTL邏輯電平信號,可驅(qū)動46V、2A以下的電機。L298N的引腳圖如圖1-3-1所示:</p><p> 圖1-3-1 L298N引腳圖</p><p> 1.3.2 L298N的內(nèi)部原理</p><p> L298N有兩路電源分別
24、為邏輯電源和動力電源,上圖中VSS接6V為邏輯電源,VS接12V為動力電源。IN1、IN2接控制信號,EnA使能端A接入低電平。OUT1與OUT2分別為單片機控制兩個電機的輸入端。L298N的內(nèi)部原理圖如圖1-3-2所示,L298N的邏輯功能如表1-3-1所示:</p><p> 圖1-3-2 L298N的原理圖</p><p> 表1-3-1 L298N的邏輯功能</p>
25、;<p> 1.3.3 電機驅(qū)動電路的仿真</p><p> 由單片機直接輸出的脈沖不足以驅(qū)動步進電機正常工作所以需要驅(qū)動電路給直流電機提供電源,我們所使用的電機一般為直流電機,主要用到永磁直流電機、伺服電機及步進電機三種。直流電機的控制很簡單,性能出眾,直流電源也容易實現(xiàn)。在本設(shè)計中采用型號為L298N的芯片,使直流電機正常工作。驅(qū)動信號由P1口的P1.0、P1.1、P1.2、P1.3輸出,分
26、別與驅(qū)動芯片的IN1、IN2、IN3、IN4相連,電路如圖1-3-3所示:</p><p> 圖1-3-3電機驅(qū)動電路</p><p><b> 1.4電源模塊</b></p><p> 1.4.1電機驅(qū)動電源:可調(diào)電源</p><p> 可調(diào)電源是采用當(dāng)前國際先進的高頻調(diào)制技術(shù),其工作原理是將開關(guān)電源的電壓和電
27、流展寬,實現(xiàn)了電壓和電流的大范圍調(diào)節(jié),同時擴大了目前直流電源供應(yīng)器的應(yīng)用。與傳統(tǒng)電源相比高頻直流電源就較具有體積小、重量輕、效率高等優(yōu)點,同時也為大功率直流電源減小體積創(chuàng)造了條件,此電源又稱高頻可調(diào)式開關(guān)電源??烧{(diào)直流穩(wěn)壓電源保護功能齊全,過壓、過流點可連續(xù)設(shè)置并可預(yù)視,輸出電壓可通過觸控開關(guān)控制。但其缺點也很明顯,大功率的可調(diào)電源體積龐大,攜帶不方便。可調(diào)電源實物如圖1-4-1所示:</p><p> 圖1-
28、4-1 可調(diào)電源</p><p> 1.4.2單片機穩(wěn)壓電源:LM2940</p><p> LM2940是常用的串聯(lián)型線性穩(wěn)壓管,它具有紋波小、電路結(jié)構(gòu)簡單的優(yōu)點,對于單片機,需要提供穩(wěn)定的5V電源,由于LM2940的穩(wěn)壓的線性度非常好,所以選用LM2940單獨對其進行供電;LM2940/2940C還含有一個靜態(tài)電流降低電路,當(dāng)輸入輸出壓差超過3V時,可以減少地電流。在輸出電流為1A
29、或輸入輸出壓差為5V時,靜態(tài)電流僅為30MA.此外,該電路內(nèi)還設(shè)有防反接電路,防止輸入電壓反接對電路造成損害。因此,LM2940/2940C特別適合于汽車、機動車輛、船舶等的使用。LM2940CT的接線圖如圖1-4-2所示:</p><p> 圖1-4-2 LM2940CT接線圖</p><p> 輸出電壓固定的低壓差三端穩(wěn)壓器;輸出電壓5V;輸出電流1A;輸出電流1A時,最小輸入
30、輸出電壓差小于0.8V;最大輸入電壓26V;工作溫度-40~+125℃;內(nèi)含靜態(tài)電流降低電路、電流限制、過熱保護、電池反接和反插入保護電路。LM2940CT的實物圖如圖1-4-3所示,LM2940引腳圖如1-4-4所示:</p><p> 圖1-4-3 LM2940CT實物圖</p><p> 圖1-4-4 LM2940CT引腳介紹</p><p><b&
31、gt; 1.5系統(tǒng)原理敘述</b></p><p> 本方案的太陽光跟蹤系統(tǒng)是有OV7620攝像頭、STC89C52單片機、時鐘電路、穩(wěn)壓電源模塊、電機驅(qū)動模塊等主要模塊組成。經(jīng)過攝像頭OV7620采集圖像,通過對采集到的圖像經(jīng)過單片機計算出相應(yīng)的太陽相對的角度值,太陽光控制電路根據(jù)太陽的位置移動。系統(tǒng)總框圖如圖1-5-1所示,系統(tǒng)進程框圖如圖1-5-2所示:</p><p&g
32、t; 圖1-5-1 系統(tǒng)總框圖</p><p> 圖1-5-2 系統(tǒng)進程框圖</p><p><b> 2. 系統(tǒng)程序設(shè)計</b></p><p><b> 2.1程序流程 </b></p><p> 系統(tǒng)的總體程序流程如圖2-1-1所示:</p><p> 圖2
33、-1-1 總體程序流程圖</p><p><b> 2.2 C語言實現(xiàn)</b></p><p> 用C語言實現(xiàn)圖像的二值化和中心的確定,將拍出來的圖像看做一個數(shù)組,用0、1分別代表明、暗,這樣拍出來的圖像就相當(dāng)于0和1組成的矩陣,求出值為0的區(qū)域的中心就是太陽的中心。</p><p> 2.2.1 圖像的二值化</p>&
34、lt;p> 首先,采集到的圖像是一個個灰度值,我們需要用一個閥值來使這些灰度值二值化,凡是小于閥值的都設(shè)1,大于閥值的都設(shè)為0。下面就是二值化的子程序:</p><p> void ezh() // 二值化子程序</p><p><b> { </b></p><p>&l
35、t;b> int i,j;</b></p><p> for(i=0;i<hang_max;i++) </p><p> for(j=0;j<lie_max;j++)</p><p> {if(pic_data[i][j]>=fz) //像素值大于閾值,將該像素設(shè)為0</p><p&
36、gt; pic_data[i][j]=0; </p><p> else //像素值小于閾值,將該像素設(shè)為1</p><p> pic_data[i][j]=1; </p><p><b> }</b></p><p><b>
37、}</b></p><p> 2.2.2 確定太陽的中心</p><p> 二值化以后,能夠給出太陽的大概輪廓,是一塊為像素為0的連續(xù)區(qū)域。如圖2-2-1所示:</p><p> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 </p><p> 1 1 1 1 1 1 1 1 0 0 1 1
38、1 1 1 1 1 1 1</p><p> 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1</p><p> 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1</p><p> 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 </p><p> 1 1
39、 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 </p><p> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 </p><p> 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 </p><p> 圖2-2-1 二值化后的矩陣圖</p><p> 灰度
40、值為0的點的坐標(biāo)為(x,y),由于區(qū)域連續(xù),首先求二值化后的矩陣中值最小的那一行為中心點x值,接著求二值化后的矩陣中值最小的那一列為中心點y值,這樣得到的(x,y)這個點就是太陽的中心點。</p><p> 求太陽中心的程序如下:</p><p> void center() //求中心點子程序</p><p>&l
41、t;b> {</b></p><p> int min=20,i,j,sum=0;</p><p> for(i=0;i<hang_max;i++) //求二值化后的矩陣中值最小的那一行為中心點x值</p><p><b> {</b></p><p> for(j=
42、0;j<lie_max;j++) </p><p> { sum=sum+pic_data[i][j]; }</p><p> if(min>sum)</p><p><b> { </b></p><p><b> min=sum;</b></p>
43、<p> center_x=i; //中心行號</p><p><b> }</b></p><p><b> sum=0; </b></p><p> } </p><p> sum=0;min=20;</p>
44、<p> for(i=0;i<lie_max;i++) //求二值化后的矩陣中值最小的那一列為中心點y值</p><p><b> {</b></p><p> for(j=0;j<hang_max;j++)</p><p> { sum=sum+pic_data[i][j]; }</p&
45、gt;<p> if(min>sum)</p><p><b> { </b></p><p><b> min=sum;</b></p><p> center_y=i; //中心列號</p><p><b> }<
46、/b></p><p><b> sum=0; </b></p><p><b> } </b></p><p><b> }</b></p><p> 2.2.3誤差的PID算法</p><p> 采用增量式的控制算法如下:</
47、p><p> signed int pid(signed int a ) // pid算法子程序</p><p><b> { </b></p><p> float q0,q1,q2; //定義比例項,積分項,微分項輸出項</p><p> ei=center_imgx-a;
48、 //x軸向誤差</p><p> if(k==0&&ti==0&&td==0) //比例項系數(shù),積分項,微分項系數(shù)為0時各項輸出為0</p><p><b> { q0=0;</b></p><p><b> q1=0;</b></p><p>
49、<b> q2=0;</b></p><p><b> }</b></p><p> if(k!=0&&ti!=0) //比例項,微分項系數(shù)不為0時,通過pid公式計算各項輸出值</p><p><b> {</b></p><p> q0=
50、k*(ei-e1);</p><p> q1=k*Ts*ei/ti;</p><p> q2=k*td*(ei-2*e1+e2)/Ts; </p><p><b> }</b></p><p> if(ti==0) //積分項系數(shù)為0時,各項輸出值</p><
51、p><b> {</b></p><p> q0=k*(ei-e1);</p><p><b> q1=0;</b></p><p> q2=k*td*(ei-2*e1+e2)/Ts;</p><p><b> }</b></p><p>
52、; e2=e1; //將上一次所的誤差賦值給e2</p><p> e1=ei; //將這一次所的誤差賦值給e1</p><p> if(q1>5){q1=5;}</p><p> if(q1<-5){q1=-5;}</p><p> op=op
53、+q0+q1+q2; //計算最后輸出值</p><p> if(op>5){op=5;} //限幅</p><p> if(op<-5){op=-5;}</p><p> return op; //返回最后輸出值</p><p><b>
54、; }</b></p><p> 2.2.4 單片機控制電機正反轉(zhuǎn) 的PWM信號</p><p> 下面就是電機正反轉(zhuǎn)的子程序:</p><p> void zfzx() //x軸電機正反轉(zhuǎn)子程序</p><p><b> { </b></p>
55、<p> if(opx>0) //x軸pid輸出誤差為正向誤差,電機正向轉(zhuǎn)動</p><p><b> {</b></p><p> fzx=0; //關(guān)閉x軸l298n反向橋路</p><p> zzx=px; //將電機驅(qū)動信號給x軸l2
56、980n正向橋路</p><p><b> }</b></p><p> if(opx<0) //x軸pid輸出誤差為負向誤差,電機反向轉(zhuǎn)動</p><p><b> {</b></p><p> zzx=0; //關(guān)閉x軸l298n正
57、向橋路</p><p> fzx=px; //將電機驅(qū)動信號給x軸l2980n反向橋路 </p><p><b> } </b></p><p><b> }</b></p><p> void zfzy() //
58、y軸電機正反轉(zhuǎn)子程序</p><p><b> { </b></p><p> if(opy>0) //y軸pid輸出誤差為正向誤差,電機正向轉(zhuǎn)動</p><p><b> {</b></p><p> fzy=0; //關(guān)閉
59、y軸l298n反向橋路</p><p> zzy=py; //將電機驅(qū)動信號給y軸l2980n正向橋路</p><p><b> } </b></p><p> if(opy<0) //y軸pid輸出誤差為負向誤差,電機反向轉(zhuǎn)動</p><p><b&g
60、t; {</b></p><p> zzy=0; //關(guān)閉y軸l298n正向橋路 </p><p> fzy=py; //將電機驅(qū)動信號給y軸l2980n反向橋路 </p><p><b> } </b></p><p><b> } </b&
61、gt;</p><p><b> 3.軟件的調(diào)試</b></p><p> 3.1 把程序送到單片機</p><p> 我們把寫好的程序送給單片機用到了Stc-isp這個軟件,使用如下:</p><p> 第一步 打開stp_isp_v480.exe 如圖3-1-1所示:</p><p>
62、; 圖3-1-1 stp_isp_v480.exe文件</p><p> 第二步 選擇單片機類型、com口、最低和最高波特率 如圖3-1-2所示:</p><p> 圖3-1-2 步驟二附圖</p><p> 第三步 打開并添加要燒錄的文件。如圖3-1-3所示:</p><p> 圖3-1-3 步驟三附圖</p>&l
63、t;p> 第四步 點擊下載,如圖3-1-4所示:</p><p> 圖3-1-4 步驟四附圖</p><p> 第五步 給單片機開發(fā)板上電,如圖3-1-5所示:</p><p> 圖3-1-5 步驟五附圖</p><p> 第六步 燒錄程序完成,如圖3-1-6所示:</p><p> 圖3-1-6
64、 步驟六附圖</p><p> 3.2 模擬電路仿真</p><p> 在繪制完電路圖后,將編好的程序輸入軟件內(nèi)檢查所編程序是否正確,檢查程序無誤后裝入單片機內(nèi),用Proteus進行仿真,該環(huán)節(jié)主要模擬了將太陽跟蹤系統(tǒng)的X,Y軸向的誤差轉(zhuǎn)換成電機所需要的驅(qū)動信號。本方案的Proteus仿真圖中的KEY1模擬了太陽中心處于以攝像頭OV7620中心為原點的坐標(biāo)的第一象限,設(shè)Y軸正方向為向上
65、,X軸正方向為向下。即在X軸,Y軸上兩方向的誤差均屬于正向誤差位移,此時將該誤差轉(zhuǎn)換成電機驅(qū)動信號,控制X軸方向的電機與控制Y軸方向的電機均向正方向轉(zhuǎn)動 ,到達太陽中心。同理,KEY2模擬了第二象限的誤差位移,KEY3模擬了第三象限的誤差位移,KEY4模擬了第四象限的誤差位移。而KEY5則模擬了X,Y電機在轉(zhuǎn)動過程中,從而攝像頭OV7620不斷接近太陽中心,每按下KEY5則減小電機驅(qū)動信號的占空比,當(dāng)?shù)竭_太陽中心,此時的占空比為0,電機
66、也停止轉(zhuǎn)動,從而實現(xiàn)成功跟蹤太陽。Proteus仿真圖如圖3-2-1所示:</p><p> 圖3-2-1 Protueus仿真圖</p><p> 系統(tǒng)進入仿真模式后,令KEY1按鈕閉合,代表了太陽中心處于以攝像頭OV7620中心為原點的坐標(biāo)的第一象限,使X軸直流電機正轉(zhuǎn)工作,Y軸直流電機正轉(zhuǎn)工作,到達太陽中心。此時需要不斷調(diào)整KEY5來使誤差不斷減小,最后使X軸直流電動機和Y軸直
67、流電動機同時停止工作,即已經(jīng)到達太陽中心。當(dāng)按下KEY1時的仿真圖如圖3-2-2所示,當(dāng)按下多次KEY5時的仿真圖如圖3-2-3所示:</p><p> 圖3-2-2 按下KEY1時的仿真圖</p><p> 圖3-2-3 多次按下KEY5后的仿真圖</p><p> 3.3程序的調(diào)試心得</p><p> 一,用頭腦去分析思考與錯誤
68、征兆有關(guān)的信息。二,避開死胡同。三,只把調(diào)試工具當(dāng)做手段。利用調(diào)試工具,可以幫助思考,但不能代替思考,因為調(diào)試工具給的是一種無規(guī)律的調(diào)試方法。四,避免用試探法,最多只能把它當(dāng)做最后手段。五,再出現(xiàn)錯誤的地方,可能還有別的錯誤。六,修改錯誤的一個常見失誤是只修改了這個錯誤的征兆或這個錯誤的表現(xiàn),而沒有修改錯誤本身。如果提出的修改不能解釋與這個錯誤有關(guān)的全部線索,那就表明只修改了錯誤的一部分。七,注意修正一個錯誤的同時可能會引入新的錯誤。八
69、,修改錯誤的過程將迫使人們暫時回到程序設(shè)計階段。修改錯誤也是程序設(shè)計的一種形式。九,修改源代碼程序,不要改變目標(biāo)代碼。</p><p><b> 總結(jié)</b></p><p> 4.1團隊管理的心得體會 </p><p> 對于每一個小組成員,我們都應(yīng)明確他所善長和能勝任的方面,并且每一成員都應(yīng)自發(fā)地承接自己所擅長的工作,遇到問題時要與大
70、家一起商量討論,找出切實可行的方案,這樣才能發(fā)揮每一個成員的作用,發(fā)揮出小組團隊的能力,更好的完成課題。 </p><p> 我們小組在本此課題中正是這樣做的。我們首先共同商討,根據(jù)小組成員能力和一些技術(shù)上的問題,發(fā)揮自己的創(chuàng)新意識和對現(xiàn)實的應(yīng)用價值,一起確定了設(shè)計思想。小組成員根據(jù)自己能力提出自己接受的任務(wù),最后再根據(jù)實際情況,大家一起均衡分配工作任務(wù)。并在各自完成任務(wù)的同時,周期性地一起討論課程的進程,并對
71、遇到的一些問題,提出來一起解決,這樣我們小組成員可對整個項目有一個全面的了解,知道自己下一步該如何做,其中最重要的是解決遇到的問題,不會因一個小方面的問題而使整個項目無法完成,與此同時還要善于與其他小組交流,并一起對所交流問題一起研討。這樣才能從討論中找出最好的方法,這就是我們小組在本次課題中的基本過程。 </p><p> 在設(shè)計中,我們遇到了很多問題和困難,在程序的編寫上,我們始終無法實現(xiàn)實驗的要求,于是我
72、們組的成員們冒著嚴(yán)寒跑到圖書館里參考相關(guān)的書籍,有的組員利用研究生還沒有回這個機會,抓緊時間去請教研究生學(xué)長,最后經(jīng)過同學(xué)們的努力,我們的程序終于調(diào)試成功了。我們的成功來之不易,凝聚著成員們多少辛勤的汗水??! </p><p> 4.2 課程設(shè)計的心得體會 </p><p> 在通過本次課程設(shè)計中,我們遇到很多問題,與此同時,我們也學(xué)到了很多,對于本次課題的心得體會,我們覺得有以下幾點
73、: </p><p> 1、不管做什么事,計劃是很重要的。沒有一個完好的計劃,做事情就會沒有一個好的順序,做事情會比較亂,很難成功。而有一個好的計劃,不管做什么事都會事半功倍,而且做事心中有數(shù),明確重點和緩急,不會有疏漏。這樣才能提高成功率。 </p><p> 2、做事要多動腦,選出最好的方法。一件事往往有多種解決方法,一個好的方法,不僅能使事情事半功倍,而且往往決定最后的成與敗,所
74、以做事時一定要多動一下腦筋,想出最好的方法。 </p><p> 3、要注意細節(jié)。細節(jié)決定成敗,這句話在這次課題中不僅一次得到了印證,特別是在軟件的編程過程中,一點點的錯誤就會使你整個程序不能運行。因此我們不僅僅要有整體意識,也要注意細節(jié),不要因一個關(guān)鍵地方的一個細節(jié)而導(dǎo)致滿盤皆輸。 </p><p> 4、團隊合作很重要。團隊做一件事時,要發(fā)揮出門一個人的長處。人無完人,但一個團隊可
75、以互相幫助,互相補充,只要互相合作,個人完成各自專長的,離成功就只有一步之遙。除此之外,人人總是有疏漏的方面,但是只要互相合作,互相交流,就會考慮問題更全面化,在本次課題中,我們組團結(jié)合作不僅事半功倍,而且發(fā)現(xiàn)了一些好的有趣的構(gòu)想,使我們對單片機有了更濃的興趣。 </p><p> 5、最后,也是最重要的一點,通過這次課題,我們學(xué)到了很多有關(guān)單片機方面的知識,也對單片機有了更深入的了解,使我們受益匪淺。<
76、/p><p><b> 參考文獻:</b></p><p> [ 1] 苑瑋琦, 劉麗微. 基于視覺的太陽方位檢測裝置的研究[ J] .計算機測量與控制, 2008, 16( 7) : 911- 913.</p><p> [ 2] 吳靜. 太陽自動跟蹤系統(tǒng)的研究[ D] . 重慶: 重慶大學(xué), 2008.</p><
77、p> [ 3] 付忠良. 圖像閾值選取方法——Otsu 方法的推廣[ J] . 計算機應(yīng)用, 2000, 20( 5) : 37- 39.</p><p> [ 4] 劉京誠, 任松林, 李敏, 等. 智能型雙軸太陽跟蹤控制系統(tǒng)的設(shè)計[ J] . 傳感器與微系統(tǒng), 2008, 27( 9) : 69- 71.</p><p> [ 5] 劉巍, 王志超, 沈垣, 等. 太
78、陽自動跟蹤系統(tǒng)的研究與設(shè)計 [ J] . 水電能源科學(xué), 2009( 27) : 215- 218.</p><p> [ 6] 呂文華, 賀曉雷, 于賀軍, 等. 全自動太陽跟蹤器的研制和應(yīng)用[ J] . 光學(xué)精密工程, 2008, 12( 16) : 2544- 2550.</p><p> [ 7] 關(guān)繼文; 孔令成; 張志華; 高精度太陽能跟蹤控制器設(shè)計與實現(xiàn) 自動化與儀器
79、儀表,2012年03期</p><p> [ 8] 杜云峰,基于單片機的太陽自動跟蹤系統(tǒng)的研究1、湖南文理學(xué)院電氣與信息工程學(xué)院,湖南常德415000;2、電子科技大學(xué)自動化工程學(xué)院,四川成都610054)</p><p> [ 9] 劉京誠 , 任松林, 李敏 , 羅勇 , 楊慶峰,智能型雙軸太陽跟蹤控制系統(tǒng)的設(shè)計(1. 重慶大學(xué)光電技術(shù)及系統(tǒng)教育部重點實驗室,重慶400044;
80、 2. 四川理工學(xué)院機電系,四川自貢643000)</p><p> [10] 一種新型的太陽自動跟蹤系統(tǒng)研究鄒建, 姬 興, 杜海濤; ( 1. 光電技術(shù)及應(yīng)用教育部重點實驗室, 重慶400044; 2. 重慶大學(xué)光電工程學(xué)院, 重慶400044)</p><p> [11] 施玉川.太陽能應(yīng)用[M].陜西科學(xué)出版社,2001.</p><p> [12
81、] 高峰,孫成權(quán),劉全根.太陽能開發(fā)利用的現(xiàn)狀及發(fā)展趨勢[J].世界科技研究與發(fā)展,2001,23(4):35-39.</p><p> [13] 任松林.主動式太陽跟蹤及驅(qū)動系統(tǒng)研究與設(shè)計[D].重慶大學(xué),2008</p><p> [14] 詹華,姚士洪.對我國能源現(xiàn)狀及未來發(fā)展的幾點思考[J].能源工程, 2003(3):1-4.</p><p>
82、 [15] 張寶星.太陽能利用的跟蹤與聚焦系統(tǒng)研究[D].合肥工業(yè)大學(xué),2006.</p><p> [16] 幻余海.太陽能利用綜述及提高其利用率的途徑[J].能源研究與利用, 2004,79(3):8-9.</p><p> [17] 賀曉雷,于賀軍,李建英.太陽方位角的公式求解及其應(yīng)用[J].太陽能學(xué)報, 2008,29(1):69-72.</p><p
83、> [18] 王炳忠,湯潔.幾種太陽位置計算方法的比較研究[J].太陽能學(xué)報,2001, 22(4):413-417.</p><p> [19] 王國安,米鴻濤,鄧天宏.太陽高度角和日出日落時刻太陽方位角年變化范圍的計算[J].氣象與環(huán)境科學(xué),2007,30:161-163.</p><p> [20] 王延杰,宋建中.一種實時自適應(yīng)圖像二值化方法[J].光學(xué)精密工程,
84、 1994,5(2):7-20</p><p> [21] 李鑒慶,左坤隆.圖像閾值選取的一種快速算法[J].計算機與現(xiàn)代化, 2001,6:11-14.</p><p> [22] 孫光靈,周慶松,方傳剛.基于最小類內(nèi)方差的快速閾值分割算法[J].安徽理工大學(xué)學(xué)報(自然科學(xué)版),2005,25(1):39-42.</p><p> [23] 陳冬嵐,劉
85、南京,余玲玲.幾種圖像閾值選取方法的比較與研究[J].電氣技術(shù)與自動化,2003,2(1):77-80.</p><p> [24] Ashok Kumar Saxena and V.Dutta A VERSATILE MICROPROCESSOR BASED CONTROLLER FOR SOLAR TRACKING,Photovoltaic Laboratory ,Centre for Energy St
86、udies Indian Institute of Technology , New Delhi (INDIA)</p><p> [25] D.C. Riawan and C.V. Nayar, Senior Member, IEEE Analysis and Design of a Solar Charge Controller Using Cuk Converter,Department of Elec
87、trical and Computer Engineering Curtin University of Technology, Perth, WA 6845, Australia</p><p> 附錄1:太陽跟蹤誤差模擬仿真程序代碼</p><p> #include<reg52.h></p><p> #include<math.h&g
88、t;</p><p> char center_x; //攝像頭拍攝圖像中心</p><p> char center_y;</p><p> sbit zzx=P1^0; //x軸電機正轉(zhuǎn)信號輸出口</p><p> sbit fzx
89、=P1^1; //x軸電機反轉(zhuǎn)信號輸出口</p><p> sbit zzy=P1^2; //y軸電機正轉(zhuǎn)信號輸出口</p><p> sbit fzy=P1^3; //y軸電機反轉(zhuǎn)信號輸出口</p><p>
90、sbit ox=P2^0; //攝像頭與預(yù)定圖像中心點誤差處于第一象限</p><p> sbit twx=P2^1; //攝像頭與預(yù)定圖像中心點誤差處于第二象限</p><p> sbit thx=P2^2; //攝像頭與預(yù)定圖像中心點
91、誤差處于第三象限</p><p> sbit fx=P2^3; //攝像頭與預(yù)定圖像中心點誤差處于第四象限</p><p> int opx=0,opy=0; //x,y軸軸向pid控制后輸出誤差</p><p> int a=0,b=0,c=0;</p>
92、;<p> int px; //x,y軸電機驅(qū)動信號</p><p><b> int py;</b></p><p> int flag; //定義標(biāo)志位</p><p> void main(void)
93、 //主函數(shù)</p><p><b> {</b></p><p> TMOD=0x01; //選用定時器一</p><p> EA=1; //開總中斷</p><p> EX0=1;
94、 //開外部中斷0</p><p> IT0=1; //外部中斷下降沿有效</p><p> ET0=1; //開定時器0中斷</p><p> TL0=0x18; //定時初值1ms</p><
95、;p> TH0=0xfc;</p><p> TR0=1; //開定時器0</p><p> while(1); //循環(huán)等待中斷</p><p><b> }</b></p><p> chuzhi()
96、 // 設(shè)定center_x,center_y初值函數(shù)</p><p><b> {</b></p><p> if(ox==0) //當(dāng)ox端為低電平時,表示中心點在第一象限</p><p> {flag=1; /
97、/令標(biāo)志位為1,為下面pid處理做準(zhǔn)備</p><p> center_x=4; //設(shè)置太陽中心點x,y坐標(biāo)在第一象限的值</p><p> center_y=5;</p><p><b> }</b></p><p> if(twx==0)
98、 //當(dāng)twx端為低電平時,表示中心點在第二象限</p><p> {flag=2; //令標(biāo)志位為2,為下面pid處理做準(zhǔn)備</p><p> center_x=-4; //設(shè)置太陽中心點x,y坐標(biāo)在第二象限的值</p><p> center_y=5;<
99、/p><p><b> }</b></p><p> if(thx==0) //當(dāng)thx端為低電平時,表示中心點在第三象限</p><p><b> { </b></p><p> flag=3; //令標(biāo)
100、志位為3,為下面pid處理做準(zhǔn)備</p><p> center_x=-4; //設(shè)置太陽中心點x,y坐標(biāo)在第三象限的值</p><p> center_y=-5;</p><p><b> }</b></p><p> if(fx==0)
101、 //當(dāng)fx端為低電平時,表示中心點在第四象限</p><p><b> {</b></p><p> flag=4; //令標(biāo)志位為4,為下面pid處理做準(zhǔn)備</p><p> center_x=4; //設(shè)置太陽中心點x,y坐標(biāo)在第四
102、象限的值</p><p> center_y=-5;</p><p><b> } </b></p><p><b> }</b></p><p> signed int pidx(signed int x ) //x軸pid調(diào)整</p><p>
103、;<b> { </b></p><p> int i=1;</p><p> if(flag==1) //標(biāo)志位為1,中心點x坐標(biāo)在第一象限</p><p> { if(x==0) //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p><
104、;b> x=0;</b></p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p><b> {</b></p><p> x=x*i; //誤差值</p><p> x--; //x軸電機正轉(zhuǎn),誤差
105、減1</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==2) //標(biāo)志位為2,中心點x坐標(biāo)在第一象限</p><p> { if(x==0) //調(diào)整后的中心點與期望中心點重合時,誤差
106、為0</p><p> x=0;</p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p><b> {</b></p><p> x=x*i; //誤差值</p><p> x++;
107、//x軸電機反轉(zhuǎn),誤差加1</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==3) //標(biāo)志位為3,中心點x坐標(biāo)在第三象限</p><p> { if(x==0) //調(diào)整后的中心點與期望中心
108、點重合時,誤差為0</p><p><b> x=0;</b></p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p><b> {</b></p><p> x=x*i; //誤差值</p><
109、;p> x++; //x軸電機反轉(zhuǎn),誤差加1</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==4) //標(biāo)志位為4,中心點x坐標(biāo)在第四象限</p><p> { if(x==0)
110、 //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p><b> x=0;</b></p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p><b> {</b></p><p> x=x*i;
111、 //誤差值</p><p> x--; //x軸電機正轉(zhuǎn),誤差減1</p><p><b> }</b></p><p><b> }</b></p><p> return x;</p><p><b> }</b>
112、;</p><p> signed int pidy(signed int y )</p><p><b> { </b></p><p><b> int j=1;</b></p><p> if(flag==1) //標(biāo)志位為1,中心點y坐標(biāo)在第一象限<
113、;/p><p><b> {</b></p><p> if(y==0) //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p><b> y=0;</b></p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p>
114、;<p> { y=y*j; //誤差值</p><p> y--; //y軸電機正轉(zhuǎn),誤差減1</p><p><b> }</b></p><p><b> }</b></p><p> if(flag==2)
115、//標(biāo)志位為2,中心點y坐標(biāo)在第二象限</p><p><b> {</b></p><p> if(y==0) //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p><b> y=0;</b></p><p> else //調(diào)整后的中
116、心點與期望中心點不重合時,調(diào)整誤差</p><p> { y=y*j; //誤差值</p><p> y--; //y軸電機正轉(zhuǎn),誤差減1</p><p><b> }</b></p><p><b> } </b></p><
117、p> if(flag==3) //標(biāo)志位為3,中心點y坐標(biāo)在第三象限</p><p><b> {</b></p><p> if(y==0) //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p><b> y=0;</b></p><
118、p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p> { y=y*j; //誤差值</p><p> y++; //y軸電機反轉(zhuǎn),誤差加1</p><p><b> }</b></p><p>&l
119、t;b> } </b></p><p> if(flag==4) //標(biāo)志位為4,中心點y坐標(biāo)在第四象限</p><p><b> {</b></p><p> if(y==0) //調(diào)整后的中心點與期望中心點重合時,誤差為0</p><p>
120、;<b> y=0;</b></p><p> else //調(diào)整后的中心點與期望中心點不重合時,調(diào)整誤差</p><p> { y=y*j; //誤差值</p><p> y++; //y軸電機反轉(zhuǎn),誤差加1</p><p><b>
121、 }</b></p><p><b> } </b></p><p><b> return y;</b></p><p><b> } </b></p><p> void zfzx()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.txt
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.txt
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.doc
- 太陽能自動跟蹤系統(tǒng)的設(shè)計
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.doc
- 1 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.doc
- 1 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計.doc
- 基于ARM的太陽自動跟蹤系統(tǒng)設(shè)計.pdf
- 太陽能自動跟蹤系統(tǒng)的設(shè)計.pdf
- 太陽光線跟蹤系統(tǒng)設(shè)計及其跟蹤方式優(yōu)化研究.pdf
- 畢業(yè)設(shè)計---太陽能跟蹤機理及系統(tǒng)設(shè)計
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計開題報告.doc
- 點光源跟蹤系統(tǒng)課程設(shè)計
- 太陽能單軸跟蹤系統(tǒng)的plc設(shè)計
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計開題報告.doc
- 太陽跟蹤偏差檢測系統(tǒng).pdf
- 自動跟蹤太陽智能型太陽能系統(tǒng)設(shè)計(全套含cad圖紙)
- 太陽自動跟蹤系統(tǒng)研究.pdf
- 太陽自動跟蹤系統(tǒng)的研究.pdf
評論
0/150
提交評論