尋跡避障小車原理
《尋跡避障小車原理》由會員分享,可在線閱讀,更多相關(guān)《尋跡避障小車原理(13頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、循跡避障小車原理 一) 小車功能實現(xiàn) 利用光電傳感(紅外對射管,紅外發(fā)射與接收二極管組成)檢測黑白線,實現(xiàn)小車能跟著白線(或黑線)行走,同時也可避開障礙物,即小車尋跡過程中,若遇障礙物可自行繞開,繞開后繼續(xù)尋跡。 二) 電路分析 1. 光電傳感 循跡光電傳感器原理,利用黑白線對紅外線不同的反射能力。然后通過光敏二極管或光敏三極管,接收反射回的不同光強信號,把不同光強轉(zhuǎn)換為電流信號,最后通過電阻,轉(zhuǎn)換為單片機可識別的高低電平。光電傳感器實現(xiàn)循跡的基本電路如下圖所示 、 循跡傳感器基本電路 電路解釋:TC端是傳感器工作控制端,為高電平時,發(fā)光二極管不工作,傳感器休眠,為低電平時,
2、傳感器啟動。Signal端為檢測信號輸出,當遇到黑線,黑線吸收大量的紅外線,反射的紅外線很弱,光敏三極管不導通,signal輸出高電平,當遇到白線,與黑線相反,反射的紅外線很強,使光敏三極管導通,signal輸出低電平。 尋跡部分 調(diào)整左右傳感器之間的距離,兩探頭距離約等于白線寬度最合適,一般白線寬度選擇范圍為3 – 5 厘米比較合適。注意:該傳感器的靈敏度是可調(diào)的,偶爾傳感器遇到白線卻不能送出相應的信號,通過調(diào)節(jié)傳感器上的可調(diào)電阻,適當?shù)脑龃蠡驕p小靈敏度。另外,循跡傳感器的安放也算是比較有講究的,有兩種方法,一種是兩個都是放置在白線內(nèi)側(cè)但緊貼白線邊緣,第二種是都放置在白線的外側(cè),
3、同樣緊貼白線邊緣。我們通常采用第二種方法。 編寫程序使小車遇白線時,小車跟著白線走。當小車先前前進時,如果向左偏離了白線。那么右邊傳感器會產(chǎn)生一個低電平,單片機判斷這個信號,然后向右拐?;氐桨拙€后。兩傳感器輸出信號為高電平。小車前進。如果小車向右偏離白線,左邊傳感器產(chǎn)生一個低電平,單片機判斷這個信號,然后向左拐。如此如此,小車必不偏離白線。若小車的兩對光電傳感器同時輸出的信號為高電平(黑底)或低電平(白底),即單片機判斷的都為高電平或低電平,小車向前直走,在此過程中(直走)小車若遇白線,小車又重復上面動作跟著白線走。 避障部分 當小車在尋跡(沿著白線走或直走)過程中遇障
4、礙物,小車亦可自行轉(zhuǎn)彎,轉(zhuǎn)彎動作完成后,又繼續(xù)尋跡。 2. 電機驅(qū)動電路 電機驅(qū)動芯片采用L298N,是一款承受高壓大電流的全橋型直流/步進電壓驅(qū)動器,如下圖 電機控制芯片L298N的引腳排列 L298N引腳編號與功能 引腳編號 名稱 功能 1 電流傳感器A 在該引腳和地之間接小阻值電阻可用來檢測電流 2 輸出引腳1 內(nèi)置驅(qū)動器A的輸出端1,接至電機A 3 輸出引腳2 內(nèi)置驅(qū)動器A的輸出端2,接至電機A 4 電機電源端 電機供電輸入端,電壓可達46V 5 輸入引腳1 內(nèi)置驅(qū)動器A的邏輯控制輸入端1 6 使能端A 內(nèi)
5、置驅(qū)動器A的使能端 7 輸入引腳2 內(nèi)置驅(qū)動器A的邏輯控制輸入端2 8 邏輯地 邏輯地 9 邏輯電源端 邏輯控制電路的電源輸入端為5V 10 輸入引腳3 內(nèi)置驅(qū)動器B的邏輯控制輸入端1 11 使能端B 內(nèi)置驅(qū)動器B的使能端 12 輸入引腳4 內(nèi)置驅(qū)動器B的邏輯控制輸入端2 13 輸出引腳3 內(nèi)置驅(qū)動器B的輸出端1,接至電機B 14 輸出引腳4 內(nèi)置驅(qū)動器B的輸出端2,接至電機B 15 電流傳感器B 在該引腳和地之間接小阻值電阻可用來檢測電流 L298N內(nèi)部原理圖 電機驅(qū)動A/B的控制邏輯如下表所示 輸入信號 電機運動方式
6、 使能端A/B 輸入引腳1/3 輸入引腳2/4 1 1 0 前進 1 0 1 后退 1 1 1 緊急停車 1 0 0 緊急停車 0 X X 自由轉(zhuǎn)動 電機驅(qū)動A/B的工作原理 電機控制邏輯如下:以電機A為例,當使能端A為高電平是,如果輸入端M1 Direction引腳為高電平,三極管導通,輸入引腳1為低電平而輸入引腳2為高電平,電機A反轉(zhuǎn);如果輸入端M1 Direction引腳為底電平,三極管截止,輸入引腳1為高電平而輸入引腳2為低電平,電機A正轉(zhuǎn)。 電機驅(qū)動原理圖 3. 中文液晶顯示器128x64 帶中文字庫的128X
7、64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊。其顯示分辨率為12864, 內(nèi)置8192個16*16點漢字,和128個16*8點ASCII字符集。利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機交互圖形界面??梢燥@示84行1616點陣的漢字,也可完成圖形顯示。具有低電壓低功耗特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。 基本特性: 低電源電壓(VDD:+3.0--+5.5V) 顯示分辨率:12
8、864點 內(nèi)置漢字字庫,提供8192個1616點陣漢字(簡繁體可選) 內(nèi)置 128個168點陣字符 2MHZ時鐘頻率 顯示方式:STN、半透、正顯 驅(qū)動方式:1/32DUTY,1/5BIAS 視角方向:6點 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10 通訊方式:串行、并口可選 內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負壓 無需片選信號,簡化軟件設(shè)計 工作溫度: 0℃ - +55℃ ,存儲溫度: -20℃
9、 - +60℃ 模塊接口說明: PIN15 LED+ 背光正極,接4.8V-5V PIN116 LED- 背光負極,接0V *注:1:如在實際應用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接;2:模塊內(nèi)部接有上電復位電路,因此在不需要經(jīng)常復位的場合可將該端懸空;3:如背光和模塊共用一個電源,可以將模塊上的JA、JK用焊錫短接。 引腳控制信號應用 D/I,R/W的配合選擇決定控制界面的4種模式: D/I R/W 功能說明 L L MPU寫指令到指令暫存器(IR) L H 讀出忙標志(
10、BF)及地址記數(shù)器(AC)的狀態(tài) H L MPU寫入數(shù)據(jù)到數(shù)據(jù)暫存器(DR) H H MPU從數(shù)據(jù)暫存器(DR)中讀出數(shù)據(jù) E信號操作: E狀態(tài) 執(zhí)行動作 結(jié)果 高——>低 I/O緩沖——>DR 配合/W進行寫數(shù)據(jù)或指令 高 DR——>I/O緩沖 配合R進行讀數(shù)據(jù)或指令 低/低——>高 無動作 內(nèi)部寄存器信號 ● 忙標志:BF BF標志提供內(nèi)部工作情況,BF=1表示模塊在進行內(nèi)部操作,此時模塊不接受外部指令和數(shù)據(jù)。BF=0時,模塊為準備狀態(tài),隨時可接受外部指令和數(shù)據(jù)。利用STATUS RD 指令,可以將BF讀到DB7總線,從而檢驗模塊之工作狀態(tài)。
11、 ●字型產(chǎn)生ROM(CGROM) 字型產(chǎn)生ROM(CGROM)提供8192個此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示(DISPLAY ON),DDRAM的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAY OFF)。DFF 的狀態(tài)是指令DISPLAY ON/OFF和D/IT信號控制的。 ●顯示數(shù)據(jù)RAM(DDRAM) 模塊內(nèi)部顯示數(shù)據(jù)RAM提供642個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當寫入顯示數(shù)據(jù)RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM字型及CGROM的中
12、文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在此階段0000H—0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個)將選擇CGRAM的自定義字型,02H—7FH的編碼中將選擇半角英數(shù)字的字型,至于A1以上的編碼將自動的結(jié)合下一個位元組,組成兩個位元組的編碼形成中文字型的編碼BIG5(A140—D75F),GB(A1A0-F7FFH)。 ●字型產(chǎn)生RAM(CGRAM) 字型產(chǎn)生RAM提供圖象定義(造字)功能,可以提供四組1616點的自定義圖象空間,使用者可以將內(nèi)部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過
13、DDRAM顯示在屏幕中。 ● 地址計數(shù)器AC 地址計數(shù)器AC地址計數(shù)器是用來貯存DDRAM/CGRAM之一的地址,它可由設(shè)定指令暫存器來改變,之后只要讀取或是寫入DDRAM/CGRAM的值時,地址計數(shù)器的值就會自動加一,當D/I為“0”時而R/W為“1”時,地址計數(shù)器的值會被讀取到DB6——DB0中。 ●光標/閃爍控制電路 此模塊提供硬體光標及閃爍控制電路,由地址計數(shù)器的值來指定DDRAM中的光標或閃爍位置。 指令操作 模塊控制芯片提供兩套控制命令,基本指令和擴充指令如下: 指令表1:(RE=0:基本指令) 指令 指 令 碼 功 能 D/I R/W D7
14、 D6 D5 D4 D3 D2 D1 D0 清除 顯示 0 0 0 0 0 0 0 0 0 1 將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計數(shù)器(AC)到"00H" 地址 歸位 0 0 0 0 0 0 0 0 1 X 設(shè)定DDRAM的地址計數(shù)器(AC)到"00H",并且將游標移到開頭原點位置;這個指令不改變DDRAM 的內(nèi)容 顯示狀態(tài) 開/關(guān) 0 0 0 0 0 0 1 D C B D=1: 整體顯示 ON C=1: 游標ON B=1:游標位置反白允許 進入點設(shè)定 0 0 0 0
15、 0 0 0 1 I/D S 指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標的移動方向及指定顯示的移位 游標或顯示移位控制 0 0 0 0 0 1 S/C R/L X X 設(shè)定游標的移動與顯示的移位控制位;這個指令不改變DDRAM 的內(nèi)容 功能 設(shè)定 0 0 0 0 1 DL X RE X X DL=0/1:4/8位數(shù)據(jù) RE=1: 擴充指令操作 RE=0: 基本指令操作 設(shè)定CGRAM地址 0 0 0 1 AC5 AC4 AC3 AC2 AC1 AC0 設(shè)定CGRAM 地址 設(shè)定DDRAM地址 0 0 1
16、 0 AC5 AC4 AC3 AC2 AC1 AC0 設(shè)定DDRAM 地址(顯示位址) 第一行:80H-87H 第二行:90H-97H 讀取忙標志和地址 0 1 BF AC6 AC5 AC4 AC3 AC2 AC1 AC0 讀取忙標志(BF)可以確認內(nèi)部動作是否完成,同時可以讀出地址計數(shù)器(AC)的值 寫數(shù)據(jù)到RAM 1 0 數(shù)據(jù) 將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM) 讀出RAM的值 1 1 數(shù)據(jù) 從內(nèi)部RAM讀取數(shù)據(jù)D7——D0(DDRAM/CGRAM/IRAM/GRAM) 指令
17、表2:(RE=1:擴充指令) 指令 指 令 碼 功 能 D/I R/W D7 D6 D5 D4 D3 D2 D1 D0 待命 模式 0 0 0 0 0 0 0 0 0 1 進入待命模式,執(zhí)行其他指令都終止 卷動地址開關(guān)開啟 0 0 0 0 0 0 0 0 1 SR SR=1:允許輸入垂直卷動地址 SR=0:允許輸入IRAM和CGRAM地址 反白 選擇 0 0 0 0 0 0 0 1 R1 R0 選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R0=00,第一次設(shè)定為反白顯示,再次設(shè)
18、定變回正常 睡眠 模式 0 0 0 0 0 0 1 SL X X SL=0:進入睡眠模式 SL=1:脫離睡眠模式 擴充功能設(shè)定 0 0 0 0 1 CL X RE G 0 CL=0/1:4/8位數(shù)據(jù) RE=1: 擴充指令操作 RE=0: 基本指令操作 G=1/0:繪圖開關(guān) 設(shè) 定 繪圖RAM 地 址 0 0 1 0 AC6 0 AC5 0 AC4 AC3 AC3 AC2 AC2 AC1 AC1 AC0 AC0 設(shè)定繪圖RAM 先設(shè)定垂直(列) AC6AC5…AC0 再設(shè)定水平(行)
19、地址AC3AC2AC1AC0 將以上16位地址連續(xù)寫入即可 注:當IC1在接受指令前,微處理器必須先確認其內(nèi)部處于非忙碌狀態(tài),即讀取BF標志時,BF需為零,方可接受新的指令;如果在送出一個指令前并不檢查BF標志,那么在前一個指令和這個指令中間必須延長一段較長的時間,即是等待前一個指令確實執(zhí)行完成。 三、顯示應用 1、字符顯示 帶中文字庫的128X64-0402B每屏可顯示4行8列共32個1616點陣的漢字,每個顯示RAM可顯示1個中文字符或2個168點陣全高ASCII碼字符,即每屏最多可實現(xiàn)32個中文字符或64個ASCII碼字符的顯示。帶中文字庫的128X64-0402B內(nèi)部提供12
20、82字節(jié)的字符顯示RAM緩沖區(qū)(DDRAM)。字符顯示是通過將字符顯示編碼寫入該字符顯示RAM實現(xiàn)的。根據(jù)寫入內(nèi)容的不同,可分別在液晶屏上顯示CGROM(中文字庫)、HCGROM(ASCII碼字庫)及CGRAM(自定義字形)的內(nèi)容。三種不同字符/字型的選擇編碼范圍為:0000~0006H(其代碼分別是0000、0002、0004、0006共4個)顯示自定義字型,02H~7FH顯示半寬ASCII碼字符,A1A0H~F7FFH顯示8192種GB2312中文字庫字形。字符顯示RAM在液晶模塊中的地址80H~9FH。字符顯示的RAM的地址與32個字符顯示區(qū)域有著一一對應的關(guān)系,其對應關(guān)系如下表所示。
21、
80H
81H
82H
83H
84H
85H
86H
87H
90H
91H
92H
93H
94H
95H
96H
97H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
其中,C語言編譯器具有直接把中文轉(zhuǎn)換成ASCII碼字符功能。對照下面原理圖,編譯程序示例,并下載到實驗板上,觀測現(xiàn)象。
4. 尋跡避障程序
#include
22、nsigned int sbit RM1=P0^0; sbit RM2=P0^1;//右電機 sbit LM1=P0^2; sbit LM2=P0^3;//左電機 sbit bzh=P2^6; sbit RAD=P0^6;//紅外接收右電機轉(zhuǎn) sbit LBD=P0^7;//紅外接收左電機轉(zhuǎn) sbit rs=P3^5;// LCD的RS sbit rw=P3^6;// LCD的R/W sbit en=P3^7;// LCD的E void lcd_string(uchar *strpoint); void delay(uint a) {
23、 uint b,c; for(b=a;b>0;b--) for(c=120;c>0;c--); } uchar i=0; void checkbusy()//檢查LCD忙 { uchar dat; rs=0; //rs=1為數(shù)據(jù),=0為命令. rw=1; //rw=1為讀,=0為寫. do { P1=0x00; en=1; //E信號下降沿鎖存DB7~DBO dat=P1; //讀入P1的值 en=0; //鎖存 dat=0x80 & dat; /
24、/BUSY:1內(nèi)部在工作,0正常狀態(tài) }while(!(dat==0x00));rw=0; } void sentcom(uchar com) { checkbusy(); //檢查Busy rs=0; en=0; P1=com; delay(5); en=1; delay(5); en=0; } void sentdata(uchar date) //寫數(shù)據(jù) { checkbusy(); rs=1; en=0; P1=date; delay(5
25、); en=1; delay(5); en=0; } //初始化 LCM void lcd_init() { sentcom(0x38);//功能設(shè)置,一次送8位數(shù)據(jù),基本指令集 sentcom(0x0C);//0000,1100 整體顯示,游標off,游標位置off sentcom(0x01);//0000,0001
26、 清DDRAM sentcom(0x02);//0000,0010 DDRAM地址歸位 sentcom(0x80);//1000,0000 設(shè)定DDRAM 7位地址000,0000到地址計數(shù)器AC } void lcd_string(char *strpoint)//在當前顯示位置顯示LCD字符串 { register i=0; while(strpoint[i]!=0){ sentdata(strpoint[i]); i++; } }
27、 void stop() { lcd_init(); sentcom(0x80); lcd_string("現(xiàn)代創(chuàng)新實訓室 ");//C編譯系統(tǒng)本省也具有轉(zhuǎn)換功能,所以也可以這樣寫 sentcom(0x90); lcd_string("尋跡避障一體小車"); sentcom(0x88); lcd_string("--指導:文方老師"); sentcom(0x98); lcd_string("--設(shè)計:劉志聰 "); } void tracing() {
28、 sentcom(0x80); lcd_string("現(xiàn)代創(chuàng)新實訓室 "); sentcom(0x90); lcd_string("--指導:文方老師"); sentcom(0x88); lcd_string("--設(shè)計:劉志聰 "); sentcom(0x98); lcd_string(" 小車尋跡中---"); } void bypass() { sentcom(0x80); lcd_string("現(xiàn)代創(chuàng)新實訓室 "); sentcom(
29、0x90); lcd_string("--指導:文方老師"); sentcom(0x88); lcd_string("--設(shè)計:劉志聰 "); sentcom(0x98); lcd_string(" 小車避障中---"); } void find() {tracing(); while(bzh==1) { if(LBD&&RAD==1) { RM1=1;LM1=1; RM2=0;LM2=0; } if(RAD==0) { RM
30、1=0;LM1=1; RM2=0;LM2=0; if(LBD==0) { RM1=1;LM1=1; RM2=0;LM2=0; delay(i); } } if(LBD==0) { RM1=1;LM1=0; RM2=0;LM2=0; if(RAD==0) { RM1=1;LM1=1; RM2=0;LM2=0; delay(i); } } } } void bizhan() { bypass(); if(bzh==0) { RM1=1;LM1=0; RM2=0;LM2=1; delay(100); } } void main() { stop(); delay(2000); while(1) { find(); bizhan(); } }
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。