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