《智能循跡小車》由會員分享,可在線閱讀,更多相關《智能循跡小車(27頁珍藏版)》請在裝配圖網上搜索。
1、目錄 Q..
摘 要: 錯誤!未定義書簽。
1 .任務及要求 1..
1.1 任務 1..
2 .系統(tǒng)設計方案 1..
2.1 小車循跡原理 1..
2.2 控制系統(tǒng)總體設計 2.
3 .系統(tǒng)方案 2..
3.1 尋跡傳感器模塊 2.
3.1.1 紅外傳感器ST188簡介 2
3.1.2 比較器 LM324K介 3
3.1.3 具體電路 3.
3.1.4 傳感器安裝 4.
3.2 控制器模塊 4.
3.3 電源模塊 5.
3.4 電機及驅動模塊 5.
3.4.1 電機 5.
3.4.2 驅動 6.
3.5 自動循跡小車總體設計 7.
3.5.1 總體
2、電路圖 錯誤!未定義書簽。
3.5.2 系統(tǒng)總體說明 7.
4 .軟件設計 7..
4.1 PWM 控制 7..
4.2 總體軟件流程圖 8.
4.3 小車循跡流程圖 8.
4.4 中斷程序流程圖 1.0
4.5 單片機測序 1.1
5 .參考資料 1.1
智能循跡小車
小組成員:韋韜,林紹輝,吳尚平
1 .任務及要求
1.1 任務
設計一個基于直流電機的自動尋跡小車,使小車能夠自動檢測地面黑色軌跡,并沿著黑
色車軌跡行駛。系統(tǒng)方案方框圖如圖 1-1所示。
檢測(黑線)一軟件控制 f
驅動電機
*控制小車
圖1-1系統(tǒng)方案方框圖
2 .系統(tǒng)
3、設計方案
2.1 小車循跡原理
這里的循跡是指小車在白色地板上循黑線行走, 由于黑線和白色地板對光線 的反射系數(shù)不同,可以根據接收到的反射光的強弱來判斷“道路” 。通常采取的 方法是紅外探測法。
紅外探測法,即利用紅外線在不同顏色的物體表面具有不同的反射性質的 特點,在小車行駛過程中不斷地向地面發(fā)射紅外光, 當紅外光遇到白色紙質地板
時發(fā)生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸 收,小車上的接收管接收不到紅外光。單片機就是否收到反射回來的紅外光為依 據來確定黑線的位置和小車的行走路線。紅外探測器探測距離有限,
2.2 控制系統(tǒng)總體設計
自動循跡小車控制系統(tǒng)
4、由主控制電路模塊、穩(wěn)壓電源模塊、紅外檢測模塊、 電機及驅動模塊等部分組成,控制系統(tǒng)的結構框圖如圖2-1所示。
世圖
1、主控制電路模塊:用 AT89C51I片機、復位電路,時鐘電路
2、紅外檢測模塊:光電傳感器 ST188,比較器LM324
3、電機及驅動模塊:電機驅動芯片L298N兩個直流電機
4、電源模塊:9V干電池。
3 .系統(tǒng)方案
3.1 尋跡傳感器模塊
STS列反射式光電傳感器是經常使用的傳感器。這個系列的傳感器種類齊 全、價格便宜、體積小、使用方便、質量可靠、用途廣泛。
我們采用ST188乍為紅外檢測傳感器。
在黑線檢測的測試中,若檢測到白色區(qū)域,發(fā)射管發(fā)射
5、的紅外線沒有反射到 接收管,測量接收管的電壓為4. 8V ,若檢測到黑色區(qū)域,接收管接受到發(fā)射管 發(fā)射的紅外線,電阻發(fā)生變化,所分得的電壓也就隨之發(fā)生變化, 測的接收管的 電壓為0. 5V,測試基本滿足要求。
判斷有無黑線我們用的一塊比較器LM324 比較基準電壓由30K勺變阻器調 節(jié),各個接收管的參數(shù)都不一致,每個傳感器的比較基準電壓也不盡相同, 我們 為每個傳感器配備了 一個變阻器。
3.1.1 紅外傳感器ST188簡介
含一個反射模塊(發(fā)光二極管)和一個接收模塊(光敏三極管)。通過發(fā)射
紅外信號,看接收信號變化判斷檢測物體狀態(tài)的變化。 A、K之間接發(fā)光二極管,
G E之間接光
6、敏三極管(二者在電路中均正接,但要串聯(lián)一定阻值的電阻)
圖3-1 ST188實物圖
? 國怎口 ? ?早甲軍
口口匚口":川媼
底視圖 1;部電路
圖3-2 ST188管腳圖及內部電路
3.1.2 比較器LM324簡介
LM32妁四運放集成電路,采用14腳雙列直插塑料封裝。內部有四個運算放 大器,有相位補償電路。電路功耗很小,工作電壓范圍寬,可用正電源 3?30V, 或正負雙電源± 1. 5V?±15VU乍。
在黑線檢測電路中用來確定紅外接收信號電平的高低, 以電平高低判定黑線
圖3-3 LM324內部電路
C反相輸入端)
(同相輸入端】0
圖3-4 集成運放的管腳圖
7、
有無。在電路中,LM324勺一個輸入端需接滑動變阻器,通過改變滑動變阻器的 阻值來提供合適的比較電壓。
3.1.3 具體電路
通過ST188僉測黑線,輸出接收到的信號給LM324,接收電壓與比較電壓比 較后,輸出信號變?yōu)楦叩碗娖剑佥斎氲絾纹瑱C中,用以判定是否檢測到黑線。
圖3-5 傳感器模塊電路圖
3.1.4 傳感器安裝
在小車具體的循跡行走過程中,將紅外傳感器放置在車頭前方,提前對路 況采集信息,再由單片機控制兩輪轉速來進行兩級方向糾正控制, 提高其循跡的 可靠性。
小車前方循跡傳感器全部在一條直線上。其中中間連個傳感器為第一級方 向控制傳感器,旁邊兩個為第二級方向控
8、制傳感器, 并且黑線同一邊的兩個傳感 器之間的寬度不得大于黑線的寬度。 小車前進時,始終保持軌跡黑線在中間兩個 第一級傳感器之間,當小車偏離黑線時,第一級傳感器就能檢測到黑線,把檢測 的信號送單片機處理、控制系統(tǒng),控制系統(tǒng)發(fā)出信號對小車軌跡予以糾正。 若小 車回到了軌道上,即4個探測器都只檢測到白紙,則小車會繼續(xù)行走;若小車由 于慣性過大依舊偏離軌道,越出了第一級兩個探測器的探測范圍,這時第二級探 測器動作,再次對小車的運動進行糾正,使之回到正確軌道上去??梢钥闯?,第 二級方向探測器實際是第一級的后備保護,從而提高了小車循跡的可靠性。
3.2 控制器模塊
采用Atmel公司的AT89C51
9、單片機作為主控制器。它是一個低功耗,高性 能的8位單片機,片內含32k空間的可反復擦寫100,000次Flash只讀存儲器,具有4K的隨機存取數(shù)據存儲器(RAM ), 32個I/O 口,2個8位可編程定時計 數(shù)器,且可在線編程、調試,方便地實現(xiàn)程序的下載與整機的調試。
時鐘電路和復位電路 如圖3-7 (與單片機構成最小系統(tǒng))
1)采用外部時鐘,晶振頻率為12MHZ
2)采用按鍵復位
XTAL2
RST
N
E E-S
MAIEA
01-^^4567 11 ,fl— fl— fl— fl— rfj 1 .1— p p p p p p p p
Pii ^AT'fl PO VA
10、D1 P0二華口管
PO 4iy>D4 PO *'AL'5 PO 5/AD6 PO.HADT
P2 0/AS
PS 1/A& P2 2/A10
P2 >A n
P2 1/A12 P2 HAi3 P2 的 14 P2 了伊 F
P3C.-RXD P3 1HXD P3.2flNrrr P-.i'iNTl
P3 4ZT0
PS5TT1
7 G/V7P
P3 7/RD
圖3-7時鐘電路和復位電路
3.3 電源模塊
采用6節(jié)1.5V南孚電池供電。可以供給小車正常行駛。
3.4 電機及驅動模塊
3.4.1 電機
電機采用直流減速電機,直流減速電機轉動力矩大,體積小,重量輕,
11、裝 配簡單,使用方便。由于其內部由高速電動機提供原始動力,帶動變速(減速) 齒輪組,可以產生較大扭力。
可選用減速比為1: 74的直流電機,減速后電機的轉速為 100r/min 。若車 輪直徑為6cm,則小車的最大速度可以達到
V=2 < v=2*3.14*0.03*100/60=0.314m/s
能夠較好的滿足系統(tǒng)的要求。
3.4.2 驅動
驅動模塊采用專用芯片 L298N作為電機驅動芯片,L298N是一個具有高電 壓大電流的全橋驅動芯片,具響應頻率高,一片L298N可以分別控制兩個直流電 機。以下為L298N的引腳圖和輸入輸出關系表。
ENA
11
15
10
+ V
12、SS
SENSFA
SENSEB
1N1
IN2
IN4
0UT2
OUT4
GXD
ENA
IN2
電機運行情況
H
H
L
臊
H
1
H
反轉
H
N
M
快研止
L
X
X
停止
圖3-9 L298N外部引腳 表2 L298N輸入輸出關系
驅動電路的設計如圖3-10所示:
圖3-10 L298N電機驅動電路
L298N的5、7、10、12四個引腳接到單片機上,通過對單片機的編程就
可實現(xiàn)兩個直流電機的PWM0速控制。
3.5 自動循跡小車總體設計
3.5.1 系統(tǒng)總體說明
當光電傳感器
13、開始接受信號,通過比較器將信號傳如單片機中。小車進入尋 跡模式,即開始不停地掃描與探測器連接的單片 I/O 口,一旦檢測到某個I/O 口 有信號變化,就執(zhí)行相應的判斷程序,把相應的信號發(fā)送給電動機從而糾正小車 的狀態(tài)。單片機采用T0定時計數(shù)器,通過來產生PW峽,控制電機轉速。
4 .軟件設計
4.1 PWM控制
本系統(tǒng)采用PWM調節(jié)直流電機的速度。PWM通過控制固定電壓的直流電源 開關頻率,從而改變負載兩端的電壓,進而達到控制要求的一種電壓調整方法。 PWM以應用在許多方面,如電機調速、溫度控制、壓力控制等。
在PWM動控制的調整系統(tǒng)中,按一個固定的頻率來接通和斷開電源,并根據 需要改
14、變一個周期內“接通”和“斷開”時間的長短。通過改變直流電機電樞上 電壓的“占空比”來改變平均電壓的大小,從而控制電動機的轉速。因此,PWIMC 被稱為“開關驅動裝置”。
在脈沖彳^用下,當電機通電時,速度增加;電機斷電時,速度逐漸減少。只要 按一定規(guī)律,改變通、斷電的時間,即可讓電機轉速得到控制。
本系統(tǒng)中通過控制51單片機的定時器T0的初值,從而可以實現(xiàn)P0.4和P0.5 輸出口輸出不同占空比的脈沖波形。定時計數(shù)器若干時間(比如 0.1ms)中斷一
次,就使P0.4或P0.5產生一個高電平或低電平。 將直流電機的速度分為100
個等級,因此一個周期就有個100脈沖,周期為100個脈沖
15、的時間。速度等級對 應一個周期的高電平脈沖的個數(shù)。占空比為高電平脈沖個數(shù)占一個周期總脈沖個 數(shù)的百分數(shù)。一個周期加在電機兩端的電壓為脈沖高電壓乘以占空比。 占空比越
大,加在電機兩端的電壓越大,電機轉動越快。電機的平均速度等于在一定的占 空比下電機的最大速度乘以占空比。當我們改變占空比時,就可以得到不同的電 機平均速度,從而達到調速的目的。精確地講,平均速度與占空比并不是嚴格的 線性關系,在一般的應用中,可以將其近似地看成線性關系。
4.2 總體軟件流程圖
小車進入尋跡模式后,即開始不停地掃描與探測器連接的單片 I/O 口, 且檢測到某個I/O 口有信號變化,就執(zhí)行相應的判斷程序,把相應
16、的信號發(fā)送 給電動機從而糾正小車的狀態(tài)。軟件的主程序流程圖如圖 4-1所示:
4.3 小車循跡流程圖
小車進入循跡模式后,即開始不停地掃描與探測器連接的單片機 I/O 口, 且檢測到某個I/O 口有信號,即進入判斷處理程序,先確定4個探測器中的哪一
個探測到了黑線,如果左面第一級傳感器或者左面第二級傳感器探測到黑線, 即
小車左半部分壓到黑線,車身向右偏出,此時應使小車向左轉;如果是右面第一 級傳感器或右面第二級傳感器探測到了黑線,即車身右半部壓住黑線,小車向左 偏出了軌跡,則應使小車向右轉。在經過了方向調整后,小車再繼續(xù)向前行走, 并繼續(xù)探測黑線重復上述動作。循跡流程圖如圖
17、 4-2所示
由于第二級方向控制為第一級的后備,則兩個等級間的轉向力度必須相互 配合。第二級通常是在超出第一級的控制范圍的情況下發(fā)生作用, 它也是最后一
層保護,所以它必須要保證小車回到正確軌跡上來, 則通常使第二級轉向力度大
于第一級, 即 Turn_left2 > Turn_left1,Turn_right2 > Turn_right1 ( 其中
Turn_left2 , Turn_left1, Turn_right2 , Turn_right1 為小車轉向力度,其大
小通過改變單片機輸出的占空比的大小來改變),具體數(shù)值在實地實驗中得到。
4.4 中斷程序流程圖
這里
18、利用的是51單片機的T0定時計數(shù)器,從而讓單片機 P0 口的P0.4和 P0.5引腳輸出占空比不同的方波,然后經驅動芯片放大后控制直流電機。定時 計數(shù)器若干時間(比如0.1ms)比如中斷一次,就使P0.4或P0.5產生一個高電 平或低電平。中斷程序流程圖如圖 4-3所小
4.5 單片機測序
#include
#define uchar unsigned char
#define uint unsigned int
//*********** 電機控制端口 ************// sbit in1=P2A7;
sbit in2=P2A6; //*** 左電
19、機 **7/ sbit ena=P2A1; sbit in3=P2A5;
sbit in4=P2A4; //*** 右電機 ***// sbit enb=P2AQ;
//******* 傳感器檢測端 口 ***********// sbit L_1=P1A0; 〃左內傳感器〃
sbit L_2=P1A1; // 左外傳感器 //
sbit R_1=PW2; 〃右內傳感器〃
sbit R_2=PW3; 〃右外傳感器〃
uchar i,j;
uint w0,w1;
uint p1;
//uint k=0;
//**********1 毫秒延時函數(shù) *************//
20、
void delay(uint z)
//延時一毫秒
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
//*********** 定時器初始化函數(shù) ************// void chuhua (void)
TMOD=0x11;
TH0=(65535-100)/256;
TL0=(65535-100)%256;
TH1=(65535-100)/256;
TL1=(65535-100)%
21、256;
EA=1;
//總中斷開
ET0=1;
//定時器T0中斷
TR0=1;
//允許T0中斷
ET1=1;
//定時器T1中斷
TR1=1;
ena=1;
enb=1;
//允許T1中斷
//******* 主函數(shù) *******// void main(void)
chuhua();
in1=1;
in2=0;
in3=1;
in4=0;
while(1)
p1=P1|0xf0;
// if(p1==0xf0)
// k++;
switch(pl)
(
case 0xff: //未檢測到黑帶直行
(
w0=11;
w1=
22、11;
)
break;
case 0xfe: //左大拐彎
(
w0=1;
w1=12;
) break;
case 0xf7: //右大拐彎
(
w0=12;
w1=1;
)
break;
case 0xfd: //左小拐彎
(
w0=4;
w1=9;
) break;
case 0xfb: //右小拐彎
(
w0=9;
w1=4;
)
break;
/* case 0xf0: //加減速帶
(
if(k==1)
w0=25;
w1=18;
delay(2
23、00);
w0=7;
w1=7;
delay(200);
w0=11;
w1=11;
) break; */
)
)
)
//********** 定時器T0中斷服務函數(shù)**********//
void t0(void) interrupt 1 〃定時器T0用來對左電機的調節(jié)
(
TH0=(65535-500)/256; //定時器重裝初值
TL0=(65535-500)%256;
24、
i++;
if(i==w0) //PWM 波的占空比 W0/21*100%
(
ena=0;
}
else if(i==21) //PWM 波的周期為 21*500us
(
ena=1;
i=0;
//*
********
定時器T1中斷服務函數(shù)***************//
void t1(void) interrupt 3 〃定時器T1用來對左電機的調節(jié)
(
TH1=(65535-500)/256; //定時器重裝初值
TL1=(65535-500)%256;
j++;
if(j==w1) //PWM 波的占空比 W1/21*100%
(
enb=0;
)
else if(j==21) //PWM 波的周期為 21*500us
enb=1;
j=0;
)
}5.參考資料
[1]徐煜名,C51單片機及應用系統(tǒng)設計.電子工業(yè)出版社,2009.2
[2]金建設 于曉海;C51單片機系統(tǒng)及應用試驗教程;北京郵電大學出版社;
2010.3
[3]單成祥 牛彥文 張春.傳感器原理與應用.國防工業(yè)出版社2006.9