基于51單片機(jī)的紅外避障自動(dòng)車的實(shí)現(xiàn)
下面是一些基本資料:
—————————————————————小車參數(shù)——————————————————————————
障礙檢測方式:紅外探測(探測模塊功耗7mA)
車模幾何尺寸:149 x 102 x 59 (mm)
車 模 輪 距:120 (mm)
測 障 精 度:75 cm
電 源 系 統(tǒng):4 x 1.5 v 干電池/4 x 1.2 v 充電電池及其穩(wěn)壓輸出
電機(jī):直流減速電機(jī),1~12V工作電壓,傳動(dòng)比:71.2:1
主 控 芯 片:STC89C52MCU
其 他 芯 片:LM7806 LM7805 STC11F01等
—————————————————————小組資料——————————————————————————
小組成員:
王太杰:0804211班,擅長于硬件,焊接技術(shù)強(qiáng),硬件知識(shí)充足,在本次制作中負(fù)責(zé)電機(jī)驅(qū)動(dòng)部分建與調(diào)試。
孫學(xué)軍:0904211班,擅長于編程,C語言功底扎實(shí),思路開闊,在本次制作中負(fù)責(zé)程序驅(qū)動(dòng)部分程序調(diào)試。
李相華:0804211班,在本次制作中負(fù)責(zé)電源部分。
小組優(yōu)勢:
硬件與程序搭配協(xié)調(diào),每人負(fù)責(zé)各自模塊,只提供最終模塊接口,使隊(duì)友不必關(guān)注對(duì)方模塊內(nèi)部結(jié)構(gòu),只需將接口連接完成即可,大大減少了每人負(fù)責(zé)的內(nèi)容,提高了效率。
—————————————————————制作流程與時(shí)間———————————————————————
2010年4月3日(周六):
小組成員對(duì)各模塊電路進(jìn)行了選擇、優(yōu)化,并進(jìn)行了電路搭建、焊接,各模塊調(diào)試,確定模塊交互接口;主控程序思路成型,并編寫了測試程序,對(duì)軟硬件進(jìn)行了測試。最后各模塊交互,整體調(diào)試,主程序確定及細(xì)節(jié)敲定。
2010年4月4日(周日):
模塊交互,整體調(diào)試,主控程序細(xì)節(jié)修改;經(jīng)布局后各硬件模塊轉(zhuǎn)移至車體,最終焊接,整車成型。主控程序下載,調(diào)試,最終成功。
—————————————技術(shù)資料———————————————————
設(shè)計(jì)思路:
為便節(jié)省電機(jī)數(shù)量和電路復(fù)雜程度,紅外避障小車(以下簡稱小車)采用前輪主動(dòng),后輪從動(dòng)原理。前輪采用雙電機(jī)驅(qū)動(dòng),利用差速法實(shí)現(xiàn)車身轉(zhuǎn)向。
檢測部分利用紅外發(fā)射管發(fā)射紅外光,遇障礙物后經(jīng)反射被紅外接受管接收,產(chǎn)生電平轉(zhuǎn)換,利用單片機(jī)I/O口檢測紅外檢測模塊電平輸出,以此判斷前方障礙物有無,檢測到障礙物后,經(jīng)單片機(jī)I/O口控制電機(jī)驅(qū)動(dòng)電路,經(jīng)由電機(jī)驅(qū)動(dòng)電路輸出不同電壓,產(chǎn)生差速,實(shí)現(xiàn)轉(zhuǎn)向,最終以達(dá)到避障的目標(biāo)。
電源模塊:
考慮到小車行駛的靈活性,我們拋棄了采用交流電的方案。在制作調(diào)試過程中,我們采取了4節(jié)1.5V5號(hào)南孚電池,經(jīng)電池盒串聯(lián)后可獲得5.9~6.5V穩(wěn)定電壓輸出,直接給電機(jī)驅(qū)動(dòng)電路供電。但考慮到51單片機(jī)工作電壓為4.5V~5.5V,且其對(duì)工作電壓要求比較嚴(yán)格。對(duì)此,我們?cè)O(shè)想采取基于LM7805穩(wěn)壓芯片的穩(wěn)壓芯片輸出5V恒定電壓。電源電路圖見附件,由于在制作中手頭只有一片LM7806,于是我們?cè)谳敵龆舜?lián)了一個(gè)IN4007二極管,產(chǎn)生0.7V壓降,最終獲得5.2V~5.3V穩(wěn)定電壓輸出,給單片機(jī)供電。以提高系統(tǒng)穩(wěn)定性。
在最終整車成型時(shí)我們采用了5V穩(wěn)壓二極管穩(wěn)定電壓,原因有二:一是降低了電源電路功耗,二是降低了制作成本??紤]到一次性干電池的不可利用性,我們?cè)谡嚦尚蜁r(shí)采用了4節(jié)可充電電池經(jīng)電池盒串聯(lián)的方案,以降低后續(xù)制作成本。考慮到電壓輸出端的單一性,我們考慮采用10V穩(wěn)壓管另做一路電源輸出,為電機(jī)提供工作電壓,在一定程度上可提高電機(jī)功率,提高整車運(yùn)行速度。
電機(jī)驅(qū)動(dòng)模塊:
考慮到電機(jī)驅(qū)動(dòng)集成芯片的價(jià)格比較高(18~30元/片),我們舍棄了采用電機(jī)驅(qū)動(dòng)芯片驅(qū)動(dòng)的方案,轉(zhuǎn)而尋求分立元件模擬電路驅(qū)動(dòng),經(jīng)最終選擇我們采取了利用雙三極管控制開關(guān)電路,利用三極管的反應(yīng)靈敏性,并將其一端接在MCU的I/O口上,可以通過控制I/O口輸出0、1脈沖數(shù)量比來控制三極管開關(guān),以達(dá)到控制輸出電壓的目的。驅(qū)動(dòng)電路圖見附件。
主控程序:
為了降低程序復(fù)雜性,我們使用了3個(gè)I/O口,一個(gè)I/O口用來接收紅外部分電平轉(zhuǎn)換,檢測障礙物,另外兩個(gè)I/O口端接電機(jī)驅(qū)動(dòng)電路,用程序使其產(chǎn)生0、1脈沖數(shù)量比來控制驅(qū)動(dòng)電路開關(guān)。最終實(shí)現(xiàn)速度差以實(shí)現(xiàn)轉(zhuǎn)向避障。
主控程序如下:
/* *****************************
程序開發(fā)環(huán)境Keil uVision3
語言:C
編寫者:孫學(xué)軍
時(shí)間:2010/04/04
***************************** */
/* *****************************
主程序及注釋如下:
***************************** */
#includereg52.h> //添加函數(shù)庫
#define uint unsigned int //宏定義
#define uchar unsigned char //宏定義
sbit s=P3^5; //定義紅外避障檢測端口
sbit m1=P3^4; //定義電機(jī)M1電平輸出端口
sbit m2=P3^6; //定義電機(jī)M2電平輸出端口
void delay_ms(uint z); //聲明延時(shí)函數(shù)
main() //主函數(shù)
{
uint i=0; //初始值設(shè)定
m1=1;
m2=1;
while(1) //無限循環(huán)
{
if(s==0) //S=0表示前方有障礙物 進(jìn)行轉(zhuǎn)向
{
for(i=0;i5;i++)
{
m1=0;
m2=1;
delay_ms(15); //狀態(tài)保持15ms
m1=1;
m2=1;
delay_ms(5); //狀態(tài)保持5ms
}
}
if(s==1) //S=1表示前方無障礙物 直線行駛
{
m1=1;
m2=1;
delay_ms(10); //狀態(tài)保持10ms
}
}
}
void delay_ms(uint z) //延時(shí)函數(shù) 循環(huán)嵌套原理
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/* *****************************
程序結(jié)束,經(jīng)測試程序符合硬件,功能達(dá)到預(yù)期目標(biāo)。
***************************** */
————————————————————功能擴(kuò)展——————————————————————————
1:本車人機(jī)交互性不強(qiáng),車體速度無顯示、障礙物有無顯示不明顯,無轉(zhuǎn)向燈提示
預(yù)期可以增加速度測量以及液晶或數(shù)碼管顯示模塊,顯示模塊可以附在車體本身,也可以單獨(dú)成模塊,利用無線傳輸將數(shù)據(jù)從車體發(fā)送到終端顯示。
2:增加自動(dòng)循跡功能
3:增加自動(dòng)剎車功能
4:遙控功能
————————————————————完畢————————————————————————————
歡迎探討,大家共同學(xué)習(xí)進(jìn)步,歡迎高手指點(diǎn)!
燃?xì)鈭?bào)警器相關(guān)文章:燃?xì)鈭?bào)警器原理
評(píng)論