版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 2013年 7 月12日一、緒論.4 1.1智能小車的作用和意義.4二、方案設計與論證 . 4 2.1 總體方案設計 .42.2主控系統(tǒng) .52.3傳感器選擇方案 .62.4電機驅(qū)動芯片選擇方案.62.5電機方案選擇.62.6電源方案選擇.7三、主要器件介紹 .73.1 STC89C52的介紹 .73.2 L298N的介紹 .83.2.1 L298N的引腳功能 . 93.2.2 L298N的運行參數(shù) .103.2.3 L298N的邏輯控制 . 103.3 TCRT5000的介紹 . 113.4LM339的介紹 .123.5 L7805CV和L7806CV的介紹.12四、硬件設計
2、 . 14 4.1 主控芯片STC89C52單片機最小系統(tǒng)板電路 . 14 4.2 電機驅(qū)動模塊電路.154.3紅外對黑線檢測模塊電路.16 4.4穩(wěn)壓電源電路.18五、程序設計 . 19 5.1主程序 .19六、調(diào)試. 28 6.1硬件調(diào)試 .286.1.1元件的固定 . 286.1.2TCRT5000探頭 . 296.1.3 L298N馬達驅(qū)動模塊 . 296.2軟件調(diào)試 . 296.2.1調(diào)試平臺介紹 . 296.2.2程序調(diào)試.296.3 測試結(jié)果與分析 . 30七、心得體會. 30附件 元件清單 參考文獻一、緒論1.1智能小車的作用和意義 自第一臺工業(yè)機器人誕生以來,機器人的發(fā)展已經(jīng)
3、遍與機械、電子、冶金、交通、宇航、國防等領域。近年來機器人的智能水平不斷提高,并且迅速地改變著人們的生活方式。人們在不斷探討、改造、認識自然的過程中,制造能替代人勞動的機器一直是人類的夢想。隨著科學技術的發(fā)展,機器人的感系統(tǒng),對于視覺的各種技術而言圖像處理技術已相當發(fā)達,而基于圖像的理解技術還很落后,機器視覺需要通過大量的運算也只能識別一些結(jié)構化環(huán)境簡單的目標。視覺傳感器的核心器件是攝像管或CCD,目前的CCD已能做到自動聚焦。但CCD傳感器的價格、體積和使用方式上并不占優(yōu)勢,因此在不要求清晰圖像只需要粗略感覺的系統(tǒng)中考慮使用接近覺傳感器是覺傳感器種類越來越多,其中視覺傳感器成為自動行走和駕駛
4、的重要部件。視覺的典型應用領域為自主式智能導航一種實用有效的方法。 機器人要實現(xiàn)自動導引功能和避障功能就必須要感知導引線和障礙物,感知導引線相當給機器人一個視覺功能。避障控制系統(tǒng)是基于自動導引小車(AVGauto-guide vehicle)系統(tǒng),基于它的智能小車實現(xiàn)自動識別路線,判斷并自動避開障礙,選擇正確的行進路線。使用傳感器感知路線和障礙并作出判斷和相應的執(zhí)行動作。 該智能小車可以作為機器人的典型代表。它可以分為三大組成部分:傳感器檢測部分、CPU、執(zhí)行部分。機器人要實現(xiàn)自動避障功能,還可以擴展循跡等功能,感知導引線和障礙物??梢詫崿F(xiàn)小車自動識別路線,選擇正確的行進路線,并檢測到障礙物自
5、動躲避?;谏鲜鲆?,傳感檢測部分考慮到小車一般不需要感知清晰的圖像,只要求粗略感知即可。智能小車的執(zhí)行部分,是由直流電機來充當?shù)?,主要控制小車的行進方向和速度。 二、方案設計與論證2.1 總體方案設計 本系統(tǒng)基于AT89C52單片機的小車尋跡系統(tǒng),該系統(tǒng)采用兩組高靈敏度的紅外反射式光電傳感器,對路面的黑色軌跡進行檢測,將檢測的數(shù)據(jù)送入單片機進行處理,并利用單片機產(chǎn)生PWM波,并以最短時間完成尋跡。同時采用紅外傳感器對障礙物進行躲避功能,遇到對于交通燈的檢測采用固定頻率的紅外線信號表示不同的交通指示燈,使控制系統(tǒng)更加智能。在軟件程序上采用一定的控制算法,使得小車在通道上第一次遇到十字黑線時候減
6、速行駛,在第二次遇到十字黑線可以實現(xiàn)減速轉(zhuǎn)彎,因此,本系統(tǒng)由紅外光電傳感器,單片機和驅(qū)動單元共同作用,保證小車能在預先設定的軌跡上行駛。 本設計的主要特色本設計的主要特色本設計的主要特色本設計的主要特色: 1.自制的四個輪結(jié)構小車,采用PWM調(diào)速。2.采用6V電池供電,直流穩(wěn)壓電路工作穩(wěn)定。 3.采用紅外發(fā)射傳感器接收對黑線標志進行識別,具有高精度和高靈敏度。 2.2主控系統(tǒng) 根據(jù)設計要求,我認為此設計屬于多輸入量的復雜程序控制問題。據(jù)此,擬定了以下兩種方案并進行了綜合的比較論證,具體如下: 方案一: 選用一片CPLD(如EPM7128LC84-15)作為系統(tǒng)的核心部件,實現(xiàn)控制與處理的功能。
7、CPLD具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點,可利用VHDL語言進行編寫開發(fā)。但CPLD在控制上較單片機有較大的劣勢。同時,CPLD的處理速度非??欤≤嚨男羞M速度不可能太高,那么對系統(tǒng)處理信息的要求也就不會太高,在這一點上,MCU就已經(jīng)可以勝任了。若采用該方案,必將在控制上遇到許許多多不必要增加的難題。為此,我們不采用該種方案,進而提出了第二種設想。 方案二: 采用單片機作為整個系統(tǒng)的核心,用其控制行進中的小車,以實現(xiàn)其既定的性能指標。充分分析我們的系統(tǒng),其關鍵在于實現(xiàn)小車的自動控制,而在這一點上,單片機就顯現(xiàn)出來它的優(yōu)勢控制簡單、方便、快捷。這樣一來,單片機就可以充分發(fā)揮其資
8、源豐富、有較為強大的控制功能與可位尋址操作功能、價格低廉等優(yōu)點。因此,這種方案是一種較為理想的方案。 針對本設計特點多開關量輸入的復雜程序控制系統(tǒng),需要擅長處理多開關量的標準單片機,而不能用精簡I/O口和程序存儲器的小體積單片機,D/A、A/D功能也不必選用。根據(jù)這些分析,我選定了STC89C52RA單片機作為本設計的主控裝置,52單片機具有功能強大的位操作指令,I/O口均可按位尋址,程序空間多達8K,對于本設計也綽綽有余,更可貴的是52單片機價格非常低廉。 在綜合考慮了傳感器、兩部電機的驅(qū)動等諸多因素后,我們決定采用一片單片機,充分利用STC89C52單片機的資源。2.3傳感器選擇方案方案一
9、:采用發(fā)光二極管發(fā)光,用光敏二極管接收; 發(fā)光二極管發(fā)出的可見光照射到黑帶時,光線被黑帶吸收,光敏二極管為檢測到信號。呈高阻抗,使輸出端為低電平。當發(fā)光二極管發(fā)出的可見光照射到地面時,它發(fā)出的可見光反射回來被光敏二極管檢測到,其阻抗迅速降低,此時輸出端為高電平。但是由于光敏二極管受環(huán)境中可見光影響較大,電路的穩(wěn)定性很差,但可以通過運放對檢測信號進行處理。方案二: 采用反射式紅外光電傳感器。 用TCRT5000型反射式紅外對管組成的路徑識別傳感器模塊,檢測距離和靈敏度均能達到系統(tǒng)要求,該器件具有如下特點:當發(fā)光二極管發(fā)出的光反射回來時,三極管導通輸出低電平,該光電對管調(diào)理電路簡單,工作性能穩(wěn)定。
10、 綜上所述,本設計采用發(fā)光二極管進行檢測,原因是性價比較合理。2.4電機驅(qū)動芯片選擇方案方案一:采用分立元件的H橋驅(qū)動電路。 方案二:采用集成的H橋驅(qū)動電路芯片。 由于集成的H橋驅(qū)動電路芯片體積小,穩(wěn)定性高,因此選用集成的驅(qū)動電路芯片作為電機的驅(qū)動芯片,型號為L298N。2.5電機方案選擇 方案一: 采用步進電機,步進電機的一個顯著特點就是具有快速啟停能力可實現(xiàn)電機正反轉(zhuǎn)與調(diào)速,啟動性能好,啟動轉(zhuǎn)矩大。工作電壓可達到36V,4A。可同時驅(qū)動兩臺直流電機。適合應用于機器人設計與智能小車的設計中,如果符合不超過步進電機所能提供的動態(tài)轉(zhuǎn)矩值,就能夠立即使步進電機的啟功或者反轉(zhuǎn)。調(diào)速方式:直流電動機采
11、用PWM信號平滑調(diào)速。方案二: 采用普通直流減速電機,直流電動機具有優(yōu)良的調(diào)速特性,調(diào)速平滑,方便,調(diào)整圍廣,過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)頻繁的無極快速啟動,制動,和反轉(zhuǎn),能滿足各種不同的特殊運行要求。 綜上所訴,我們選擇直流減速電機。2.6電源方案選擇方案一: 直接使用AA干電池進行供電它的結(jié)構十分簡單,但是供電能力差,不易長時間供電。 方案二: 使用3500mA干電池配合直流穩(wěn)壓整流電路輸入端口接9mA的干電池,經(jīng)電容濾波和L7805和L7806穩(wěn)壓后輸出約5V,6V電壓??杀WC長時間穩(wěn)定的輸出電壓。這樣可以提供持久穩(wěn)定的電流,穩(wěn)壓后給單片機系統(tǒng)和其他芯片供電。考慮到系統(tǒng)穩(wěn)定工
12、作的要求,所以選擇方案一。三 主要器件介紹3.1 STC89C52的介紹 STC89C52引腳功能說明VCC(40引腳):電源電壓 VSS(20引腳):接地P0端口(P0.0P0.7,3932引腳):P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅(qū)動8個TTL負載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0口也可以提供低8位地址和8位數(shù)據(jù)的復用總線。此時,P0口部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。P1端口(P1.0P1.7,18引腳):P1口是一個帶部上
13、拉電阻的8位雙向I/O口。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入1時,通過部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有部上拉電阻,那些被外部拉低的引腳會輸出一個電流。此外,P1.0和P1.1還可以作為定時器/計數(shù)器2的外部技術輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體參見下表:在對Flash ROM編程和程序校驗時,P1接收低8位地址。表XX P1.0和P1.1引腳復用功能在對Flash ROM編程或程序校驗時,P3還接收一些控制信號。 P3口除作為一般I/O口外,還有其他一些復用功能,如下表
14、所示: 表XX P3口引腳復用功能來完成單片機單片機的復位初始化操作??撮T狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。XTAL1(19引腳):振蕩器反相放大器和部時鐘發(fā)生電路的輸入端。XTAL2(18引腳):振蕩器反相放大器的輸入端。 特殊功能寄存器3.2 L298N的介紹L298N是一種高電壓、大電流電機驅(qū)動芯片。該芯片的主要特點是:工作電壓高,最高工作電壓可達46V;輸出電流大,瞬間峰值電流可達3A,持續(xù)工作電流為2A;含兩個H橋的高電壓大電流全橋式驅(qū)動器,可以用來驅(qū)動直流電
15、動機和步進電動機、繼電器、線圈等感性負載;采用標準TTL邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作;有一個邏輯電源輸入端,使部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。3.2.1 L298N的引腳功能3.2.2 L298N的運行參數(shù)3.2.3 L298N的邏輯控制主要采用L298N,通過單片機的I/O輸入改變芯片控制端的電平,即可以對電機進行正反轉(zhuǎn),停止的操作,輸入引腳與輸出引腳的邏輯關系圖為表3.3 L298N對直流電機控制的邏輯真值表3.3 TCRT5000的介紹TCRT5000光電傳感器模塊是基于TCRT5000紅外光電
16、傳感器設計的一款紅外反射式光電開關。傳感器采用高發(fā)射功率紅外光電二極管和高靈敏度光電晶體管組成,輸出信號經(jīng)施密特電路整形,穩(wěn)定可靠。+:接直流DC5V正極 -:接直流DC5V負極 S:信號輸出端,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。應用場合: 電度表脈沖數(shù)據(jù)采樣、 機碎紙機紙檢測、 障礙檢測 黑白線檢測 基本參數(shù): 外形尺寸: 長 32mm37 mm;寬 7.5mm;厚 5mm 工作電壓: DC 3
17、V5.5V,推薦工作電壓為5V 檢測距離: 1mm8mm適用,焦點距離為2.5mm 傳感器的紅外發(fā)射二極管不斷發(fā)射紅外線,當發(fā)射出的紅外線沒有被反射回來或被反射回來但強度不夠大時,光敏三極管一直處于關斷狀態(tài),此時模塊的輸出端為低電平,指示二極管一直處于熄滅狀態(tài);被檢測物體出現(xiàn)在檢測圍時,紅外線被反射回來且強度足夠大,光敏三極管飽和,此時模塊的輸出端為高電平,指示二極管被點亮。 靈敏度可調(diào)的循跡電路。當比較器的正向輸入端電壓低于反向輸入端的電壓時輸出低電平,LED 亮,表示接收到反射光。3.4 LM339的介紹智能小車中運用于電路分析
18、模塊LM339引腳圖與功能簡介LM339集成塊部裝有四個獨立的電壓比較器。LM339類似于增益不可調(diào)的運算放大器。每個比較器有兩個輸入端和一個輸出端。兩個輸入端一個稱為同相輸入端,用“+”表示,另一個稱為反相輸入端,用“-”表示。用作比較兩個電壓時,任意一個輸入端加一個固定電壓做參考電壓(也稱為門限電平,它可選擇LM339輸入共模圍的任何一點),另一端加一個待比較的信號電壓。當“+”端電壓高于“-”端時,輸出管截止,相當于輸出端開路。當“-”端電壓高于“+”端時,輸出管飽和,相當于輸出端接低電位。兩個輸入端電壓差別大于10mV就能確保輸出能從一種狀態(tài)可靠地轉(zhuǎn)換到另一種狀態(tài),因此,把LM339用
19、在弱信號檢測等場合是比較理想的。LM339的輸出端相當于一只不接集電極電阻的晶體三極管,在使用時輸出端到正電源一般須接一只電阻(稱為上拉電阻,選3-15K)。選不同阻值的上拉電阻會影響輸出端高電位的值。因為當輸出晶體三極管截止時,它的集電極電壓基本上取決于上拉電阻與負載的值。另外,各比較器的輸出端允許連接在一起使用。3.5 L7805CV和L7806CV的介紹L7805L7805是我們最常用到的穩(wěn)壓芯片了,他的使用方便,用很簡單的電路即可以輸入一個直流穩(wěn)壓電源他的輸出電壓恰好為5v,剛好是51系列單片機運行所需的電壓,他有很多的系列如ka7805,ads7805,cw7805等,性能有微小的差
20、別,用的最多的還是LM7805,下面我簡單的介紹一下他的3個引腳以與用它來構成的穩(wěn)壓電路的資料。 <L7805引腳圖> 其中1接整流器輸出的+電壓,2為公共地(也就是負極),3就是我們需要的正5V輸出電壓了.L7806L7806為固定正電壓穩(wěn)壓電路,屬三端正電源穩(wěn)壓電路系列(3Terminals positive Voltage Regulator Series)。產(chǎn)品應用非常廣泛,涉與到各種穩(wěn)壓電源、充電器、數(shù)碼產(chǎn)品以與家電領域等。L7806芯片參數(shù):封裝四、硬件設計.4.1 主控芯片AT89C52單片機最小系統(tǒng)板電路本智能小車采用的單片機最小系統(tǒng)板是自己
21、制做的AT89C52單片機最小系統(tǒng)板,它具有體積小,質(zhì)量輕,使用方便等優(yōu)點,能夠很好的放置在智能小車中。原理圖如下。 小系統(tǒng)PCB板4.2 電機驅(qū)動模塊電路電機驅(qū)動模塊采用專用驅(qū)動芯片L298N作為電機的驅(qū)動芯片。L298N是一種具有高電壓大電流的全橋驅(qū)動芯片,它的響應頻率高,一片L298N可以分別控制兩個直流減速電機,而且還帶有控制使能端,用它作為驅(qū)動芯片,操作方便,穩(wěn)定,性能優(yōu)良。L298N的5、7引腳為一個電機的控制信號輸入端,10、12引腳為另一個電機的控制信號輸入端,2、3引腳為一個電機的控制信號輸出端,13、14引腳為另一個電機的控制信號輸出端,通過單片機對L298N的輸入端進行指
22、令控制,就能實現(xiàn)直流減速電機的正轉(zhuǎn)和反轉(zhuǎn),從而控制小車前進和后退。電機驅(qū)動電路原理圖如下。驅(qū)動模塊PCB板4.3紅外對黑線檢測模塊電路由于有6個紅外傳感器排成一排均勻的安裝在小車底部,當光線照射到路面并反射,由于黑線和白紙的反射系數(shù)不同,根據(jù)接收到的反射光強度判斷是否眼黑線前進。在一般情況下,當黑線位于中間的兩個紅外傳感器之間,不管小車偏向哪一邊,都能檢測出小車的偏移方向?;蛘弋斝≤嚻蜃筮厱r,右邊的傳感器檢測到黑線,輸出低電平給電機,否則,輸出高電平。紅外作循跡電路原理圖紅外作循跡PCB板采用紅外對管制作循跡電路,當檢測到黑線時,紅外接受管導通,否則紅外對管截止,通過比較器LM339電壓比較
23、,把電平狀態(tài)送給單片機進而單片機處理。原理圖如下。 電路分析原理圖紅外電路分析PCB板4.4穩(wěn)壓電源電路電機驅(qū)動電路模塊:本題目要求小車的機械系統(tǒng)穩(wěn)定、靈活、簡單,可選用兩輪式,考慮到現(xiàn)在的汽車多采用兩輪式我選用兩輪式的設計,使設計更貼近生活需求。驅(qū)動部分:直流驅(qū)動電機,由L298N雙通道馬達驅(qū)動模塊驅(qū)動前后兩個馬達,其力矩完全可以達到模擬效果。 電池的安裝:將電池放置在車體的下面,降低車體重心,提高穩(wěn)定性,同時可增加驅(qū)動輪的抓地力,減小輪子空轉(zhuǎn)所引起的誤差。 電源模塊:采用2支3500mA電池給電機供電,再用穩(wěn)壓芯片對電池電壓進行降壓給單片機。采用一套電源可減少小車的負重。電機動力電路應用說
24、明:基本思路為使能端輸入使能信號,即接高電平,控制輸入端A端輸入PWM 信號,控制輸出端B輸入方向信號,在一個PWM周期,電動機只承受單極性的電壓,電機的選擇方向由控制信號決定,電機的速度由PWM決定,PWM占空比為0%-100%對應于電機轉(zhuǎn)速0-MAX。因此,當接收到由檢測模塊的信號時,單片機處理該信號,根據(jù)該信號產(chǎn)生對應的PWM 波,從而可以根據(jù)調(diào)節(jié)電機的轉(zhuǎn)速與方向。穩(wěn)壓電源電路圖穩(wěn)壓電源PCB板五、程序設計 5.1主程序 #include<reg52.h>#defineuchar unsigned char#defineuint unsigned intuchar pwm_l
25、eft =0;/變量定義,與速度比較的變量uchar push_left =0;/ 左電機占空比N/10 調(diào)速uchar pwm_right =0;/與速度比較的變量uchar push_right=0;/ 右電機占空比N/10 調(diào)速bit Right_moto_stop=1;bit Left_moto_stop =1;uint time=0;uint a=0,flag=0,flag1=0;sbit Left_1_led=P10; /四路尋跡模塊接口第一路sbit Left_2_led=P11; /四路尋跡模塊接口第二路sbit Right_1_led=P12; /四路尋跡模塊接口第二路sbi
26、t Right_2_led=P13; /四路尋跡模塊接口第三路uint a,d,y,z,q,w,c;sbit out1 = P20;sbit out2 = P21;sbit out3 = P22;sbit out4 = P23;sbit ena = P16;sbit enb = P17;sbit inright = P24;sbit inleft = P25;delay(uint a);intturnleft(uint z) ena=1; enb=1; out1=1; out2=0; out3=1; out4=0; delay(z); return 0;int turnright(uint y
27、) ena=1; enb=1; out1=0; out2=1; out3=0; out4=1; delay(y); return 0;int dengdai (uint d) ena=0; enb=0; out1=0; out2=0; out3=0; out4=0; delay(d); return 0;void go(uint q) ena=1; enb=1; out1=0; out2=1; out3=1; out4=0; delay(q);intback(uint w) ena=1; enb=1; out1=1; out2=0; out3=0; out4=1; delay(w); retu
28、rn 0;int backright(int c) ena=0; enb=1; out1=0; out2=0; out3=0; out4=1; delay(c); return 0; voidbizhang()if(inright=1&&inleft=1)go(50);if(inright=0)turnright(50);if(inleft=0)turnleft(50);if(inright=0&&inleft=0)backright(2000);void xunji() if(Left_1_led=0&&Left_2_led=0&&am
29、p;Right_1_led=0&&Right_2_led=0) /0 go(50); else if(Left_1_led=0&&Left_2_led=0&&Right_1_led=0&&Right_2_led=1)/0001 turnright(20);delay(5); else if(Left_1_led=0&&Left_2_led=0&&Right_1_led=1&&Right_2_led=0)/0010 turnright(20); /(9,6) delay(1); els
30、e if(Left_1_led=0&&Left_2_led=0&&Right_1_led=1&&Right_2_led=1) /0011 turnright(20); delay(3);else if(Left_1_led=0&&Left_2_led=1&&Right_1_led=0&&Right_2_led=0) /0100turnleft(30);delay(3);else if(Left_1_led=0&&Left_2_led=1&&Right_1_led=0&
31、amp;&Right_2_led=1) /0101turnright(30); delay(2);else if(Left_1_led=0&&Left_2_led=1&&Right_1_led=1&&Right_2_led=1) /0111turnleft(30);delay(1);else if(Left_1_led=1&&Left_2_led=0&&Right_1_led=0&&Right_2_led=0) /1000 turnleft(30); delay(3);else if(Lef
32、t_1_led=1&&Left_2_led=0&&Right_1_led=0&&Right_2_led=1) /1001go(30);delay(3); /本來延時6else if(Left_1_led=1&&Left_2_led=0&&Right_1_led=1&&Right_2_led=0) /1010turnleft(30);delay(3);else if(Left_1_led=1&&Left_2_led=0&&Right_1_led=1&&R
33、ight_2_led=1) /1011 turnright(20); delay(3); else if(Left_1_led=1&&Left_2_led=1&&Right_1_led=0&&Right_2_led=0) /1100turnleft(20);delay(5); else if(Left_1_led=0&&Left_2_led=0&&Right_1_led=0&&Right_2_led=1) / 1101turnleft(20); delay(5);else if(Left_1_led
34、=1&&Left_2_led=1&&Right_1_led=1&&Right_2_led=0) / 1110turnleft(20); delay(5); /else if(Left_1_led=1&&Left_2_led=1&&Right_1_led=1&&Right_2_led=1) / 1111/ /tiaosu();/ go(20);/ delay(5);/ int delay(uint a)uint x,y;for(x=a;x>0;x-)for(y=110;y>0;y-);re
35、turn 0;/*/* PWM調(diào)制電機轉(zhuǎn)速 */*/* 左電機調(diào)速 */*調(diào)節(jié)push_val_left的值改變電機轉(zhuǎn)速,占空比 */void pwm_out_left_moto(void) if(Left_moto_stop) if(pwm_left<=push_left) ena=1; else ena=0;if(pwm_left>=100)pwm_left=0; else ena=0;/*/* 右電機調(diào)速 */ void pwm_out_right_moto(void) if(Right_moto_stop) if(pwm_right<=push_right) enb=
36、1; else enb=0;if(pwm_right>=100)pwm_right=0; else enb=0;/*/* */* 定時器初值化 */*/void init0(void)TMOD=0X01;TH0= 0XF8; /1ms定時TH0= 0XF8; TL0= 0X30; TL0= 0X30;TR0= 1;ET0= 1;EA = 1;void init1(void)TMOD=0x10; /設置定時器0工作模式1TH1=(65536-50000)/256; /定時器裝初值TL1=(65536-50000)%256;IT0=1; IT1=1;EX0=1;/開外部中斷0EX1=1;/開
37、外部中斷1ET1=1;/開定時器0中斷TR1=1;/啟動定時器0EA=1;/開總中斷/*/*TIMER0中斷服務子函數(shù)產(chǎn)生PWM信號*/ void timer0()interrupt 1 using 2 TH0=0XF8; /1Ms定時 TL0=0X30; time+; pwm_left+; pwm_right+; pwm_out_left_moto(); pwm_out_right_moto(); void run(int m,int n) push_left =m; /PWM 調(diào)節(jié)參數(shù)1-10 1為最慢,10是最快 改這個值可以改變其速度 push_right =n; /PWM 調(diào)節(jié)參數(shù)1
38、-10 1為最慢,10是最快 改這個值可以改變其速度 out1=0; /左電機前進 out2=1; out3=1; out4=0; /右電機前進 void tiaosu() while(flag=1)run(30,30); delay(30); xunji(); if(Left_1_led=1&&Left_2_led=1&&Right_1_led=1&&Right_2_led=1) a=1;flag=0; while(a=1)run(99,99); delay(30); xunji(); if(Left_1_led=1&&Left
39、_2_led=1&&Right_1_led=1&&Right_2_led=1) a=2; void main() init0();init1();P1=0xff;P2=0xff;while(1) if(Left_1_led=1&&Left_2_led=1&&Right_1_led=1&&Right_2_led=1) flag=1; /1111 else flag=0; delay(3); if(flag=0) xunji(); else tiaosu();六、調(diào)試: 6.1硬件調(diào)試 6.1.1 元件的固定小車主要有
40、5大模塊的電路板組成的,板和板之間是靠導線連接。小車在循跡運動的時候時常顛簸,導致電路板移位致使電路板上面的元件受到干擾,使小車不穩(wěn)定運動,特別是L298N.所以我們除了在板上打孔鎖上螺絲,還在板和板之間用熱熔膠再固定,減少震動。6.1.2 TCRT5000探頭 由TCRT5000組成的軌跡識別電路是本次設計成敗的關鍵,在初次調(diào)試時小車的搖頭動作(即轉(zhuǎn)向)時常出現(xiàn)不靈的情況。后來用電壓表測量了電壓比較器量輸入端的電壓發(fā)現(xiàn)基準電壓到了3.5V,而紅外探頭在檢測到黑線時才3.6V。兩者電壓相差無幾,所以遇到黑線顏色較淺或反光的區(qū)域單片機會發(fā)生誤判的現(xiàn)象。于是我們測量了紅外探頭在黑白兩種極限情況下的
41、電壓輸出情況。在測量了紅外探頭在黑色和白色兩種極限情況下的電壓后,調(diào)節(jié)電阻我把基準電壓調(diào)到5V,這個電壓值距黑色或白況下輸出的電壓值都很大,單片機會減少誤判的現(xiàn)象。改良過后測試正常,小車能靈活的搖頭,更功能實現(xiàn)。6.1.3 L298N馬達驅(qū)動模塊 第一次給L298N馬達驅(qū)動模塊通電實現(xiàn)簡單的馬達單向驅(qū)動,發(fā)現(xiàn)馬達時跑時不跑。經(jīng)過檢測發(fā)現(xiàn)是一根信號線接觸不良,重新接好后運行正常。此模塊是用的市面上可以買到的模塊所以性能比較穩(wěn)定,調(diào)試很成功。6.2軟件調(diào)試6.2.1調(diào)試平臺介紹 此次編程采用了keil V4。KeilSoftware公司推出的uVision4是一款可用于多種8051MCU的集成開發(fā)
42、環(huán)境(IDE),該IDE同時也是PK51與其它開發(fā)套件的一個重要組件。除增加了源代碼、功能導航器、模板編輯以與改進的搜索功能外,uVision4還提供了一個配置向?qū)Чδ?,加速了啟動代碼和配置文件的生成。此外其置的仿真器可模擬目標MCU,包括指令集、片上外圍設備與外部信號等。uVision4提供邏輯分析器,可監(jiān)控基于MCUI/O引腳和外設狀態(tài)變化下的程序變量。uVision4提供對多種最新的8051類微處理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以與Infineon的XC866等。其界面如下圖 所示。6.2.2程序調(diào)試在調(diào)試好硬件之后我第一次把軟件下載到系統(tǒng)里面
43、進行實際測試,發(fā)現(xiàn)小車在彎道比較急的地方?jīng)]辦法繞過去,會發(fā)生脫軌現(xiàn)象。后來仔細分析了自己的算法,原本我是設定小車在遇到彎道后全力轉(zhuǎn)向繞過彎道,但是有些急得彎道小車無法繞過。此時我就想如何去解決在轉(zhuǎn)向角度有限的情況下解決轉(zhuǎn)急彎的問題。聯(lián)想到日常汽車在狹窄的小路上轉(zhuǎn)彎的情景我想到了倒退調(diào)整車體位置的方法。即在發(fā)現(xiàn)小車以現(xiàn)有的轉(zhuǎn)向角度無法完成轉(zhuǎn)彎時使小車反相倒退,這樣即可很很快的調(diào)整小車的位置。改進算法后我在進行了一次測試,這次小車成功的繞過了90度的彎道。根據(jù)測試結(jié)果,可以看出小車循跡避障功能基本實現(xiàn)。但是測試還是存在失敗的現(xiàn)象。分析其原因有兩點。一,小車熟讀過快在轉(zhuǎn)彎時未與時剎車。二,畫在紙上的
44、跑道會存在褶皺的地方,而這些地方容易產(chǎn)生誤判的現(xiàn)象。得知這些原因以后我降低現(xiàn)車速度,再次進行了測試。結(jié)果表明,小車能很好的完成循跡,即使循跡軌道發(fā)生改變也不影響。但是小車不能根據(jù)賽道的情況自主的改變速度。這也是本次設計的一個缺陷。在實際調(diào)試過程中小車發(fā)生過程序跑飛的情況,經(jīng)調(diào)整改進程序后,小車運行狀態(tài)穩(wěn)定。能很好的完成沿黑色軌道前進,改變軌道的形狀與轉(zhuǎn)彎角度,小車仍可完成循跡。七、心得體會在智能小車系統(tǒng)的設計、調(diào)試與論文的寫作過程中,感很多同學給予了無數(shù)的指導和大力的支持。在這個過程中我們不僅學會了知識,還學會了治學的態(tài)度,那就是嚴謹,把知識變?yōu)榧河?,棄其糟粕留其精華,用自己的方式去解決問題,而不是人云亦云。智能小車是傳感技術和自動化控制技術飛速發(fā)展的產(chǎn)物,使得機械和電子信息不再明顯分家,自動控制在工業(yè)領域中得地位越來越重要,智能這個詞是我們科技發(fā)展的重要產(chǎn)物。這次實踐中涉與的主要部分有傳感器檢測車部分、驅(qū)動部分、單片機為核心的控制芯片部分穩(wěn)壓與電路分析部分。各個部分的涉與,相互之間的連接協(xié)調(diào)等得成功,都是要建立在系統(tǒng)的閱讀大量資料,并且認真的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣東省建筑安全員-C證考試(專職安全員)題庫及答案
- 2025貴州省建筑安全員-C證考試(專職安全員)題庫附答案
- 2025山東省安全員知識題庫及答案
- 2025河南省安全員-C證(專職安全員)考試題庫
- 食品加工的原料和材料-課件
- 中醫(yī)內(nèi)科學-感冒
- 《教師節(jié)綜合實踐》課件
- 有機藥化實驗課件
- 《急腹癥寶力道》課件
- 《運籌學》整數(shù)規(guī)劃
- 2024年度國有企事業(yè)單位標準化房屋租賃服務合同范本3篇
- 《基因突變的機制》課件
- 三只松鼠深度分析報告
- 天安門地區(qū)地下空間開發(fā)利用策略-洞察分析
- 《基層管理者職業(yè)素養(yǎng)與行為規(guī)范》考核試題及答案
- 公共關系理論與實務教程 課件 項目九-公共關系危機管理
- 椎間孔鏡治療腰椎間盤突出
- 2024年融媒體中心事業(yè)單位考試招考142人500題大全加解析答案
- 2024-2025學年 語文二年級上冊統(tǒng)編版期末測試卷(含答案)
- 期末測試題二(含答案)2024-2025學年譯林版七年級英語上冊
- 大創(chuàng)賽項目書
評論
0/150
提交評論