太陽(yáng)跟蹤課程設(shè)計(jì)---太陽(yáng)跟蹤儀系統(tǒng)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)論文</b></p><p>  題 目: 太陽(yáng)跟蹤儀系統(tǒng)設(shè)計(jì) </p><p>  院 系: 自動(dòng)控制系 </p><p>  專業(yè)班級(jí): 自動(dòng)化 </p><p>  組 長(zhǎng)

2、: </p><p>  二○一三 年 一 月 十三 日</p><p><b>  太陽(yáng)跟蹤儀系統(tǒng)設(shè)計(jì)</b></p><p>  摘要:本論設(shè)計(jì)的是一個(gè)太陽(yáng)方位全自動(dòng)跟蹤儀,實(shí)現(xiàn)了利用攝像頭來(lái)始終跟蹤太陽(yáng)。實(shí)驗(yàn)以單片機(jī)89系列芯片STC89C51作為主控芯片來(lái)設(shè)計(jì)高精度的太陽(yáng)跟蹤儀,分

3、別通過(guò)高精度的永磁力矩直流電機(jī)精確控制其角位移。跟蹤儀利用攝像頭采集信息,根據(jù)得到的圖像灰度值,設(shè)定一個(gè)閥值進(jìn)行二值化,確定兩個(gè)方向的偏差,接著用PID算法來(lái)分別控制x和y兩個(gè)方向的偏差最終實(shí)現(xiàn)攝像頭實(shí)時(shí)精確地跟蹤太陽(yáng)。 </p><p>  關(guān)鍵詞:太陽(yáng)跟蹤,單片機(jī)89C51 ,攝像頭,二值化 ,PID算法</p><p><b>  引言</b></

4、p><p>  太陽(yáng)跟蹤儀是使得攝像頭能夠跟蹤上太陽(yáng)中心,如果可以實(shí)現(xiàn)這一功能,則在實(shí)際應(yīng)用中,可以改進(jìn)使得太陽(yáng)能電池板隨時(shí)正對(duì)太陽(yáng),讓太陽(yáng)光的光線隨時(shí)垂直照射太陽(yáng)能電池板的動(dòng)力裝置,采用太陽(yáng)能跟蹤儀能顯著提高太陽(yáng)能光伏組件的發(fā)電效率。</p><p>  所以本文是實(shí)現(xiàn)太陽(yáng)能高效率利用的前提實(shí)驗(yàn)。</p><p><b>  硬件介紹</b>&l

5、t;/p><p><b>  1.1單片機(jī)模塊</b></p><p>  單片機(jī)又稱單片微控制器, 是在一塊芯片中集成了CPU( 中央處理器)、RAM( 數(shù)據(jù)存儲(chǔ)器)、ROM( 程序存儲(chǔ)器)、定時(shí)器/ 計(jì)數(shù)器和多種功能的I/O( 輸入/ 輸出) 接口等一臺(tái)計(jì)算機(jī)所需要的基本功能部件,從而可以完成復(fù)雜的運(yùn)算、邏輯控制、通信等功能。</p><p>

6、  在簡(jiǎn)單了解了什么是單片機(jī)之后,然后我們來(lái)構(gòu)建單片機(jī)的最小系統(tǒng),單片機(jī)的最小系統(tǒng)就是讓單片機(jī)能正常工作并發(fā)揮其功能時(shí)所必須的組成部分,也可理解為是用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51 系列單片機(jī)來(lái)說(shuō), 最小系統(tǒng)一般應(yīng)該包括: 單片機(jī)、時(shí)鐘電路、復(fù)位電路、輸入/ 輸出設(shè)備等。STC89C52單片機(jī)的引腳圖1-1-1所示:</p><p>  圖1-1-1 STC89C52單片機(jī)引腳圖</p>

7、;<p>  1.1.1 單片機(jī)最小系統(tǒng)</p><p>  單片機(jī)的最小系統(tǒng)框圖如圖1-1-2所示,單片機(jī)的最小系統(tǒng)的仿真圖如圖1-1-3所示:</p><p>  圖1-1-2 單片機(jī)最小系統(tǒng)框圖</p><p>  圖1-1-3 單片機(jī)最小系統(tǒng)仿真電路圖</p><p>  1.1.2 單片機(jī)復(fù)位電路</p>

8、<p>  復(fù)位是單片機(jī)的初始化操作,只要給RESET引腳加上2個(gè)機(jī)器周期以上的高電平信號(hào),即可使單片機(jī)復(fù)位。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)程序運(yùn)行出錯(cuò)或是操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為了擺脫死鎖狀態(tài),也需要按復(fù)位鍵重新復(fù)位。</p><p>  在系統(tǒng)中,為了實(shí)現(xiàn)上述的兩項(xiàng)功能,采用常用的按鍵電平復(fù)位電路,這樣復(fù)位鍵有復(fù)位和停止兩個(gè)功能,如圖1-1-4所示:</p><p&

9、gt;  圖1-1-4 復(fù)位電路</p><p>  從圖中可以看出,當(dāng)系統(tǒng)得到工作電壓的時(shí)候,復(fù)位電路工作在上電自動(dòng)復(fù)位狀態(tài),通過(guò)外部復(fù)位電路的電容充電來(lái)實(shí)現(xiàn),只要Vcc的上升時(shí)間不超過(guò)1ms就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位功能。在本系統(tǒng)中,采用10uF的電容和100kΩ的電阻來(lái)實(shí)現(xiàn)復(fù)位電路。當(dāng)系統(tǒng)出錯(cuò)時(shí),直接按開(kāi)關(guān)實(shí)現(xiàn)模擬系統(tǒng)上電復(fù)位的功能,從而實(shí)現(xiàn)系統(tǒng)重新復(fù)位啟動(dòng)。</p><p>  1.

10、1.3 時(shí)鐘電路</p><p>  時(shí)鐘電路是用于產(chǎn)生單片機(jī)工作時(shí)所必需的時(shí)鐘信號(hào)。時(shí)鐘是單片機(jī)的心臟,單片機(jī)各功能部件的運(yùn)行都是以時(shí)鐘頻率為基準(zhǔn)的,有條不紊地一拍一拍地工作。時(shí)鐘頻率直接影響單片機(jī)的速度,時(shí)鐘電路的質(zhì)量也直接影響單片機(jī)系統(tǒng)的穩(wěn)定性。在本系統(tǒng)中采用外部時(shí)鐘方式的電路,如圖1-1-5所示:</p><p>  圖1-1-5 系統(tǒng)時(shí)鐘電路</p><p&

11、gt;  在本設(shè)計(jì)中的電容C1、C2典型值為30±10 pF。外接代內(nèi)容的值雖然沒(méi)有嚴(yán)格的要求,但是電容的大小會(huì)影響振蕩器的穩(wěn)定性和起振的快速性。同時(shí),在系統(tǒng)中采用12MHz的晶體振蕩器來(lái)產(chǎn)生時(shí)鐘脈沖。這樣可以滿足系統(tǒng)在設(shè)計(jì)時(shí)的機(jī)器周期的需要。</p><p><b>  1.2圖像采集模塊</b></p><p>  1.2.1 攝像頭ov7620的介紹&

12、lt;/p><p>  OV7620 是美國(guó)OmniVision 公司開(kāi)發(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 進(jìn)行內(nèi)部寄存器編程。在輸出數(shù)字視頻

15、流的同時(shí)還提供像素時(shí)鐘PCLK、水平參考信號(hào)HREF、垂直同步信號(hào)VSYNC 便于外部電路讀取圖像, 并可編程設(shè)置HREF、V SYNC 在圖像局部開(kāi)窗, 輸出窗口圖像。它被廣泛應(yīng)用在網(wǎng)絡(luò)攝像頭、攝像手機(jī)等產(chǎn)品中。由它組成的圖像采集系統(tǒng),比較常見(jiàn)的設(shè)計(jì)方法為OV7620搭配OV5ll+或CPLD/FPGA。</p><p>  OV7620有4個(gè)同步信號(hào),VSYNC(垂直同步信號(hào))、FODD(奇數(shù)場(chǎng)同步信號(hào))、H

16、SYNC(水平同步信號(hào))和PCLK(像素同步信號(hào))。采用連續(xù)掃描方式時(shí),只使用VSYNC和HSYNC、PCLK三個(gè)同步信號(hào),為檢測(cè)OV7620掃描窗口的有效大小,還引入HREF水平參考信號(hào)。ARM的三個(gè)外部中斷引腳分別作為3個(gè)同步信號(hào)的輸入,在內(nèi)存中定義一個(gè)二維數(shù)組存儲(chǔ)圖像數(shù)據(jù),一維用于水平同步信號(hào)計(jì)數(shù),二維用于像素同步信號(hào)計(jì)數(shù)。圖像采集的流程為:初始化好OV7620后,使能VSYNC對(duì)應(yīng)的中端,在中斷服務(wù)程序中判斷是否已取得一幀數(shù)據(jù),

17、接收到則進(jìn)行數(shù)據(jù)處理。</p><p>  1.2.2 工作原理</p><p>  圖像傳感器即攝像頭,是組成機(jī)器視覺(jué)系統(tǒng)的非常重要的元器件。根據(jù)其原理不同分?jǐn)z像頭主要分為兩種:CCD(Charge Coupled Device)攝像頭,CMOS攝像頭。CCD也稱電耦合器件,其工作原理是:被攝物體反射光線到攝像頭上,經(jīng)過(guò)鏡頭聚焦到CCD感光芯片上,感光芯片根據(jù)光線的強(qiáng)弱積聚相應(yīng)電荷,經(jīng)周

18、期性放電而產(chǎn)生表示圖像的電信號(hào)。CMOS攝像頭其實(shí)跟CCD差不多,也是將光轉(zhuǎn)換成電信號(hào)的器件。它們的差異之處就是圖像的掃描方式不同,CCD是采用連續(xù)掃描方式,即它只有等到最后一個(gè)像素掃描完成后才進(jìn)行放大;CMOS傳感器的每個(gè)像素都有一個(gè)將電荷放大為電信號(hào)的轉(zhuǎn)換器。 </p><p>  CMOS傳感器的圖像采集方式為主動(dòng)式, 感光二極管所產(chǎn)生的電荷直接由晶體管放大輸出,不需要外加電壓,5V的電壓就可以工作,所以C

19、MOS的功耗比CCD要小。由于CMOS功耗小,較CCD要便宜,而且圖像質(zhì)量滿足要求。 本次設(shè)計(jì)采用的OV7620這一款攝像頭。</p><p>  1.2.3 工作時(shí)序 </p><p>  OV7620的同步信號(hào)時(shí)序如下:場(chǎng)同步信號(hào)VSYN為兩個(gè)正脈沖之間掃描一幀的定時(shí),即完整的一幀圖像在兩個(gè)正脈沖之間;行同步信號(hào)HREF掃描該幀圖像中各行像素的定時(shí),即高電平時(shí)為掃描一行像素的有效時(shí)間;

20、像素同步信號(hào)PCLK為讀取有效像素值提供同步信號(hào),高電平時(shí)輸出有效圖像數(shù)據(jù)。VYNSC 是判斷是否一幅圖像開(kāi)始,周期是 20ms, 其中高電平持續(xù)時(shí)間很短;HREF 是判斷是否一行圖像的開(kāi)始,周期是 63us 左右,其中高電平持續(xù)時(shí)間為 40US,低電平持續(xù)時(shí)間 23US.攝像頭實(shí)物圖如圖1-2-1所示:</p><p>  圖1-2-1 攝像頭實(shí)物圖</p><p>  PIN1-PIN

21、8 灰度信號(hào)輸出接口 Y0-Y7</p><p>  PIN11 SCCB數(shù)據(jù)接口 SDA</p><p>  PIN12 奇偶場(chǎng)同步信號(hào) PODD</p><p>  PIN13 SCCB數(shù)據(jù)時(shí)鐘 SCL</p><p>  PIN14 行中斷信號(hào) HREF</p><p>  PIN16 場(chǎng)中斷信號(hào) VSYN<

22、;/p><p>  PIN18 像素同步信號(hào) PCLK(也叫TCLK)</p><p>  PIN32 模擬信號(hào)輸出接口 VTO</p><p><b>  1.3電機(jī)驅(qū)動(dòng)模塊</b></p><p>  1.3.1 L298N芯片的介紹</p><p>  L298N是SGS公司的產(chǎn)品,是具有15引

23、腳的芯片,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路。是一種二相和四相電機(jī)的專用驅(qū)動(dòng)器,即內(nèi)含二個(gè)H橋的高電壓大電流雙全橋式驅(qū)動(dòng)器,接收標(biāo)準(zhǔn)TTL邏輯電平信號(hào),可驅(qū)動(dòng)46V、2A以下的電機(jī)。L298N的引腳圖如圖1-3-1所示:</p><p>  圖1-3-1 L298N引腳圖</p><p>  1.3.2 L298N的內(nèi)部原理</p><p>  L298N有兩路電源分別

24、為邏輯電源和動(dòng)力電源,上圖中VSS接6V為邏輯電源,VS接12V為動(dòng)力電源。IN1、IN2接控制信號(hào),EnA使能端A接入低電平。OUT1與OUT2分別為單片機(jī)控制兩個(gè)電機(jī)的輸入端。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 電機(jī)驅(qū)動(dòng)電路的仿真</p><p>  由單片機(jī)直接輸出的脈沖不足以驅(qū)動(dòng)步進(jìn)電機(jī)正常工作所以需要驅(qū)動(dòng)電路給直流電機(jī)提供電源,我們所使用的電機(jī)一般為直流電機(jī),主要用到永磁直流電機(jī)、伺服電機(jī)及步進(jìn)電機(jī)三種。直流電機(jī)的控制很簡(jiǎn)單,性能出眾,直流電源也容易實(shí)現(xiàn)。在本設(shè)計(jì)中采用型號(hào)為L(zhǎng)298N的芯片,使直流電機(jī)正常工作。驅(qū)動(dòng)信號(hào)由P1口的P1.0、P1.1、P1.2、P1.3輸出,分

26、別與驅(qū)動(dòng)芯片的IN1、IN2、IN3、IN4相連,電路如圖1-3-3所示:</p><p>  圖1-3-3電機(jī)驅(qū)動(dòng)電路</p><p><b>  1.4電源模塊</b></p><p>  1.4.1電機(jī)驅(qū)動(dòng)電源:可調(diào)電源</p><p>  可調(diào)電源是采用當(dāng)前國(guó)際先進(jìn)的高頻調(diào)制技術(shù),其工作原理是將開(kāi)關(guān)電源的電壓和電

27、流展寬,實(shí)現(xiàn)了電壓和電流的大范圍調(diào)節(jié),同時(shí)擴(kuò)大了目前直流電源供應(yīng)器的應(yīng)用。與傳統(tǒng)電源相比高頻直流電源就較具有體積小、重量輕、效率高等優(yōu)點(diǎn),同時(shí)也為大功率直流電源減小體積創(chuàng)造了條件,此電源又稱高頻可調(diào)式開(kāi)關(guān)電源??烧{(diào)直流穩(wěn)壓電源保護(hù)功能齊全,過(guò)壓、過(guò)流點(diǎn)可連續(xù)設(shè)置并可預(yù)視,輸出電壓可通過(guò)觸控開(kāi)關(guān)控制。但其缺點(diǎn)也很明顯,大功率的可調(diào)電源體積龐大,攜帶不方便。可調(diào)電源實(shí)物如圖1-4-1所示:</p><p>  圖1-

28、4-1 可調(diào)電源</p><p>  1.4.2單片機(jī)穩(wěn)壓電源:LM2940</p><p>  LM2940是常用的串聯(lián)型線性穩(wěn)壓管,它具有紋波小、電路結(jié)構(gòu)簡(jiǎn)單的優(yōu)點(diǎn),對(duì)于單片機(jī),需要提供穩(wěn)定的5V電源,由于LM2940的穩(wěn)壓的線性度非常好,所以選用LM2940單獨(dú)對(duì)其進(jìn)行供電;LM2940/2940C還含有一個(gè)靜態(tài)電流降低電路,當(dāng)輸入輸出壓差超過(guò)3V時(shí),可以減少地電流。在輸出電流為1A

29、或輸入輸出壓差為5V時(shí),靜態(tài)電流僅為30MA.此外,該電路內(nèi)還設(shè)有防反接電路,防止輸入電壓反接對(duì)電路造成損害。因此,LM2940/2940C特別適合于汽車、機(jī)動(dòng)車輛、船舶等的使用。LM2940CT的接線圖如圖1-4-2所示:</p><p>  圖1-4-2 LM2940CT接線圖</p><p>  輸出電壓固定的低壓差三端穩(wěn)壓器;輸出電壓5V;輸出電流1A;輸出電流1A時(shí),最小輸入

30、輸出電壓差小于0.8V;最大輸入電壓26V;工作溫度-40~+125℃;內(nèi)含靜態(tài)電流降低電路、電流限制、過(guò)熱保護(hù)、電池反接和反插入保護(hù)電路。LM2940CT的實(shí)物圖如圖1-4-3所示,LM2940引腳圖如1-4-4所示:</p><p>  圖1-4-3 LM2940CT實(shí)物圖</p><p>  圖1-4-4 LM2940CT引腳介紹</p><p><b&

31、gt;  1.5系統(tǒng)原理敘述</b></p><p>  本方案的太陽(yáng)光跟蹤系統(tǒng)是有OV7620攝像頭、STC89C52單片機(jī)、時(shí)鐘電路、穩(wěn)壓電源模塊、電機(jī)驅(qū)動(dòng)模塊等主要模塊組成。經(jīng)過(guò)攝像頭OV7620采集圖像,通過(guò)對(duì)采集到的圖像經(jīng)過(guò)單片機(jī)計(jì)算出相應(yīng)的太陽(yáng)相對(duì)的角度值,太陽(yáng)光控制電路根據(jù)太陽(yáng)的位置移動(dòng)。系統(tǒng)總框圖如圖1-5-1所示,系統(tǒng)進(jìn)程框圖如圖1-5-2所示:</p><p&g

32、t;  圖1-5-1 系統(tǒng)總框圖</p><p>  圖1-5-2 系統(tǒng)進(jìn)程框圖</p><p><b>  2. 系統(tǒng)程序設(shè)計(jì)</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語(yǔ)言實(shí)現(xiàn)</b></p><p>  用C語(yǔ)言實(shí)現(xiàn)圖像的二值化和中心的確定,將拍出來(lái)的圖像看做一個(gè)數(shù)組,用0、1分別代表明、暗,這樣拍出來(lái)的圖像就相當(dāng)于0和1組成的矩陣,求出值為0的區(qū)域的中心就是太陽(yáng)的中心。</p><p>  2.2.1 圖像的二值化</p>&

34、lt;p>  首先,采集到的圖像是一個(gè)個(gè)灰度值,我們需要用一個(gè)閥值來(lái)使這些灰度值二值化,凡是小于閥值的都設(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 確定太陽(yáng)的中心</p><p>  二值化以后,能夠給出太陽(yáng)的大概輪廓,是一塊為像素為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的點(diǎn)的坐標(biāo)為(x,y),由于區(qū)域連續(xù),首先求二值化后的矩陣中值最小的那一行為中心點(diǎn)x值,接著求二值化后的矩陣中值最小的那一列為中心點(diǎn)y值,這樣得到的(x,y)這個(gè)點(diǎn)就是太陽(yáng)的中心點(diǎn)。</p><p>  求太陽(yáng)中心的程序如下:</p><p>  void center() //求中心點(diǎn)子程序</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++) //求二值化后的矩陣中值最小的那一行為中心點(diǎn)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; //中心行號(hào)</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++) //求二值化后的矩陣中值最小的那一列為中心點(diǎn)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; //中心列號(hào)</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; //定義比例項(xiàng),積分項(xiàng),微分項(xiàng)輸出項(xiàng)</p><p>  ei=center_imgx-a;

48、 //x軸向誤差</p><p>  if(k==0&&ti==0&&td==0) //比例項(xiàng)系數(shù),積分項(xiàng),微分項(xiàng)系數(shù)為0時(shí)各項(xiàng)輸出為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) //比例項(xiàng),微分項(xiàng)系數(shù)不為0時(shí),通過(guò)pid公式計(jì)算各項(xiàng)輸出值</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) //積分項(xiàng)系數(shù)為0時(shí),各項(xiàng)輸出值</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; //計(jì)算最后輸出值</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 單片機(jī)控制電機(jī)正反轉(zhuǎn) 的PWM信號(hào)</p><p>  下面就是電機(jī)正反轉(zhuǎn)的子程序:</p><p>  void zfzx() //x軸電機(jī)正反轉(zhuǎn)子程序</p><p><b>  { </b></p>

55、<p>  if(opx>0) //x軸pid輸出誤差為正向誤差,電機(jī)正向轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  fzx=0; //關(guān)閉x軸l298n反向橋路</p><p>  zzx=px; //將電機(jī)驅(qū)動(dòng)信號(hào)給x軸l2

56、980n正向橋路</p><p><b>  }</b></p><p>  if(opx<0) //x軸pid輸出誤差為負(fù)向誤差,電機(jī)反向轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  zzx=0; //關(guān)閉x軸l298n正

57、向橋路</p><p>  fzx=px; //將電機(jī)驅(qū)動(dòng)信號(hào)給x軸l2980n反向橋路 </p><p><b>  } </b></p><p><b>  }</b></p><p>  void zfzy() //

58、y軸電機(jī)正反轉(zhuǎn)子程序</p><p><b>  { </b></p><p>  if(opy>0) //y軸pid輸出誤差為正向誤差,電機(jī)正向轉(zhuǎn)動(dòng)</p><p><b>  {</b></p><p>  fzy=0; //關(guān)閉

59、y軸l298n反向橋路</p><p>  zzy=py; //將電機(jī)驅(qū)動(dòng)信號(hào)給y軸l2980n正向橋路</p><p><b>  } </b></p><p>  if(opy<0) //y軸pid輸出誤差為負(fù)向誤差,電機(jī)反向轉(zhuǎn)動(dòng)</p><p><b&g

60、t;  {</b></p><p>  zzy=0; //關(guān)閉y軸l298n正向橋路 </p><p>  fzy=py; //將電機(jī)驅(qū)動(dòng)信號(hào)給y軸l2980n反向橋路 </p><p><b>  } </b></p><p><b>  } </b&

61、gt;</p><p><b>  3.軟件的調(diào)試</b></p><p>  3.1 把程序送到單片機(jī)</p><p>  我們把寫好的程序送給單片機(jī)用到了Stc-isp這個(gè)軟件,使用如下:</p><p>  第一步 打開(kāi)stp_isp_v480.exe 如圖3-1-1所示:</p><p>

62、;  圖3-1-1 stp_isp_v480.exe文件</p><p>  第二步 選擇單片機(jī)類型、com口、最低和最高波特率 如圖3-1-2所示:</p><p>  圖3-1-2 步驟二附圖</p><p>  第三步 打開(kāi)并添加要燒錄的文件。如圖3-1-3所示:</p><p>  圖3-1-3 步驟三附圖</p>&l

63、t;p>  第四步 點(diǎn)擊下載,如圖3-1-4所示:</p><p>  圖3-1-4 步驟四附圖</p><p>  第五步 給單片機(jī)開(kāi)發(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)檢查所編程序是否正確,檢查程序無(wú)誤后裝入單片機(jī)內(nèi),用Proteus進(jìn)行仿真,該環(huán)節(jié)主要模擬了將太陽(yáng)跟蹤系統(tǒng)的X,Y軸向的誤差轉(zhuǎn)換成電機(jī)所需要的驅(qū)動(dòng)信號(hào)。本方案的Proteus仿真圖中的KEY1模擬了太陽(yáng)中心處于以攝像頭OV7620中心為原點(diǎn)的坐標(biāo)的第一象限,設(shè)Y軸正方向?yàn)橄蛏?/p>

65、,X軸正方向?yàn)橄蛳?。即在X軸,Y軸上兩方向的誤差均屬于正向誤差位移,此時(shí)將該誤差轉(zhuǎn)換成電機(jī)驅(qū)動(dòng)信號(hào),控制X軸方向的電機(jī)與控制Y軸方向的電機(jī)均向正方向轉(zhuǎn)動(dòng) ,到達(dá)太陽(yáng)中心。同理,KEY2模擬了第二象限的誤差位移,KEY3模擬了第三象限的誤差位移,KEY4模擬了第四象限的誤差位移。而KEY5則模擬了X,Y電機(jī)在轉(zhuǎn)動(dòng)過(guò)程中,從而攝像頭OV7620不斷接近太陽(yáng)中心,每按下KEY5則減小電機(jī)驅(qū)動(dòng)信號(hào)的占空比,當(dāng)?shù)竭_(dá)太陽(yáng)中心,此時(shí)的占空比為0,電機(jī)

66、也停止轉(zhuǎn)動(dòng),從而實(shí)現(xiàn)成功跟蹤太陽(yáng)。Proteus仿真圖如圖3-2-1所示:</p><p>  圖3-2-1 Protueus仿真圖</p><p>  系統(tǒng)進(jìn)入仿真模式后,令KEY1按鈕閉合,代表了太陽(yáng)中心處于以攝像頭OV7620中心為原點(diǎn)的坐標(biāo)的第一象限,使X軸直流電機(jī)正轉(zhuǎn)工作,Y軸直流電機(jī)正轉(zhuǎn)工作,到達(dá)太陽(yáng)中心。此時(shí)需要不斷調(diào)整KEY5來(lái)使誤差不斷減小,最后使X軸直流電動(dòng)機(jī)和Y軸直

67、流電動(dòng)機(jī)同時(shí)停止工作,即已經(jīng)到達(dá)太陽(yáng)中心。當(dāng)按下KEY1時(shí)的仿真圖如圖3-2-2所示,當(dāng)按下多次KEY5時(shí)的仿真圖如圖3-2-3所示:</p><p>  圖3-2-2 按下KEY1時(shí)的仿真圖</p><p>  圖3-2-3 多次按下KEY5后的仿真圖</p><p>  3.3程序的調(diào)試心得</p><p>  一,用頭腦去分析思考與錯(cuò)誤

68、征兆有關(guān)的信息。二,避開(kāi)死胡同。三,只把調(diào)試工具當(dāng)做手段。利用調(diào)試工具,可以幫助思考,但不能代替思考,因?yàn)檎{(diào)試工具給的是一種無(wú)規(guī)律的調(diào)試方法。四,避免用試探法,最多只能把它當(dāng)做最后手段。五,再出現(xiàn)錯(cuò)誤的地方,可能還有別的錯(cuò)誤。六,修改錯(cuò)誤的一個(gè)常見(jiàn)失誤是只修改了這個(gè)錯(cuò)誤的征兆或這個(gè)錯(cuò)誤的表現(xiàn),而沒(méi)有修改錯(cuò)誤本身。如果提出的修改不能解釋與這個(gè)錯(cuò)誤有關(guān)的全部線索,那就表明只修改了錯(cuò)誤的一部分。七,注意修正一個(gè)錯(cuò)誤的同時(shí)可能會(huì)引入新的錯(cuò)誤。八

69、,修改錯(cuò)誤的過(guò)程將迫使人們暫時(shí)回到程序設(shè)計(jì)階段。修改錯(cuò)誤也是程序設(shè)計(jì)的一種形式。九,修改源代碼程序,不要改變目標(biāo)代碼。</p><p><b>  總結(jié)</b></p><p>  4.1團(tuán)隊(duì)管理的心得體會(huì) </p><p>  對(duì)于每一個(gè)小組成員,我們都應(yīng)明確他所善長(zhǎng)和能勝任的方面,并且每一成員都應(yīng)自發(fā)地承接自己所擅長(zhǎng)的工作,遇到問(wèn)題時(shí)要與大

70、家一起商量討論,找出切實(shí)可行的方案,這樣才能發(fā)揮每一個(gè)成員的作用,發(fā)揮出小組團(tuán)隊(duì)的能力,更好的完成課題。 </p><p>  我們小組在本此課題中正是這樣做的。我們首先共同商討,根據(jù)小組成員能力和一些技術(shù)上的問(wèn)題,發(fā)揮自己的創(chuàng)新意識(shí)和對(duì)現(xiàn)實(shí)的應(yīng)用價(jià)值,一起確定了設(shè)計(jì)思想。小組成員根據(jù)自己能力提出自己接受的任務(wù),最后再根據(jù)實(shí)際情況,大家一起均衡分配工作任務(wù)。并在各自完成任務(wù)的同時(shí),周期性地一起討論課程的進(jìn)程,并對(duì)

71、遇到的一些問(wèn)題,提出來(lái)一起解決,這樣我們小組成員可對(duì)整個(gè)項(xiàng)目有一個(gè)全面的了解,知道自己下一步該如何做,其中最重要的是解決遇到的問(wèn)題,不會(huì)因一個(gè)小方面的問(wèn)題而使整個(gè)項(xiàng)目無(wú)法完成,與此同時(shí)還要善于與其他小組交流,并一起對(duì)所交流問(wèn)題一起研討。這樣才能從討論中找出最好的方法,這就是我們小組在本次課題中的基本過(guò)程。 </p><p>  在設(shè)計(jì)中,我們遇到了很多問(wèn)題和困難,在程序的編寫上,我們始終無(wú)法實(shí)現(xiàn)實(shí)驗(yàn)的要求,于是我

72、們組的成員們冒著嚴(yán)寒跑到圖書館里參考相關(guān)的書籍,有的組員利用研究生還沒(méi)有回這個(gè)機(jī)會(huì),抓緊時(shí)間去請(qǐng)教研究生學(xué)長(zhǎng),最后經(jīng)過(guò)同學(xué)們的努力,我們的程序終于調(diào)試成功了。我們的成功來(lái)之不易,凝聚著成員們多少辛勤的汗水??! </p><p>  4.2 課程設(shè)計(jì)的心得體會(huì) </p><p>  在通過(guò)本次課程設(shè)計(jì)中,我們遇到很多問(wèn)題,與此同時(shí),我們也學(xué)到了很多,對(duì)于本次課題的心得體會(huì),我們覺(jué)得有以下幾點(diǎn)

73、: </p><p>  1、不管做什么事,計(jì)劃是很重要的。沒(méi)有一個(gè)完好的計(jì)劃,做事情就會(huì)沒(méi)有一個(gè)好的順序,做事情會(huì)比較亂,很難成功。而有一個(gè)好的計(jì)劃,不管做什么事都會(huì)事半功倍,而且做事心中有數(shù),明確重點(diǎn)和緩急,不會(huì)有疏漏。這樣才能提高成功率。 </p><p>  2、做事要多動(dòng)腦,選出最好的方法。一件事往往有多種解決方法,一個(gè)好的方法,不僅能使事情事半功倍,而且往往決定最后的成與敗,所

74、以做事時(shí)一定要多動(dòng)一下腦筋,想出最好的方法。 </p><p>  3、要注意細(xì)節(jié)。細(xì)節(jié)決定成敗,這句話在這次課題中不僅一次得到了印證,特別是在軟件的編程過(guò)程中,一點(diǎn)點(diǎn)的錯(cuò)誤就會(huì)使你整個(gè)程序不能運(yùn)行。因此我們不僅僅要有整體意識(shí),也要注意細(xì)節(jié),不要因一個(gè)關(guān)鍵地方的一個(gè)細(xì)節(jié)而導(dǎo)致滿盤皆輸。 </p><p>  4、團(tuán)隊(duì)合作很重要。團(tuán)隊(duì)做一件事時(shí),要發(fā)揮出門一個(gè)人的長(zhǎng)處。人無(wú)完人,但一個(gè)團(tuán)隊(duì)可

75、以互相幫助,互相補(bǔ)充,只要互相合作,個(gè)人完成各自專長(zhǎng)的,離成功就只有一步之遙。除此之外,人人總是有疏漏的方面,但是只要互相合作,互相交流,就會(huì)考慮問(wèn)題更全面化,在本次課題中,我們組團(tuán)結(jié)合作不僅事半功倍,而且發(fā)現(xiàn)了一些好的有趣的構(gòu)想,使我們對(duì)單片機(jī)有了更濃的興趣。 </p><p>  5、最后,也是最重要的一點(diǎn),通過(guò)這次課題,我們學(xué)到了很多有關(guān)單片機(jī)方面的知識(shí),也對(duì)單片機(jī)有了更深入的了解,使我們受益匪淺。<

76、/p><p><b>  參考文獻(xiàn):</b></p><p>  [ 1] 苑瑋琦, 劉麗微. 基于視覺(jué)的太陽(yáng)方位檢測(cè)裝置的研究[ J] .計(jì)算機(jī)測(cè)量與控制, 2008, 16( 7) : 911- 913.</p><p>  [ 2] 吳靜. 太陽(yáng)自動(dòng)跟蹤系統(tǒng)的研究[ D] . 重慶: 重慶大學(xué), 2008.</p><

77、p>  [ 3] 付忠良. 圖像閾值選取方法——Otsu 方法的推廣[ J] . 計(jì)算機(jī)應(yīng)用, 2000, 20( 5) : 37- 39.</p><p>  [ 4] 劉京誠(chéng), 任松林, 李敏, 等. 智能型雙軸太陽(yáng)跟蹤控制系統(tǒng)的設(shè)計(jì)[ J] . 傳感器與微系統(tǒng), 2008, 27( 9) : 69- 71.</p><p>  [ 5] 劉巍, 王志超, 沈垣, 等. 太

78、陽(yáng)自動(dòng)跟蹤系統(tǒng)的研究與設(shè)計(jì) [ J] . 水電能源科學(xué), 2009( 27) : 215- 218.</p><p>  [ 6] 呂文華, 賀曉雷, 于賀軍, 等. 全自動(dòng)太陽(yáng)跟蹤器的研制和應(yīng)用[ J] . 光學(xué)精密工程, 2008, 12( 16) : 2544- 2550.</p><p>  [ 7] 關(guān)繼文; 孔令成; 張志華; 高精度太陽(yáng)能跟蹤控制器設(shè)計(jì)與實(shí)現(xiàn) 自動(dòng)化與儀器

79、儀表,2012年03期</p><p>  [ 8] 杜云峰,基于單片機(jī)的太陽(yáng)自動(dòng)跟蹤系統(tǒng)的研究1、湖南文理學(xué)院電氣與信息工程學(xué)院,湖南常德415000;2、電子科技大學(xué)自動(dòng)化工程學(xué)院,四川成都610054)</p><p>  [ 9] 劉京誠(chéng) , 任松林, 李敏 , 羅勇 , 楊慶峰,智能型雙軸太陽(yáng)跟蹤控制系統(tǒng)的設(shè)計(jì)(1. 重慶大學(xué)光電技術(shù)及系統(tǒng)教育部重點(diǎn)實(shí)驗(yàn)室,重慶400044;

80、 2. 四川理工學(xué)院機(jī)電系,四川自貢643000)</p><p>  [10] 一種新型的太陽(yáng)自動(dòng)跟蹤系統(tǒng)研究鄒建, 姬 興, 杜海濤; ( 1. 光電技術(shù)及應(yīng)用教育部重點(diǎn)實(shí)驗(yàn)室, 重慶400044; 2. 重慶大學(xué)光電工程學(xué)院, 重慶400044)</p><p>  [11] 施玉川.太陽(yáng)能應(yīng)用[M].陜西科學(xué)出版社,2001.</p><p>  [12

81、] 高峰,孫成權(quán),劉全根.太陽(yáng)能開(kāi)發(fā)利用的現(xiàn)狀及發(fā)展趨勢(shì)[J].世界科技研究與發(fā)展,2001,23(4):35-39.</p><p>  [13] 任松林.主動(dòng)式太陽(yáng)跟蹤及驅(qū)動(dòng)系統(tǒng)研究與設(shè)計(jì)[D].重慶大學(xué),2008</p><p>  [14] 詹華,姚士洪.對(duì)我國(guó)能源現(xiàn)狀及未來(lái)發(fā)展的幾點(diǎn)思考[J].能源工程, 2003(3):1-4.</p><p> 

82、 [15] 張寶星.太陽(yáng)能利用的跟蹤與聚焦系統(tǒng)研究[D].合肥工業(yè)大學(xué),2006.</p><p>  [16] 幻余海.太陽(yáng)能利用綜述及提高其利用率的途徑[J].能源研究與利用, 2004,79(3):8-9.</p><p>  [17] 賀曉雷,于賀軍,李建英.太陽(yáng)方位角的公式求解及其應(yīng)用[J].太陽(yáng)能學(xué)報(bào), 2008,29(1):69-72.</p><p

83、>  [18] 王炳忠,湯潔.幾種太陽(yáng)位置計(jì)算方法的比較研究[J].太陽(yáng)能學(xué)報(bào),2001, 22(4):413-417.</p><p>  [19] 王國(guó)安,米鴻濤,鄧天宏.太陽(yáng)高度角和日出日落時(shí)刻太陽(yáng)方位角年變化范圍的計(jì)算[J].氣象與環(huán)境科學(xué),2007,30:161-163.</p><p>  [20] 王延杰,宋建中.一種實(shí)時(shí)自適應(yīng)圖像二值化方法[J].光學(xué)精密工程,

84、 1994,5(2):7-20</p><p>  [21] 李鑒慶,左坤隆.圖像閾值選取的一種快速算法[J].計(jì)算機(jī)與現(xiàn)代化, 2001,6:11-14.</p><p>  [22] 孫光靈,周慶松,方傳剛.基于最小類內(nèi)方差的快速閾值分割算法[J].安徽理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,25(1):39-42.</p><p>  [23] 陳冬嵐,劉

85、南京,余玲玲.幾種圖像閾值選取方法的比較與研究[J].電氣技術(shù)與自動(dòng)化,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:太陽(yáng)跟蹤誤差模擬仿真程序代碼</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軸電機(jī)正轉(zhuǎn)信號(hào)輸出口</p><p>  sbit fzx

89、=P1^1; //x軸電機(jī)反轉(zhuǎn)信號(hào)輸出口</p><p>  sbit zzy=P1^2; //y軸電機(jī)正轉(zhuǎn)信號(hào)輸出口</p><p>  sbit fzy=P1^3; //y軸電機(jī)反轉(zhuǎn)信號(hào)輸出口</p><p>  

90、sbit ox=P2^0; //攝像頭與預(yù)定圖像中心點(diǎn)誤差處于第一象限</p><p>  sbit twx=P2^1; //攝像頭與預(yù)定圖像中心點(diǎn)誤差處于第二象限</p><p>  sbit thx=P2^2; //攝像頭與預(yù)定圖像中心點(diǎn)

91、誤差處于第三象限</p><p>  sbit fx=P2^3; //攝像頭與預(yù)定圖像中心點(diǎn)誤差處于第四象限</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軸電機(jī)驅(qū)動(dòng)信號(hào)</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; //選用定時(shí)器一</p><p>  EA=1; //開(kāi)總中斷</p><p>  EX0=1;

94、 //開(kāi)外部中斷0</p><p>  IT0=1; //外部中斷下降沿有效</p><p>  ET0=1; //開(kāi)定時(shí)器0中斷</p><p>  TL0=0x18; //定時(shí)初值1ms</p><

95、;p>  TH0=0xfc;</p><p>  TR0=1; //開(kāi)定時(shí)器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端為低電平時(shí),表示中心點(diǎn)在第一象限</p><p>  {flag=1; /

97、/令標(biāo)志位為1,為下面pid處理做準(zhǔn)備</p><p>  center_x=4; //設(shè)置太陽(yáng)中心點(diǎn)x,y坐標(biāo)在第一象限的值</p><p>  center_y=5;</p><p><b>  }</b></p><p>  if(twx==0)

98、 //當(dāng)twx端為低電平時(shí),表示中心點(diǎn)在第二象限</p><p>  {flag=2; //令標(biāo)志位為2,為下面pid處理做準(zhǔn)備</p><p>  center_x=-4; //設(shè)置太陽(yáng)中心點(diǎn)x,y坐標(biāo)在第二象限的值</p><p>  center_y=5;<

99、/p><p><b>  }</b></p><p>  if(thx==0) //當(dāng)thx端為低電平時(shí),表示中心點(diǎn)在第三象限</p><p><b>  { </b></p><p>  flag=3; //令標(biāo)

100、志位為3,為下面pid處理做準(zhǔn)備</p><p>  center_x=-4; //設(shè)置太陽(yáng)中心點(diǎn)x,y坐標(biāo)在第三象限的值</p><p>  center_y=-5;</p><p><b>  }</b></p><p>  if(fx==0)

101、 //當(dāng)fx端為低電平時(shí),表示中心點(diǎn)在第四象限</p><p><b>  {</b></p><p>  flag=4; //令標(biāo)志位為4,為下面pid處理做準(zhǔn)備</p><p>  center_x=4; //設(shè)置太陽(yáng)中心點(diǎn)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,中心點(diǎn)x坐標(biāo)在第一象限</p><p>  { if(x==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p><

104、;b>  x=0;</b></p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p><b>  {</b></p><p>  x=x*i; //誤差值</p><p>  x--; //x軸電機(jī)正轉(zhuǎn),誤差

105、減1</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==2) //標(biāo)志位為2,中心點(diǎn)x坐標(biāo)在第一象限</p><p>  { if(x==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差

106、為0</p><p>  x=0;</p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p><b>  {</b></p><p>  x=x*i; //誤差值</p><p>  x++;

107、//x軸電機(jī)反轉(zhuǎn),誤差加1</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==3) //標(biāo)志位為3,中心點(diǎn)x坐標(biāo)在第三象限</p><p>  { if(x==0) //調(diào)整后的中心點(diǎn)與期望中心

108、點(diǎn)重合時(shí),誤差為0</p><p><b>  x=0;</b></p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p><b>  {</b></p><p>  x=x*i; //誤差值</p><

109、;p>  x++; //x軸電機(jī)反轉(zhuǎn),誤差加1</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==4) //標(biāo)志位為4,中心點(diǎn)x坐標(biāo)在第四象限</p><p>  { if(x==0)

110、 //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p><b>  x=0;</b></p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p><b>  {</b></p><p>  x=x*i;

111、 //誤差值</p><p>  x--; //x軸電機(jī)正轉(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,中心點(diǎn)y坐標(biāo)在第一象限<

113、;/p><p><b>  {</b></p><p>  if(y==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p><b>  y=0;</b></p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p>

114、;<p>  { y=y*j; //誤差值</p><p>  y--; //y軸電機(jī)正轉(zhuǎn),誤差減1</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==2)

115、//標(biāo)志位為2,中心點(diǎn)y坐標(biāo)在第二象限</p><p><b>  {</b></p><p>  if(y==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p><b>  y=0;</b></p><p>  else //調(diào)整后的中

116、心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p>  { y=y*j; //誤差值</p><p>  y--; //y軸電機(jī)正轉(zhuǎn),誤差減1</p><p><b>  }</b></p><p><b>  } </b></p><

117、p>  if(flag==3) //標(biāo)志位為3,中心點(diǎn)y坐標(biāo)在第三象限</p><p><b>  {</b></p><p>  if(y==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p><b>  y=0;</b></p><

118、p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p>  { y=y*j; //誤差值</p><p>  y++; //y軸電機(jī)反轉(zhuǎn),誤差加1</p><p><b>  }</b></p><p>&l

119、t;b>  } </b></p><p>  if(flag==4) //標(biāo)志位為4,中心點(diǎn)y坐標(biāo)在第四象限</p><p><b>  {</b></p><p>  if(y==0) //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)重合時(shí),誤差為0</p><p>

120、;<b>  y=0;</b></p><p>  else //調(diào)整后的中心點(diǎn)與期望中心點(diǎn)不重合時(shí),調(diào)整誤差</p><p>  { y=y*j; //誤差值</p><p>  y++; //y軸電機(jī)反轉(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論