自動識別路徑小車.doc_第1頁
自動識別路徑小車.doc_第2頁
自動識別路徑小車.doc_第3頁
自動識別路徑小車.doc_第4頁
自動識別路徑小車.doc_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

自動識別路徑的智能小車設(shè)計報告來源:kaoshi365 作者:kaoshi365 日期:2009年11月12日 訪問次數(shù): 625次 論文關(guān)鍵字:智能小車電機驅(qū)動L298自動循跡傳感器算法論文摘要:本系統(tǒng)采用存儲空間較大的AT89S52作為主控制芯片,電動車電機驅(qū)動采用L298N芯片,結(jié)合DS10C4光電開關(guān)控制電動小汽車的自動尋路,快慢速行駛和轉(zhuǎn)向,三者的結(jié)合使小車更加智能化,自動化。整個系統(tǒng)在設(shè)計中注意低功耗處理和力求高性價比等細節(jié),電路結(jié)構(gòu)簡單,可靠性能高,無論在結(jié)構(gòu)和技術(shù)上都具有較好的科學(xué)性。本設(shè)計主要特點:1. 高效的L298電機驅(qū)動電路,提高電源利用率。2利用軟件實現(xiàn)PWM調(diào)速的方法。代替了專用集成芯片電路、通用數(shù)字組合電路、分立元器件組成電路、單片機系統(tǒng)控制電路、CPLD系統(tǒng)等。一、模塊方案比較與論證:1. 車體設(shè)計 方案一:購買玩具電動車。購買的玩具電動車具有組裝完整的車架車輪。由于裝配緊湊,使得各種所需電路的安裝十分方便,看起來也比較美觀。但玩具電動車一般都價格昂貴。方案二:自己制作電動車。一般的說來,自己制作的車體比較粗糙,對于白色基板上的道路面行駛,車身重量以及平衡都要有精確的測量,而且也要控制好小車行駛的路線和轉(zhuǎn)彎的力矩及角度,這些都比較難良好地實現(xiàn)。依靠電機與相關(guān)齒輪一起驅(qū)動,能適應(yīng)題目中小車準(zhǔn)確前進、后退、轉(zhuǎn)彎的要求,基于以上分析,我們選擇了方案二2電機模塊方案1:采用步進電機作為該系統(tǒng)的驅(qū)動電機。由于其轉(zhuǎn)過的角度可以精確的定位,可以實現(xiàn)小車前進路程和位置的精確定位。雖然采用步進電機有諸多優(yōu)點,步進電機的輸出力矩較低,隨轉(zhuǎn)速的升高而下降,且在較高轉(zhuǎn)速時會急劇下降,其轉(zhuǎn)速較低,不適用于小車等有一定速度要求的系統(tǒng)。經(jīng)綜合比較考慮,我們放棄了此方案。方案 2:直流電機:直流電機的控制方法比較簡單,只需給電機的兩根控制線加上適當(dāng)?shù)碾妷杭纯墒闺姍C轉(zhuǎn)動起來,電壓越高則電機轉(zhuǎn)速越高。對于直流電機的速度調(diào)節(jié),可以采用改變電壓的方法,也可采用PWM調(diào)速方法。PWM調(diào)速就是使加在直流電機兩端的電壓為方波形式,通過改變方波的占空比實現(xiàn)對電機轉(zhuǎn)速的調(diào)節(jié)?;谝陨戏治觯覀冞x擇了方案二,使用直流電機作為電動車的驅(qū)動電機。3電機驅(qū)動模塊方案 1:采用SM6135W電機遙控驅(qū)動模塊。SM6135W是專為遙控車設(shè)計的大規(guī)模集成電路。能實現(xiàn)前進、后退、向右、向左、加速五個功能,但是其采用的是編碼輸入控制,而不是電平控制,這樣在程序中實現(xiàn)比較麻煩,而且該電機模塊價格比較高。方案 2:采用電機驅(qū)動芯片L298N。L298N為單塊集成電路,高電壓,高電流,四通道驅(qū)動,可直接的對電機進行控制,無須隔離電路。通過單片機的I/O輸入改變芯片控制端的電平,即可以對電機進行正反轉(zhuǎn),停止的操作,非常方便,亦能滿足直流減速電機的大電流要求。調(diào)試時在依照上表,用程序輸入對應(yīng)的碼值,能夠?qū)崿F(xiàn)對應(yīng)的動作。表1是其使能、輸入引腳和輸出引腳的邏輯關(guān)系。 表1 L298N的引腳和輸出引腳的邏輯關(guān)系EN A(B)IN1(IN3)IN2(IN4)電機運行情況HHL正轉(zhuǎn)HLH反轉(zhuǎn)H同IN2(IN4)同IN2(IN4)快速停止LXX停止基于以上分析,我們選擇了方案二,用L298N來做為電機的驅(qū)動芯片。4尋跡傳感器模塊方案1:采用發(fā)光二極管+光敏電阻,該方案缺點:易受到外界光源的干擾,有時甚至檢測不到黑線,主要是因為可見光的反射效果跟地表的平坦程度、地表材料的反射情況均對檢測效果產(chǎn)生直接影響??朔巳秉c的方法:采用超高亮度的發(fā)光二極管能降低一定的干擾,但這又會增加檢測系統(tǒng)的功耗。方案2:脈沖調(diào)制的反射式紅外發(fā)射接收器。由于采用帶有交流分量的調(diào)制信號,則可大幅度減少外界的干擾;此外紅外發(fā)射接收管的工作電流取決于平均電流,如果采用占空比小的調(diào)制信號,在平均電流不變的情況下,瞬時電流很大(50100mA)(ST-188允許的最大輸入電流為50mA),則大大提高了信噪比。此種測試方案反應(yīng)速度大約在5us。方案3:采用CCD傳感器,此種方法雖然能對路面信息進行準(zhǔn)確完備的反應(yīng),但它存在信息處理滿,實時性差等缺點,因此若采用CCD傳感器,無疑會加重單片機的處理負(fù)擔(dān),不利于實現(xiàn)更好的控制策略。根據(jù)以上分析我們采用方案25控制器模塊方案1:采用凌陽的SPCE061A小板作為主控制芯片,而且可以采用凌陽的小車模組,可以很快的完成其基本功能,當(dāng)是用該小板存在在一定的局限性,較難擴張功能,而且各個模塊的拼湊,沒有比集成在一塊板的穩(wěn)定性高。方案2:采用AT89S52作為主控制芯片,該芯片有足夠的存儲空間,可以方便的在線ISP下載程序,能夠滿足該系統(tǒng)軟件的需要,該芯片提供了兩個計數(shù)器中斷,對于本作品系統(tǒng)已經(jīng)足夠,采用該芯片可以比較靈活的選擇各個模塊控制芯片,能夠準(zhǔn)確的計算出時間,有很好的實時性。基于以上分析,我們選擇了方案2二,采用AT89S52作為電動車的主控制芯片。 6電源模塊在本系統(tǒng)中,需要用到的電源有單片機的5V,L298N芯片的電源5V和電機的電源715V。所以需要對電源的提供必須正確和穩(wěn)定可靠。方案1:用9V的鋅電源給前、后輪電機供電,然后使用7805穩(wěn)壓管來把高電壓穩(wěn)成5V分別給單片機和電機驅(qū)動芯片供電。這種接法比較簡單,但小車的電路功耗過大會導(dǎo)致后輪電機動力不足。方案2:采用雙電源。為了確保單片機控制部分和后輪電機驅(qū)動的部分的電壓不會互相影響,要把單片機的供電和驅(qū)動電路分開來,即:用6節(jié)干電池7.2V來驅(qū)動電機芯片,然后用7805穩(wěn)壓管來穩(wěn)成5V供給單片機,后輪電機的電源用3V供電,這樣有助于消除電機干擾,提高系統(tǒng)的穩(wěn)定性。基于以上分析,我們選擇了方案二。7最終方案二、系統(tǒng)總體設(shè)計:1.系統(tǒng)工作原理及功能簡介:本系統(tǒng)利用單片機AT89S52單片機作為本系統(tǒng)的主控模塊,該單片機可以將從傳感器的輸出信號得到外界的信息,然后在程序中控制單片機對電動車上的直流電機的輸出,從而實現(xiàn)電動車的前進以及轉(zhuǎn)彎等循跡行駛。2.系統(tǒng)框架圖3.理論分析與計算4.系統(tǒng)主要模塊設(shè)計: (1)電源:為確保小車在行駛過程中各部件均能正常工作且相互之間不受影響,我們可使用了兩個電源為兩個主要模塊提供電壓。分別是由轉(zhuǎn)彎電機、單片機和光電傳感器組成的總電路電源模塊以及后輪驅(qū)動電源模塊。(2)轉(zhuǎn)彎與路徑出錯識別:小車在行駛過程中會遇到以下兩種路況: 當(dāng)小車由直道高速進入彎道時,轉(zhuǎn)角方向和車速應(yīng)根據(jù)彎道的曲率迅速做出相應(yīng)的改變,原則是彎道曲率越大則方向變化角度越大。 當(dāng)小車遇到十字交叉路段或是脫離軌跡等特殊情況時,智能車應(yīng)當(dāng)保持與上次正常情況一致的方向行駛。(3)光電傳感器:光電傳感分布格局:路徑識別方案:電開關(guān)脫離軌道時,等待外面任意一只檢測到黑線后,做出相應(yīng)的轉(zhuǎn)向調(diào)整,直到中間的光電開關(guān)重新檢測到黑線(即回到軌道)再恢復(fù)正向行駛。現(xiàn)場實測表明,雖然小車在尋跡過程中有一定的左右搖擺。但只要控制好行駛速度就可保證車身基本上接近于沿靠軌道行駛。四、系統(tǒng)硬件電路設(shè)計(1)系統(tǒng)整體電路圖如下:(2)光電傳感器電路(3)電源電路五、軟件代碼設(shè)計1軟件算法設(shè)計:(1)傳感器數(shù)據(jù)處理及尋跡程序總體流程:主程序主要起到一個導(dǎo)向和決策功能。其設(shè)計思路根據(jù)小車所處位置的不同,確定小車的任務(wù)。在黑線軌道上走直線時,對傳感器的信號進行及時的判斷,左邊信號為零時控制電機左轉(zhuǎn),右邊為零時控制電機右轉(zhuǎn)。在彎道時,為了不沖出軌道,是左輪一直打偏,直到檢測到右邊信號為零時控制電機右轉(zhuǎn),當(dāng)右信號為1時,繼續(xù)使左輪一直偏。(2)具體流程分析:智能小車采用4個光學(xué)傳感器置于小車前部,以此判斷如何控制舵機轉(zhuǎn)向.程序不停判斷03傳感器的值,當(dāng)SENSOR1=1與SENSOR0=0時,小車為圖(I)情況,此時應(yīng)控制舵機向右轉(zhuǎn),調(diào)用TurnRight()函數(shù);當(dāng)SENSOR0=1與SENSOR1=0時,小車為圖(II)情況,此時應(yīng)控制舵機向右轉(zhuǎn),調(diào)用TurnLeft()函數(shù). (I) (II)但由于傳感器比較靈敏,經(jīng)實際測試,白色區(qū)域中可能存在雜色,傳感器有可能掃描到白色區(qū)域中的黑色(如下圖),為了避免判斷錯誤,再沒檢測到需要轉(zhuǎn)右或者轉(zhuǎn)左后,進行延時,接著再次判斷此時傳感器情況,如果仍然為SENSOR1=1與SENSOR0=0(或者SENSOR0=1與SENSOR1=0)則可能判斷在黑色跑道上,接著調(diào)用轉(zhuǎn)右(轉(zhuǎn)左)函數(shù).不過,仍然有一定幾率判斷失誤,當(dāng)延時后,傳感器剛好經(jīng)過另一個雜色的情況,解決方法有待完善. 當(dāng)前后傳感器都為1(黑)時(如下圖(III),則認(rèn)為小車在黑色跑道上,不需要進行轉(zhuǎn)向,調(diào)RecoverBalance()函數(shù),恢復(fù)平衡位置.當(dāng)前后傳感器都為0(白)時(如下圖(IV),則認(rèn)為傳感器將離開跑道范圍,為了另小車?yán)^續(xù)延黑色跑道行走,程序中的pre_dir變量保存最近一次轉(zhuǎn)向方向(1為右,0為左),此時憑此變量來維持小車的轉(zhuǎn)向.2.主程序流程圖:3.具體代碼分析:/宏定義電機、舵機的輸入端#define ELE_MACHINER1_IN1 P0_0/舵機輸入端口1#define ELE_MACHINER1_IN2 P0_1/舵機輸入端口2#define ELE_MACHINER1_EN P2_7/舵機使能端/宏定義光電傳感器元件0至3#define SENSOR_INPUT P2 /光電傳感器總端口(逆時針排序)#define SENSOR0 P3_0 /前傳感器0#define SENSOR1 P3_1 /右傳感器1#define SENSOR2 P3_2 /左傳感器2#define SENSOR3 P3_3 /后傳感器3/*平衡函數(shù)*/void RecoverBalance() ELE_MACHINER1_IN1 = 0;/控制舵機平衡 ELE_MACHINER1_IN2 = 0;/*轉(zhuǎn)左函數(shù)*/void TurnLeft() char i = 50; while(i-) ELE_MACHINER1_IN1 = 1;/控制舵機左轉(zhuǎn) ELE_MACHINER1_IN2 = 0; /*轉(zhuǎn)左函數(shù)*/void TurnRight() char i = 50; while(i-) ELE_MACHINER1_IN1 = 0;/控制舵機右轉(zhuǎn) ELE_MACHINER1_IN2 = 1; /*主函數(shù)*/void main(void) uchar pre_dir=0; /保存先前轉(zhuǎn)向 1為右,0為左 system_initial(); /系統(tǒng)開機初始化 ELE_MACHINER1_IN1=0; /舵機輸入端口1 ELE_MACHINER1_IN2=0; /舵機輸入端口2 ELE_MACHINER1_EN=1; /舵機使能端 while(1) /* 循環(huán)判斷 */ /* 如果右傳感器為1(黑),且左傳感器為0(白),則可能需要向右轉(zhuǎn) */ if(SENSOR1 = 1 & SENSOR2 = 0) delay(2); /* 延時,再次判斷,防止賽道雜色 */ if(SENSOR1 = 1 & SENSOR2 = 0) TurnRight(); /* 調(diào)用右轉(zhuǎn)函數(shù) */ pre_dir = 1; /* 將pre_dir置1(右) */ /* 如果左傳感器為1(黑),且右傳感器為0(白),則可能需要向左轉(zhuǎn) */ else if(SENSOR2 = 1 & SENSOR1 = 0) delay(2); /* 延時,再次判斷,防止賽道雜色 */ if(SENSOR2 = 1 & SENSOR1 = 0) TurnLeft(); /* 調(diào)用左轉(zhuǎn)函數(shù) */ pre_dir = 0; /* 將pre_dir置0(左) */ /* 如果前傳感器為1(黑),且后傳感器為1(黑),則小車在黑線路徑上,不需要轉(zhuǎn)向 */ else if(SENSOR0 = 1 & SENSOR3 = 1) RecoverBalance(); /* 如果前傳感器為0(白),則可知前面彎度比較大或者小車已出黑線,則根據(jù)先前轉(zhuǎn)向轉(zhuǎn)向 */ else if(SENSOR0 = 0) if(pre_dir) /* 定義變量pre_dir保存最近一次轉(zhuǎn)向方向*/ TurnRight(); else TurnLeft(); 六、系統(tǒng)功能測試測試設(shè)備:自制跑道、比賽方提供跑道、秒表、過程分析:基本功能,擴展功能及其他功能自制跑道測試:自制跑道完成時間車體總重出界次數(shù)電池電壓出現(xiàn)問題完成與否試驗一26.3S425g14.1在緊急彎上容易出界 Y試驗二27.1S455g24在緊急彎上容易出界 Y試驗三27.9S485g23.8在緊急彎上容易出界 Y試驗四26.5S450g23.7在緊急彎上容易出界 Y試驗五未完成400g43.7出界后識別錯誤 N自制跑道上的成功率為80%,測試表明在電量偏小,載重中等時成功率最好比賽使用跑道測試自制跑道完成時間車體總重出界次數(shù)電池電壓出現(xiàn)問題完成與否試驗一26.3S450g23.9在

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論