基于STC89C52的自動追光自動避障智能小車的設(shè)計_第1頁
基于STC89C52的自動追光自動避障智能小車的設(shè)計_第2頁
基于STC89C52的自動追光自動避障智能小車的設(shè)計_第3頁
基于STC89C52的自動追光自動避障智能小車的設(shè)計_第4頁
基于STC89C52的自動追光自動避障智能小車的設(shè)計_第5頁
免費預(yù)覽已結(jié)束,剩余40頁可下載查看

下載本文檔

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

文檔簡介

1、華僑大學1自動追光避障電動小車論文學校:華僑大學學院:信息科學與工程學院班級:10級 集成電路設(shè)計與集成系統(tǒng)組員:目錄摘要.3.一、設(shè)計要求.4.華僑大學21.1 基本要求. 41.2 發(fā)揮部分.4二、.系統(tǒng)方案設(shè)計 .5.2.1 系統(tǒng)功能概述.52.2 系統(tǒng)方案概括.52.3 系統(tǒng)結(jié)構(gòu)圖.5三、.模塊設(shè)計方案選擇63.1、電源模塊的設(shè)計. .63.2、自動避障模塊的設(shè)計 .63.3、感光模塊的設(shè)計.73.4、自動停車模塊的設(shè)計 . .73.5、穩(wěn)壓模塊的設(shè)計.73.6、 步進電機驅(qū)動模塊的設(shè)計 . 73.7、直流電機驅(qū)動模塊的設(shè)計 . .83.8、太陽能電池板模塊的設(shè)計 . .8四、.系統(tǒng)各

2、模塊電路圖附件.94.1、中央控制模塊. 94.2、太陽能電池板模塊 . .94.3、感光模塊.94.4、穩(wěn)壓電路. .104.5、步進電機驅(qū)動電路 .114.6、直流驅(qū)動電路.11五、 軟件設(shè)計.115.1 超聲波控制. 115.2 感光模塊程序 . .145.3 步進電機驅(qū)動程序 . 16六、 電路調(diào)試.176.1 追光系統(tǒng)調(diào)試.176.2 避障系統(tǒng)調(diào)試 . .176.3 太陽能電池板充電系統(tǒng)調(diào)試 . .186.4 整體電路調(diào)試.18七、 總結(jié) .18附錄 2:程序.18華僑大學3摘要隨著汽車自動化、智能化程序的提高,新一代智能汽車的研發(fā)在 國內(nèi)外受到越來越多的重視。目前,國內(nèi)比較先進的智

3、能車輛通過觀 測前方的路況,將路況信息輸入到車內(nèi)的電腦中,通過計算機控制方 向盤的運動實現(xiàn)自動避障的目的。 然而隨著汽車產(chǎn)業(yè)的快速發(fā)展,汽 車產(chǎn)業(yè)目前已經(jīng)進入調(diào)整期,目前,全球石油資源緊缺,且油價不斷 上漲,沖擊了各個行業(yè),尤其是汽車產(chǎn)業(yè),同時人類面對著全球變暖、 水平面上升等世界性問題。因此未來的汽車必將趨于電氣化、智能化。 眾所周知太陽能是目前最為清潔的能源,對人類來說無疑是一種新型 的能源。此次設(shè)計的簡易電動小車的動力來自于太陽能轉(zhuǎn)換的電能, 是基于單片機控制及傳感器技術(shù),實現(xiàn)的功能是小汽車可自動尋光, 并且能夠利用超聲波傳感器檢測道路上的障礙,以及電動小車的自動停車。電動小車由單片機

4、STC89C52 空制電動小汽車的自動尋光、自 動避障、及自動停車。關(guān)鍵字:太陽能電池板;單片機;超聲波傳感器;光敏二極管一、任務(wù)要求設(shè)計制作一套自動追光太陽能充電系統(tǒng)放置在電動小車上。 小車以一定速度 追著光源行進,太陽能板始終能面對光源給蓄電池充電。 小車行進過程中會遇到 路障,小車必須能避開路障繞道找到光源并繼續(xù)追光前進。1.1.基本要求(1) 光源用不大于100W的白熾燈, 場地不小于1.5mx1.5m,障礙物不小 于15cmx15cmx15cm??梢詫庠催M行聚光。(2) 光源在離小車大于 1.5m 的固定位置擺放,放置高度不高于 25cm。小 車發(fā)現(xiàn)光源后沿光源方向前進。(3) 小

5、車前進方向上至少隨機放置三個障礙物。遇到障礙物,小車應(yīng)繞道華僑大學4前進。(4) 在小車繞道過程中,太陽能板應(yīng)始終對準光源。(5) 到達離光源一定位置后,小車應(yīng)停止前進。(6) 小車前進直線距離應(yīng)大于 1.2 米,時間不大于 2 分鐘。(7) 能顯示太陽能為蓄電池供電狀態(tài)。1.2 .發(fā)揮部分(1) 場地尺寸 2mx2m,光源離小車 2 米以上。(2) 障礙物 5 個以上。(3) 能逆著光源前進,并繞過障礙物。但太陽能板始終對準光源。(4) 完成時間不大于 1 分鐘。(5) 在無白熾燈光源情況下,小車可以沿自然光源方向前進。(6) 其它。二、系統(tǒng)方案設(shè)計2.1 系統(tǒng)功能概述初始時刻小車置于起點,

6、打開電源,啟動小車。小車會通過感光模塊進行趨 光并檢測前方障礙情況,太陽能板也能根據(jù)自己的感光模塊自動正對光源。當在前進過程中遇到障礙物時,小車會根據(jù)避障系統(tǒng)來選擇左轉(zhuǎn)或右轉(zhuǎn),以便避開障礙物。在避開障礙物后,小車趨光前進。同時太陽能板也時刻都正對光源,并能 時刻顯示充電狀態(tài)。到達終點時,小車自動停車。2.2 系統(tǒng)方案概括主控制系統(tǒng): 在此次設(shè)計中,涉及到一個外部中斷,三個定時中斷,所以采 用常用的單片機 STC89C52 作為小車的主控制器,通過單片機來接受指令并發(fā)出 指令,使小車的各項功能得以順利完成。(1).感光系統(tǒng):設(shè)計中不僅要求小車能夠朝著光源前進,而且還要求太陽 能板也要正對光源。通

7、過各方面的了解,比較,最終我們決定采用了兩套獨立感 光系統(tǒng),來完成小車趨光與太陽能電池板對光。 這兩個模塊分別放在小車和太陽 能板的左右兩端,通過比較兩邊光敏電阻的電壓,以此來判斷是否正對這光源。(2).避障系統(tǒng):設(shè)計中采用三組避障模塊。分別裝在左,中,右,這樣便 可使小車順利避障。(3)能源系統(tǒng):使用一片 LM2596-5(穩(wěn)定 5V 輸出)和 LM2596_ADJ (可調(diào) 輸出)分別給芯片和電機供電。(4).動力系統(tǒng):這次采用的是直接驅(qū)動兩個直流電機的方式來解決小車動 力問題。通過分別控制兩個直流電機的轉(zhuǎn)速使小車前進、后退、轉(zhuǎn)向、停止等功2.3 系統(tǒng)結(jié)構(gòu)圖華僑大學5系統(tǒng)總流程圖:開始NN4

8、對光太能板是否正對光源Y1Y r避障前方是否有障礙N_ _ Y _ 太能板是否正對光源充電1r尋光N4-小車是否正對光源Y前進Y4停車是否靠近光華僑大學6三、模塊設(shè)計方案選擇3.1、電源模塊的設(shè)計方案一:所有元器件采用單一電源。它供電簡單,方便靈活,減小了車載質(zhì) 量和摩擦阻力。但是電機啟動瞬間電流很大,會造成電壓不穩(wěn)定、有毛刺干擾等, 不適用于要求電源穩(wěn)壓的 CPU,嚴重時可能造成系統(tǒng)掉電。方案二:單片機必須與大電流器件分開供電,避免大電流器件對單片機造成 干擾,采用兩路供電,這樣可以使用其中一路單獨為單片、指示燈供電,另外一 路提供 L298N驅(qū)動直流電機使用。介于設(shè)計穩(wěn)定性考慮,采用方案二

9、。3.2、自動避障模塊的設(shè)計方案一:采用超聲波。由于超聲波指向性強,能量消耗緩慢,在介質(zhì)中傳播 距離遠且具有頻率高、波長短、繞射現(xiàn)象小等諸多優(yōu)點故而超聲波已經(jīng)廣泛應(yīng)用 于現(xiàn)代社會之中。超聲波傳感器主要采用直接反射式的檢測模式。位于傳感器前面的被檢測物通過將發(fā)射的聲波部分地發(fā)射回傳感器的接收器,從而使傳感器檢測到被測物。還有部分超聲波傳感器采用對射式的檢測模式。一套對射式超聲波傳感器包括一個發(fā)射器和一個接收器,兩者之間不斷進行信息的傳遞。位于接收 器和發(fā)射器之間的被檢測物將會阻斷接收器接收發(fā)射的聲波,從而傳感器將產(chǎn)生高低電平的跳變進而由單片機對其進行相關(guān)處理。方案二:使用紅外傳感器,它是一種集發(fā)

10、射與接收于一體的光電傳感器,檢測距離可以根據(jù)要求進行調(diào)節(jié)。 該傳感器具有探測距離遠、受可見光干擾小、價 格便宜、易于裝配、使用方便等特點。紅外發(fā)射管發(fā)出紅外線,當發(fā)出的紅外線 照射到白色的平面后反射,發(fā)出的紅外線照射到黑色的平面后紅外線被吸收。若 紅外接收管能接收到反射回的紅外線則檢測出白線繼而輸出低電平,若接收不到紅外線則檢測出黑線繼而輸出高電平。由于測試中使用的是白熾燈,產(chǎn)生的光中,紅外光占有比例較大,如使用紅 外傳感器,會有較大的干擾。所以考慮到設(shè)計中對障礙物中尺寸和顏色上的要求 以及使用的方便性、穩(wěn)定性和檢測具體的可調(diào)性,選擇方案一,即使用超聲波進 行避障,在使用時可以方便的對最小避障

11、距離進行調(diào)節(jié),使得更好地實現(xiàn)小車避障功能而順利趨光行駛。3.3、感光模塊的設(shè)計方案一:使用光敏二極管和 A/D 轉(zhuǎn)換電路來實現(xiàn)自動尋光。光敏二極管與半 導體二極管在結(jié)構(gòu)上是類似的,其內(nèi)部是一個具有光敏特征的 PN 結(jié),具有單向?qū)?電性,因此工作時需加上反向電壓。無光照時,有很小的飽和反向漏電流,即暗 電流,此時光敏二極管截止;當受到光照時,飽和反向漏電流大大增加,形成光 電流,它隨入射光強度華僑大學7的變化而變化。輸出經(jīng)過 ADC0832 進行 A/D 轉(zhuǎn)換后得到 的電壓變化量反饋給單片機進行處理, 進而控制小車尋找光源。因此可以利用此 特性進行自動尋找光源。方案二:采用光敏電阻和 A/D 轉(zhuǎn)

12、換電路來實現(xiàn)自動尋光。由于光敏電阻的 阻值會隨著光照強度的增加而迅速減小,我們可以應(yīng)用此原理,通過一個A/D轉(zhuǎn)換出來的電壓變化量經(jīng)過單片機的處理來實現(xiàn)自動尋光功能。測試發(fā)現(xiàn)光敏二極管在對著光源移動時反應(yīng)過于靈敏,在距離光源較近的位 置會出現(xiàn)一個跳變,且在離光源較近時(大約70cm 至 100cm)對光源及其不敏感,而且 A/D 讀數(shù)不穩(wěn)定,波動較大,從而影響小車的前進。光敏電阻雖然不 如光敏二極管靈敏,但經(jīng)過實際測試發(fā)現(xiàn),其穩(wěn)定性比光敏二極管好很多,經(jīng) A/D 轉(zhuǎn)換后的數(shù)據(jù)線性性好,而且價格相對較低基本可以滿足設(shè)計要求。因而選-L-X/ - -擇萬案二。3.4、自動停車模塊的設(shè)計:方案一:采用

13、熱敏電阻,該設(shè)計采用的光源是白熾燈,白熾燈是在照明的時候能夠產(chǎn)生大量的熱量, 我們可以利用該特性,采用熱敏電阻制作一個停車模塊。熱敏電阻的阻值能夠隨 著周圍熱的不同而改變。然后通過比較器控制小車靠近光源時自動停車。方案二:禾 U 用感光模塊上光敏電阻的感光效應(yīng),當小車離光源越近時,經(jīng) A/D轉(zhuǎn)換后的電壓值就會越小。因此可以利用此原理,給A/D 設(shè)置一個初值,當達到這一初值時小車自動停止。經(jīng)過實踐,我們利用熱敏電阻制作的停車模塊對熱不是很敏感,而且我們已有四個感光模塊,效果也不亞于適應(yīng)熱敏電阻。因此我們選用了利用感光系統(tǒng)來 進行停車。3.5、穩(wěn)壓模塊的設(shè)計方案一:采用 LM2596 穩(wěn)壓芯片對干

14、電池輸出電壓進行穩(wěn)壓。 LM2596 具有很 好的線性和負載可調(diào)性。有固定輸出和可調(diào)輸出,其固定輸出有 3.3V、5V、12V, 可調(diào)可以輸出 1.2 37V 的各種電壓。方案二:采用 LM7805 三端穩(wěn)壓器件進行穩(wěn)壓。其可固定輸出 5V 穩(wěn)定電壓而 且內(nèi)部有過熱保護和安全工作保護電路。雖然 LM7805 器件是按照固定電壓值來 設(shè)計的,但當加載一些外部器件后,同樣可以輸出可變電壓。綜合考慮上述兩種方案,由于 LM2596 輸出電壓 1.2 37V 穩(wěn)定可調(diào)內(nèi)部有過 熱保護和限流保護電路,外圍電路簡單,僅需 4 位外接元件,且使用的電感是比 較容易購買的標準電感,輸出電壓可調(diào)性好。而 LM7

15、805 是按固定輸出 5V 電壓值 來設(shè)計的,常用于單片機的供電電路的設(shè)計。 雖可輸出可變電壓值,但是其輸出 電壓可調(diào)性差,更主要的是其效率低,只能達到 60%75%而 LM2596 最高效率 可達 90%相比之下我們選擇了方案一。3.6、步進電機驅(qū)動模塊的設(shè)計方案一:采用 ULN2003 步進電機驅(qū)動驅(qū)動芯片。ULN2003 多用于單片機、智 能儀表、PLC 數(shù)字量輸出卡等控制電路中。通常芯片采用DIP 封裝。方案二:采用 L298 驅(qū)動芯片。L298 既可以驅(qū)動直流電機又可以驅(qū)動步進電 機,常用于打字機、數(shù)字機床、復印機等控制電路中。華僑大學8綜合考慮上述步進電機的驅(qū)動芯片,ULN2003

16、 具有電流增益高、工作電壓高、 溫度范圍寬、帶負載能力強、工作效率高、外圍電路設(shè)計簡單、價格較低、易于 購買等優(yōu)點。所以本次設(shè)計中我們采用 ULN2003 乍為步進電機的驅(qū)動芯片。3.7、直流電機驅(qū)動模塊的設(shè)計直流電機驅(qū)動采用 L298 驅(qū)動芯片。L298 是 SGS 公司的產(chǎn)品,比較常見的是 15 腳 Multiwatt 封裝的 L298N,內(nèi) 部同樣包含 4 通道邏輯驅(qū)動電路。L298N 芯片可以驅(qū)動兩個直流電機,也可以驅(qū) 動兩個二相步進電機或一個四相步進電機,輸出電壓最高可達46V。L298N 可接受標準 TTL 邏輯電平信號 Vss,VSs可接 4. 57 V 電壓。4 腳 VS接電源

17、電壓,Vs電壓范圍 VH為+ 2. 546 V,輸出電流可達 2. 5 A,可驅(qū)動電 感性負載。1腳和 15 腳下管的發(fā)射極分別單獨引出以便接入電流采樣電阻,形 成電流傳感信號。L298N 可驅(qū)動 2 個電動機,0UT1 0UT2 和 OUT3 OUT4 之間可 分別接電動機。5、7、10、12 腳接輸入控制電平,控制電機的正反轉(zhuǎn)。EA, EB接控制使能端,控制電機的停轉(zhuǎn),也可用于控制PWM 調(diào)速。3.8、太陽能電池板模塊的設(shè)計本次設(shè)計采用兩塊太陽能電池板并聯(lián)的方式,通過吸收白熾燈散發(fā)的光能并 隨之轉(zhuǎn)換成電能來供給蓄電池充。經(jīng)測試一塊太陽能電池板距離 100W 白熾燈約 1.5-2 米的時候電

18、壓約為 3V,且而兩塊串聯(lián)時約有 6V。但是本次設(shè)計需要對太 陽能電池板的輸出電壓進行升壓處理,以供蓄電池充電。而串聯(lián)時電流很小,即使離光源很近也無法進行升壓。故采用兩塊太陽能電池板新并聯(lián)的方式進行升 壓。進而給蓄電池充電。升壓電路有如下兩種設(shè)計:方案一:使用 LM2577 升壓電路,輸入電壓,輸出電壓以通過電阻R1 和電阻 R2 的比值進行調(diào)節(jié)(Vout=1.23(1+R1/R2)。輸入電壓約 5V,輸出電壓可達 10V 以上。方案二:使用 TPS61200 DC/DC 升壓電路,輸入電壓的范圍為 0.3-5.5V,輸出的電壓穩(wěn)定在 6V 左右,測試發(fā)現(xiàn),兩塊太陽能電板并聯(lián)在距離光源 2 米

19、處可以達到 5V,均滿足兩 種芯片輸入電壓的要求,但由于方案二中的 TPS61200 的價格較高、不易購買, 封裝為貼片式,不易使用,且輸出電壓較低。LM2577 所需的最低電壓為 3V,但電流要求較高,在光強不夠時,不能進行升壓,但在離光源較近時可以將電壓 升至11V 左右,以完成對 8 節(jié)電池充電,并能顯示充電狀態(tài)。綜合考慮上述兩 種方案選用LM2577 升壓模塊較為合理。四、系統(tǒng)各模塊電路圖附件4.1、中央控制模塊:該模塊由單片機最小系統(tǒng)、外加 5 組電源構(gòu)成。華僑大學94.2 太陽能電池板模塊太陽能電池板收集的光能轉(zhuǎn)換成電能,由于電壓較低,因此需要升壓電路,給蓄電池充 電。升壓電路原理

20、圖:1-a厶,1- 4 &-M3 JU!L47T界一T1M-3Kfi!wC專Comp乞警kCM4.3、感光模塊感光電路采用光敏電阻和 片機里進行尋光處理。原理圖:ADC0832 組合電路。通過 A/D 轉(zhuǎn)換后的電壓變換量反饋到單華僑大學10GNDll4.4、穩(wěn)壓電路本實驗中的穩(wěn)壓電路采用兩組LM2596 芯片組合而成的穩(wěn)壓電路。一組固定輸出 5V 電壓(上圖),供芯片使用。另外一組輸出電壓可調(diào)(下圖),供電機使用。原理圖:EtmRES2u61vccit心Ido 1AE25M . o嚴、TKI:o OUTA4.COM-csVE chOdkchdOgnddlGOTVCC心-廣1華僑大學114.5

21、步進電機驅(qū)動電路本次設(shè)計中的步進電機驅(qū)動電路采用ULN2003 芯片組合而成的驅(qū)動電路,原理圖:= ULN2K3GND4.6、直流驅(qū)動電路直流電機驅(qū)動電路,采用L298 直流電機驅(qū)動芯片,具體電路如圖:五、軟件設(shè)計5.1 超聲波控制本系統(tǒng)利用單片機控制超聲波的發(fā)射和對超聲波自發(fā)射至接受往返時間的計Sril01il02i3V?i404ii05i606i?c-GNDvccB2ili2i3i415i6i7GNDvcc3K*VIeKTTLr :fflL7411ES1SAN亠一B1f10II4514iC4C3| ”伽,華僑大學12時,接受電路的輸出端接單片機的外部中斷源輸入口。系統(tǒng)定時發(fā)射超聲波,在啟動

22、發(fā)射電路的同時啟動單片機內(nèi)部定時器,利用定時器的計數(shù)功能記錄超聲波 發(fā)射的時間和接受到反射波的時間。當收到超聲波的反射波時,接收電路輸出端 產(chǎn)生一個負跳變,在單片機的外部中斷源輸入口產(chǎn)生一個中斷請求信號, 單片機 響應(yīng)外部中斷請求,執(zhí)行外部中斷子程序,讀取時間差,計算距離。結(jié)構(gòu)圖如下射憎1/- “片/a按收處部分程序代碼:void barrier_detect ion( void)uchar i;barrier_flag=0;detector=4;time_0_count=O;定時器 0 工作在 15cm 障礙物檢測while(detector)EX0 = 0;關(guān)外部中斷IE0 = 0;清除外

23、部中斷 0 標志位TH0=0 xfc;TL0=0 x18;leftTX=1;MiddleTX=1;rightTX=1;switch(detector)case 4: leftCo ntrol=1;MiddleCo ntrol=0;rightCo ntrol=0;for(i=0;i16;i+)leftTX=!leftTX;break;左側(cè)超聲波發(fā)波case 2: leftCo ntrol=0;MiddleCo ntrol=1;rightCo ntrol=0;for(i=0;i16;i+)MiddleTX=!MiddleTX;TR0 = 0;關(guān)閉定時器 0華僑大學13break;中間超聲波發(fā)波ca

24、se 1: leftC on trol=0;MiddleCo ntrol=0;rightCo ntrol=1;for(i=0;i=1;delay1ms(10);EX0 = 0;/關(guān)閉外部中斷TR0 = 0;/關(guān)閉定時器 1TH0=0 x3c;TL0=0 xb0;time_0_count=1;/定時器 0 工作在定時 50ms 障礙物檢測TR0 = 1;/打開計數(shù)器 1,65MS 檢測障礙leftCo ntrol=0;MiddleCo ntrol=0; rightC on trol=0;超聲波程序流程圖:華僑大學14(外部中斷入口)I計算距離_JLI保存結(jié)果I清中斷II湮回5.2 感光模塊程序感

25、光模塊主要有 ADC0832 和光敏電阻組成。正常情況下 ADC0832 與單片 機的接口應(yīng)為 4 條數(shù)據(jù)線,分別是 CS、CLK、DO、DI。但由于 DO 端與 DI 端 在通信時并未同時有效并與單片機的接口是雙向的,所以電路設(shè)計時可以將 DO和 DI 并聯(lián)在一根數(shù)據(jù)線上使用。當 ADC0832 未工作時其 CS 輸入端應(yīng)為高電 平,此時芯片禁用,CLK 和 DO/DI 的電平可任意。當要進行 A/D 轉(zhuǎn)換時,須 先將 CS 使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時芯片開始轉(zhuǎn)換工作,同時由處理器向芯片時鐘輸入端 CLK 輸入時鐘脈沖,DO/DI 端則使用 DI 端輸入通道功能選擇

26、的數(shù)據(jù)信號。在第 1 個時鐘脈沖的下沉之前 DI 端必須是 高電平,表示啟始信號。在第 2、3 個脈沖下沉之前 DI 端應(yīng)輸入 2 位數(shù)據(jù)用于 選擇通道功能,當此 2 位數(shù)據(jù)為“、“(時,只對 CH0 進行單通道轉(zhuǎn)換。當 2 位數(shù)據(jù)為“、“ 1 時,只對 CH1 進行單通道轉(zhuǎn)換。當 2 位數(shù)據(jù)為“0” “0”,將 CH0 作為正輸入端 IN+ ,CH1作為負輸入端 IN-進行輸入。當 2 位數(shù)據(jù)為“0”“1 時,將 CH0 作為負輸入端 IN-,CH1 作為正輸入端 IN+進行輸入。 到第 3 個脈 沖的下沉之后 DI 端的輸入電平就失去輸入作用,此后 DO/DI 端則開始利用數(shù)據(jù) 輸出 DO

27、 進行轉(zhuǎn)換數(shù)據(jù)的讀取。從第 4 個脈沖下沉開始由 DO 端輸出轉(zhuǎn)換數(shù)據(jù)最 高位 DATA7,隨后每一個脈沖下沉 DO 端輸出下一位數(shù)據(jù)。直到第 11 個脈沖時 發(fā)出最低位數(shù)據(jù) DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。也正是從此位開始輸出下 一個相反字節(jié)的數(shù)據(jù),即從第 11 個字節(jié)的下沉輸出 DATA0。隨后輸出 8 位數(shù)據(jù), 到第 19 個脈沖時數(shù)據(jù)輸出完成,也標志著一次 A/D 轉(zhuǎn)換的結(jié)束。最后將 CS 置 高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進行處理就可以了。時序圖如下:諫取時闔值I定時中斷子程序外部申斷子程序徒時中jftxm定時器和贈化潔中斷j w華僑大學15ADCQ532 Timingt34

28、 S * I t it 114213 M n細IT It 119JLFWLTLRJWLRRRJWWWWWLQVTRTT MM UtS.MUl UX HITiihCTMft部分程序代碼:uchar AD0832_2(void )/太陽能充電板感光模塊uchar data_f,i,data_f1,i1,k1;D1= 1;cs1=1;cs2=1;cs3=1;cs4=1;_n op_();_n op_();_n op_();cs4=0;D 仁 1;/芯片使能之前的初始化。第一個下降沿clk=1;_n op_();_n op_();_n op_();clk=0; /確定通道模式、第2 個下降沿_n op

29、_();_n op_();_n op_();clk=1;D 仁 1;設(shè)定通道初始化_n op_();_n op_();_n op_();clk=0;_n op_();_n op_();_n op_();clk=1;MA解|A|SWTHI血皿也ILTML恫iirmFEMUI fMSf 6I1M131 WT0A1A4?T_rLrLrLLrLrLTLn華僑大學16D 仁 1;設(shè)定通道初始化 第 3 個下降沿_n op_();_n op_();_n op_();clk=0; /AD 轉(zhuǎn)化的初始化完成。for(i 仁 0;i18;i1+)/得到一個正常排序的 8 位數(shù)據(jù)clk=1;_nop_();_no

30、p_();clk=0;_nop_();_nop_();data_f1=1; data_f1|=D0;cs4=1;a4=data_f1;/將第二個 AD 值存儲在 a2 中k 仁 abs(a4-a3);return k1;5.3 步進電機驅(qū)動程序步進電機是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機構(gòu)。通俗一點講:當步進驅(qū) 動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度 (及步進角)。您可以通過控制脈沖個來控制角位移量,從而達到準確定位的目的;同時您可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。步進電機 28BYJ48 型四相八拍電機,電壓為 DC5 DC12

31、V 當對步進電機施加一系 列連續(xù)不斷的控制脈沖時,它可以連續(xù)不斷地轉(zhuǎn)動。每一個脈沖信號對應(yīng)步進電 機的某一相或兩相繞組的通電狀態(tài)改變一次,也就對應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一 個步距角)。當通電狀態(tài)的改變完成一個循環(huán)時,轉(zhuǎn)子轉(zhuǎn)過一個齒距。四相步進 電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A。),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-。), 八拍(A-AB-B-BC-C-CD-D-DA-A。)部分程序代碼如下:華僑大學17void Ieft2(uchar Step3)uchar i;whiIe(Step3)for(i=0;i4;i+)P0

32、=taiya nnen gzhe ngi; delay1us(400);Step3-;六、電路調(diào)試6.1 追光系統(tǒng)調(diào)試首先是把兩個感光模塊分別固定在小車頭的左右兩端,在距離小車 1.5 米外的地方放置 100W 的白熾燈做光源。通過顯示經(jīng) A/D 轉(zhuǎn)換后的光敏電阻的電壓來 判斷對光的強弱變化。當小車距離光源較遠時,讀數(shù)較大;靠近時,讀數(shù)減小。 小車是否是正對光源通過比較兩個感光模塊傳出來的數(shù)據(jù)。當數(shù)據(jù)差不多相等 時,小車正對光源,當小車偏離光源越大時時,差值會增大。在剛開始測試時,因為讀數(shù)的錯誤,出現(xiàn)了讀出來的數(shù)據(jù)會有一個跳變,即 數(shù)據(jù)剛開始時會隨著光強的變亮而減小, 當減小到最小時會突然變大

33、,然后在依 次減小。而我們對于該種錯誤的讀法采用了給光敏電阻加上一個外罩,使得在一定距離內(nèi)不會出現(xiàn)跳變,且會隨著光強的增強而線性減小。 該種方法雖然能過尋 到光源,但在某些環(huán)境下會出現(xiàn)差錯。后來經(jīng)過仔細排查并請教他人。發(fā)現(xiàn)程序 中 A/D 讀數(shù)的方式錯誤,漏掉了其中一位。經(jīng)改正和測試,發(fā)現(xiàn)該種方法能夠 順利完成尋光。6.2 避障系統(tǒng)調(diào)試避障系統(tǒng)采用的超聲波避障。在剛開始時,我們采用的一個超聲波模塊配合 一個步進電機進行避障,即在小車前進過程中,通過擺動超聲波模塊及時檢測小 車的左右和前面是否有障礙物,如有障礙物時,小車進行避障。在開始測試時, 發(fā)現(xiàn)我們購買的是減速電機,速度不能滿足在前進過程中

34、左右搖擺并進行避障。經(jīng)改進,我們采用三個超聲波模塊組成的一個避障系統(tǒng)進行避障。分別裝在小車車頭的正前方和左右兩邊。當超聲波只檢測到左邊或者右邊有障礙物時,小車轉(zhuǎn) 向前進一個角度進行避障。當檢測到左中后、右中、左中右都有障礙物時,小車 先是進行后退轉(zhuǎn)向,然后是前進一段距離進行避障。該種方法需要在測試時,不 斷的進行調(diào)試轉(zhuǎn)向的角度,以達到順利避障的目的。華僑大學186.3 太陽能電池板充電系統(tǒng)調(diào)試充電系統(tǒng)采用兩塊太陽能電池板并聯(lián)(以提高輸出電流)的方式,再通過一個 升壓模塊給 8 節(jié)電池進行充電。采用一個發(fā)光二極管來顯示電池的充電狀態(tài)。 即: 當電池滿電時,由于發(fā)光二極管兩端電勢差較小,因而不足以

35、點亮發(fā)光二極管。 隨著干電池電能的不斷耗散發(fā)光二極管兩端的電勢差加大,從而使其發(fā)光。因而我們可以通過觀測發(fā)光二極管的亮滅來顯示蓄電池的充電狀態(tài)。此外由于發(fā)光二極管的單項導通作用:一方面、其正向?qū)▔航岛苄。涣硪环矫?、其反相擊穿?壓很大,且其反相導通電阻非常大,因而又可以防止,蓄電池滿電時給太陽能電 池板反相充電。6.4 整體電路調(diào)試整體電路的調(diào)試是最繁瑣的,也是最重要的。它需要不斷的進行測試,不斷 的進行電路和程序的改進。在尋光和避障兩個功能整合在一起時,就需要對小車 進行合理的控制,經(jīng)過測試發(fā)現(xiàn)在小車進行避障的同時, 關(guān)閉尋光模塊,在結(jié)束 避障的那一刻又要開啟開啟避障程序。一種能夠良好解決

36、避障和尋光都能實現(xiàn)的 一種方案。在小車進行避障是,同時也要使太陽能板正對光源, 在進行這一步調(diào) 試時,可以使用進行多次對光,但又不能把所有的時間都去對光, 這里就可以采 用中斷的方式,在小車進行避障延時時,不斷的讓太陽能板去對光。整體電路的 調(diào)試是一個核心環(huán)節(jié),需要我們細致耐心的不斷調(diào)試。這樣才能的得到理想的效 果七、總結(jié)經(jīng)過一個月的辛勤勞作,我們團隊沒能完全完成設(shè)計要求。但也使我們受益 頗多,不僅鞏固了我們的所學知識,讓我們對單片機有了深層次的了解, 并且讓 我們學到了跟多新的知識。例如超聲波的使用、步進電機的驅(qū)動。光敏器件的光 敏特性等知識,這些無一不是寶貴的財富。在整個設(shè)計過程中我們遇到

37、了許許多 多的挫折和困難,例如在剛開始的選材上,我們就走了不少的彎路。由于初次接 觸步進電機,了解甚少,購買到減速步進電機,使得我們不得不放棄原有的設(shè)計 方案,在重新選擇新的方案。在避障模塊中更是選擇了比較難控制的超聲波,這不僅使得設(shè)計的難度加大了,編程難度也加大了。當我們好不容易把每個模塊都 分別制作出來并能控制時,難題又一次的出現(xiàn)了,要想把每個模塊整合起來并不 一件容易的事情,在整合出來后要對整個系統(tǒng)進行控制更是困難重重, 光是在避 障方面就花去了我們大部分時間,同時在尋光方面,由于光強的不確定性,必須 經(jīng)過一次次的調(diào)試才能使小車和太陽能板正對光源。 這一個又一個的難題不斷的 出現(xiàn)在我們面

38、前,但我們并沒有選擇放棄,而是不斷的進行著嘗試,不斷的改變, 終于在我們團隊堅持不懈的女里下完成了這次設(shè)計。因為這次設(shè)計出的作品并不是很完善,我們?nèi)詫⒗^續(xù)努力,爭取把小車的個方面內(nèi)容都加以完善并增加上新 的內(nèi)容。通過這此設(shè)計讓我們知道了實踐同理論聯(lián)系的重要性, 我們應(yīng)該抓住機華僑大學19會多參加此類的競賽,這不僅能過豐富你的動手能力,還能學到很多書本上學不 到的東西。總程序:#in clude#in clude#include#in clude#defi ne uint un sig ned int#defi ne uchar un sig ned char /停車 #defi ne stop

39、(); IN31=0; IN32=0; IN33=0; IN34=0;/后退#defi ne back(); IN31=0; IN32=1; IN33=0; IN34=1;/前進#defi ne go(); IN31=1; IN32=0; IN33=1; IN34=0;/右輪前進實現(xiàn)左轉(zhuǎn)#defi ne left_g(); IN31=0; IN32=0; IN33=1; IN34=0;左輪前進實現(xiàn)右轉(zhuǎn)#defi ne right_g(); IN31=1; IN32=0; IN33=0; IN34=0;左輪后退實現(xiàn)左轉(zhuǎn)#defi ne left_b(); IN31=0; IN32=1; IN33

40、=0; IN34=0;/右輪后退實現(xiàn)右轉(zhuǎn) #defi ne right_b(); IN31=0; IN32=0; IN33=0; IN34=1;步進電機 2 輸入端 IN1,控制太陽能電池板步進電機 2 輸入端 IN2步進電機 2 輸入端 IN3步進電機 2 輸入端 IN4/車頭 AD1 片選/車頭 AD2 片選/太陽能電池面板 AD1 片選/太陽能電池面板 AD1 片選sfr T2MOD=Oxc9;sbit IN21= P0A4;sbit IN22= P0A5;sbit IN23= P0A6;sbit IN24= P0A7;sbit cs1= P1A0;sbit cs2= P1A1;sbit

41、 cs3= P1A2;sbit cs4= P1A3;sbit D0= P1A4;sbit D1= P1A4;sbit clk= PIA5;sbit IN31= P2A0;sbit IN32= P2A1;sbit IN33= P2A2;sbit IN34= P2A3;sbit leftTX=卩2人4;sbit MiddleTX=卩2/檢驗碼/電壓值/ AD 時鐘/直流電機輸入端IN1/直流電機輸入端IN2/直流電機輸入端IN3/直流電機輸入端IN4/左超聲波發(fā)射端/右超聲波發(fā)射端華僑大學20sbit rightTX= P2A6;中間超聲波發(fā)射端sbit RX=P3A2;/超聲波接收端口(外部中斷

42、0)sbit leftCo ntrol=P3A4;II左側(cè)超聲波允許接收控制端sbit MiddleCo ntrol=P3A5;中間超聲波允許接收控制端sbit rightCo ntrol=P3A6;/右側(cè)超聲波允許接收控制端char code taiya nnen gzhe ng=0 x10,0 x20,0 x40,0 x80; /太陽能電池板正轉(zhuǎn)碼char code taiya nnengfan =0 x80,0 x40,0 x20,0 x10;/ 太陽能電池板反轉(zhuǎn)碼uchar ch=0 x03; / 設(shè)置 AD0832 通道uchar TX,a1,a2,a3,a4; 用于寄存 4 個 A

43、D 轉(zhuǎn)化值,a1,a2 為車頭兩個 AD 值,a3,a4 為太陽能充 電板兩個 AD 值uchar number 仁 0;/用于計數(shù) 500ms,太陽能板對光一次uchar detector_busy = 0;/超聲波正在檢測標志位uchar barrier_flag = 0;/低三位用于表示是否有障礙物;第三位表示左側(cè)探測器探測結(jié)果,第二位表示中間探測器探測結(jié)果,最低位表示右側(cè)探測器探測結(jié)果;1-有,0-無uchar detector = 4;/4-左側(cè)探測器,2-中間探測器,1-右側(cè)探測器uchar detector_i nv = 0 xFB;/4-左側(cè)探測器,2-中間探測器,1-右側(cè)探測

44、器uchar Obstacle_detectio n=1; 檢測障礙物標志位,為1 時,允許檢測障礙uchar Obstacle_delay=0;/計時器 3 蔽障過程前進時間記錄uchar Obstacle_control=0;/計時器 3 蔽障控制計時開始,結(jié)束uchar allow_follow=1;為 1 時,允許計時追光uchar followstep=15; / 為 20 時追光uchar follow=1;/為 1 時,允許小車追光uchar time_0_count=1; /為 0 時為超聲波 1ms 計時,為 1 時為超聲波 50ms 定時檢測計時void delay1us(

45、 uint t) while(t-);void delay1ms( uint z) uchary;while(z-)for(y=0;y120;y+);uchar data_f,i,data_f1,i1,k;*延時子函 1us*延時子函 1ms*/*uchar AD0832_1(頭AD讀*)/車頭感光模塊華僑大學21I*讀取車頭第一個AD *ID1=1;cs1=1;cs2=1;cs3=1;cs4=1;_nop_();_nop_();_nop_();cs1=0;D1=1;clk=1;_nop_();_nop_();_nop_();clk=0;_nop_();_nop_();_nop_();clk=

46、1;D1=1;_nop_();_nop_();_nop_();clk=0;_nop_();_nop_();_nop_();clk=1;D1=1;_nop_();_nop_();_nop_();clk=0;芯片使能之前的初始化。第一個下降沿/確定通道模式、第2 個下降沿/設(shè)定通道初始化II設(shè)定通道初始化第 3 個下降沿for(i=0;i8;i+)IIAD 轉(zhuǎn)化的初始化完成。得到一個正常排序的 8 位數(shù)據(jù)clk=1;_n op_();_n op_();clk=0;_n op_();_n op_();data_f=1;data_f|=D0;華僑大學22華僑大學23cs1=1;a 仁 data_f;

47、/將第一個 AD 值存儲在 al 中讀取車頭第 _二個AD */D1=1; cs1=1;cs2=1;cs3=1;cs4=1;_nop_();_nop_();_nop_();cs2=0;D1=1;/芯片使能之前的初始化。第一個下降沿clk=1;_nop_();_nop_();_nop_();clk=O; /確定通道模式、第 2 個下降沿_nop_();_nop_();_nop_();clk=1;D1=1;/設(shè)定通道初始化_nop_();_nop_();_nop_();clk=0;_nop_();_nop_();_nop_();clk=1;D1=1;/設(shè)定通道初始化第 3 個下降沿_nop_();

48、_nop_();_nop_();clk=0; /AD 轉(zhuǎn)化的初始化完成。for(i 仁 0;i18;i1+)得到一個正常排序的8 位數(shù)據(jù)clk=1; _n op_(); _n op_();/*華僑大學24clk=O;_n op_();_n op_();data_f1=1;data_f1|=D0;cs2=1;a2=data_f1; /將第二個 AD 值存儲在 a2 中 k=abs(a1-a2);return k;/*太陽能充電板 AD 讀數(shù)*uchar AD0832_2(void )/太陽能充電板感光模塊uchar data_f,i,data_f1,i1,k1;D1=1;cs1=1;cs2=1;

49、cs3=1;cs4=1;_n op_();_n op_();_n op_();cs3=0;D1=1;/芯片使能之前的初始化。第一個下降沿clk=1;_n op_();_n op_();_n op_();clk=0; /確定通道模式、第 2 個下降沿_n op_();_n op_();_n op_();clk=1;D1=1;/設(shè)定通道初始化_n op_();_n op_();_n op_();clk=0;_n op_();_n op_();_n op_();clk=1;*讀取太陽能電池板第一個AD 值*/華僑大學25D1=1;/設(shè)定通道初始化第 3 個下降沿_n op_();_n op_();_

50、n op_();clk=O; /AD 轉(zhuǎn)化的初始化完成。for(i=0;i8;i+)得到一個正常排序的8 位數(shù)據(jù)clk=1;_nop_();_nop_();clk=0;_nop_(); data_f=1; data_f|=DO;cs3=1;a3=data_f; 將第一個 AD 值存儲在 a1 中D1=1; cs1=1;cs2=1;cs3=1;cs4=1;_n op_();_n op_();_n op_();cs4=0;D1=1;/芯片使能之前的初始化。第一個下降沿clk=1;_n op_();_n op_();_n op_();clk=0; /確定通道模式、第2 個下降沿_n op_();_n

51、 op_();_n op_();clk=1;D1=1;設(shè)定通道初始化_n op_();_n op_();_n op_();clk=0;_n op_();_n op_();*讀取太陽能電池板第二個AD 值*/華僑大學26_n op_();clk=1;D 仁 1;設(shè)定通道初始化第 3 個下降沿_n op_();_n op_();_n op_();clk=0; /AD 轉(zhuǎn)化的初始化完成。for(i 仁 0;i18;i1+)/得到一個正常排序的8 位數(shù)據(jù)clk=1;_nop_();_nop_();clk=0;_nop_();_nop_();data_f1=1;data_f1|=D0;cs4=1;a4=

52、data_f1;/將第二個 AD 值存儲在 a2 中k 仁 abs(a4-a3);return k1;/* 從左向右檢測,檢測 10cm 之內(nèi)的障礙物*/ voidbarrier_detect ion( void)uchar i;barrier_flag=0;detector=4;time_0_count=O;定時器 0 工作在 15cm 障礙物檢測while(detector)EX0 = 0;關(guān)外部中斷IE0 = 0;清除外部中斷 0 標志位TR0 = 0;關(guān)閉定時器 0TH0=0 xfc;TL0=0 x18;leftTX=1;MiddleTX=1;rightTX=1;switch(dete

53、ctor)華僑大學27case 4: leftCo ntrol=1;MiddleCo ntrol=0;rightCo ntrol=0;華僑大學28for(i=0;i16;i+) leftTX=!leftTX;break;左側(cè)超聲波發(fā)波case 2: leftControl=0;MiddleControl=1;rightControl=0;for(i=0;i16;i+)MiddleTX=!MiddleTX;break;中間超聲波發(fā)波case 1: leftC on trol=0;MiddleCo ntrol=0;rightCo ntrol=1;for(i=0;i=1;delay1ms(10);E

54、X0 = 0;/關(guān)閉外部中斷TR0 = 0;/關(guān)閉定時器 1TH0=0 x3c;TL0=0 xb0;time_0_count=1;/定時器 0 工作在定時 50ms 障礙物檢測TR0 = 1;/打開計數(shù)器 1,65MS 檢測障礙leftCo ntrol=0;MiddleCo ntrol=0;rightC on trol=0;*太陽能面板步進電機左轉(zhuǎn)n 度*/華僑大學29void Ieft2(uchar Step3)uchar i;whiIe(Step3) for(i=0;i4;i+)P0=taiya nnen gzhe ngi;delay1us(400);Step3-;/*太陽能面板步進電機右

55、轉(zhuǎn)void right2(uchar Step4)uchar i ;while(Step4) for(i=0;i190)&(a2190) left_g(); delay1ms(400); else while(k2)if(a1a2) right_g(); delaylms(IO); go();if (a12)if(k120) right2(8);else right2(2); if(a320) left2(8);elseleft2 (2);/* if(a3210&a4210) if(step=511)right2(8);if(step2)if(a3a4) if(step502)right2(8

56、);華僑大學31 if(k120) right2(8); elseright2(2); if(a320)left2(8);elseleft2 (2); */M、車避障程序*華僑大學32/標志值障礙物避障方案/barrier_flag=:0 x00無無/barrier_flag=:0 x04左側(cè)barrier_left()/barrier_flag=:0 x06偏左barrier_left_ce ntre()/barrier_flag=:0 x07正中barrier_centre_slope()/barrier_flag=:0 x02正中barrier_ce ntre()/barrier_fla

57、g=:0 x03偏右barrier_right_ce ntre()/barrier_flag=:0 x01右側(cè)barrier_right()/這里實現(xiàn)相應(yīng)的 6 個轉(zhuǎn)彎子函數(shù)void barrier_left()right_g();II轉(zhuǎn) 60 度 Obstacle,on trol=1;while(Obstacle_delay8);Obstacle_c on trol=0;Obstacle_delay=0;stop(); barrier_detect ion();if(barrier_flag=0) go();/ 前進 20cmObstacle_c on trol=1;while(Obstac

58、le_delay6);Obstacle_c on trol=0;Obstacle_delay=0; stop();barrier_detect ion();if(barrier_flag=0) left_g();/轉(zhuǎn) 60 度Obstacle_c on trol=1;while(Obstacle_delay12);Obstacle_c on trol=0;Obstacle_delay=0;stop();void barrier_right()/定時器 2 開始 600ms 延時計時/定時器 2 結(jié)束 600ms 延時計時/定時器 2 禁止延時計時置 0 供下次計時使用/檢測障礙物情況函數(shù)/定時

59、器 2 開始 300ms 延時計時/定時器 2 結(jié)束 300ms 延時計時/定時器 2 禁止延時計時/置 0 供下次計時使用/檢測障礙物情況函數(shù)/定時器 2 開始 950ms 延時計時/定時器 2 結(jié)束 950ms 延時計時/定時器 2 禁止延時計時/置 0 供下次計時使用華僑大學33華僑大學34left_g();/ 轉(zhuǎn) 60 度/定時器 2 開始 700ms 延時計時 /定時器 2 結(jié)束 700ms 延時計時 定時器 2禁止延時計時置 0 供下次計時使用stop();barrier_detect ion();if(barrier_flag=0)go();/檢測障礙物情況函數(shù)/前進 20cmO

60、bstacle_c on trol=1;while(Obstacle_delay6);Obstacle_c on trol=0;Obstacle_delay=0;stop();/定時器 2 開始 300ms 延時計時/定時器 2 結(jié)束 300ms 延時計時/定時器 2 禁止延時計時/置 0 供下次計時使用barrier_detectio n( );/檢測障礙物情況函數(shù)if(barrier_flag=0)right g();/ 轉(zhuǎn) 60 度Obstacle_c on trol=1;while(Obstacle_delay8);Obstacle_c on trol=0;Obstacle_delay

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論