機(jī)器人設(shè)計(jì)說(shuō)明書(shū)
《機(jī)器人設(shè)計(jì)說(shuō)明書(shū)》由會(huì)員分享,可在線閱讀,更多相關(guān)《機(jī)器人設(shè)計(jì)說(shuō)明書(shū)(7頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、機(jī)器人一南方小子設(shè)計(jì)及功能說(shuō)明 一. 機(jī)器人設(shè)計(jì)所需部件 我們制作的機(jī)器人所用到的部件: 一個(gè)L293D驅(qū)動(dòng)模塊,四個(gè)直流電機(jī),四個(gè)紅外線反射傳感器,一塊AT89S52 單片機(jī),四個(gè)5.8cm小輪,一個(gè)萬(wàn)向輪,一個(gè)12MHz的晶振,導(dǎo)線若干,電容 若干,芯片若干 其中: 直流電機(jī)1驅(qū)動(dòng)輸出; 直流電機(jī)2驅(qū)動(dòng)輸出; 直流電機(jī)3驅(qū)動(dòng)輸出; 直流電機(jī)4驅(qū)動(dòng)輸出; 5V尋跡ARM控制,可以方便的控制直流電機(jī)速度和方向 可以方便的控制 直流電機(jī)速度; 單片機(jī)有四組接口可以為接紅外避障接口。 二. 機(jī)器人系統(tǒng)硬件設(shè)計(jì) 1 ?電源模塊設(shè)計(jì) 根據(jù)材料我們選用兩節(jié)3.6V鋰電池作為輸
2、入電源,由于 52單片機(jī)要求輸 入電壓為+5V我們采用7805穩(wěn)壓后供電。 2. 驅(qū)動(dòng)模塊設(shè)計(jì) 我們所用的驅(qū)動(dòng)模塊為L(zhǎng)293D驅(qū)動(dòng)模塊, 可以 直接驅(qū)動(dòng)4路3- 16V 直流電機(jī),并提供了 5V輸出接口(最低只 要6V),可以給5V單片機(jī)電路系統(tǒng)供電,支持3.3V MCU ARM控制, 可以方便的控制直流電機(jī)速度和方向 ,也可以控制2相步進(jìn)電機(jī),5線4 相步進(jìn)電機(jī)。驅(qū)動(dòng)模塊使用兩個(gè)繼電器和四個(gè)三極管為主要部件構(gòu)成驅(qū)動(dòng)電路。 可以分別控制四個(gè)電機(jī)正轉(zhuǎn)?反轉(zhuǎn)和停轉(zhuǎn)。其中四組信號(hào)線可以接入單片機(jī)。 3. 紅外線傳感模塊設(shè)計(jì) 紅外線傳感模塊主要有四個(gè)紅外對(duì)管,電阻和發(fā)光二極管組成;三個(gè)紅
3、外 線反射傳感器作為機(jī)器人的尋跡功能使用,另外一個(gè)作為機(jī)器人的探頭用以避 障探測(cè);紅外對(duì)管由發(fā)射管和三極管組成,當(dāng)遇到黑線沒(méi)有反射時(shí)接收三極管 不導(dǎo)通,相應(yīng)輸出端輸出高電平,其他時(shí)刻接收三極管導(dǎo)通,輸出端被下拉為 低電平。其紅外探頭接口有三條線組成: 紅線:接4.5-5V 電源高電平 黃色線:信號(hào)線,接單片機(jī),輸出 TTL電平給單片機(jī),用以測(cè)量紅外光 值 黑線:GND OVt源低電平 4. 附加硬件設(shè)備設(shè)計(jì) 為了便于機(jī)器人更好越障和上坡,我們?cè)跈C(jī)器人尾部附加設(shè)計(jì)一個(gè)萬(wàn)向輪, 避免機(jī)器人在越障時(shí)后輪被卡在障礙物上以及防止機(jī)器人上坡時(shí)機(jī)器人后倒。 三. 機(jī)器人系統(tǒng)軟件設(shè)計(jì) 1. 電
4、機(jī)程序設(shè)計(jì) 直流電機(jī)驅(qū)動(dòng)比較簡(jiǎn)單,不像步電機(jī)那樣需要給高低電平脈沖直流電機(jī)只 要給高低電平就可以轉(zhuǎn)只要 PWM=即高電平,電機(jī)就可以轉(zhuǎn),DIROO/I則控制電 機(jī)的正反轉(zhuǎn)。 2.尋跡程序控制O1 尋跡其實(shí)是對(duì)模塊輸出端高低電平的讀取,只要實(shí)現(xiàn)四個(gè) IO 口即可實(shí)現(xiàn)所 #defi ne Left_moto_go 左邊兩個(gè)電機(jī)向前走一 - #defi ne Left_moto_back 左邊兩個(gè)電機(jī)向后轉(zhuǎn) #defi ne Left_moto_Stop 左邊兩個(gè)電機(jī)停轉(zhuǎn) #defi ne Right_moto_go {P1_0=0,P1_ 1= 1,P1_2=0,P1_3=
5、1;}
{P1_0=0,P1_ 仁 0,P1_2=0,P1_3=0;} //
{P1_4=1,P1_5=0,P1_6=1,P1_7=0;}
//
//
有的尋跡讀取,當(dāng)讀到一時(shí),表示相應(yīng)未知的紅外對(duì)管在黑線上。經(jīng)尋跡程序 控制可實(shí)現(xiàn)機(jī)器人沿S型路線行走。
尋跡程序:
#i nclude
6、一 路輸出信號(hào)即中控板上面標(biāo)記為 OUT1 #define Left_2_led P3_5 //P3_5 接四路尋跡模塊接口第二 路輸出信號(hào)即中控板上面標(biāo)記為 OUT2 #define Right_1_led P3 1_6 //P3_6 接四路尋跡模塊接口第三 路輸出信號(hào)即中控板上面標(biāo)記為 OUT3 #define Right_2」ed P3_7 //P3_7 接四路尋跡模塊接口第四 路輸出信號(hào)即中控板上面標(biāo)記為 OUT4 {P1_0=1,P1_ 仁 0,P1_2=1,P1_3=0;} // 右邊兩個(gè)電機(jī)向前走 #d
7、efine Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} // 右邊兩個(gè)電機(jī)向前走 #define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} // 右邊兩個(gè)電機(jī)停轉(zhuǎn) 一 一 一 一 一 一 un sig ned char pwm_val_left =0; un sig ned char push_val_left =1;// 左電機(jī)占空比 10/40 un sig ned char pwm_val_right =0; un sig ned char push_val_right=1
8、;〃 右電機(jī)占空比 10/40
bit Right_moto_stop=1;
bit Left_moto_stop =1; //延時(shí)函數(shù)
void delay (un sig ned int k)
{
un sig ned int x,y; for(x=0;x 9、oid)
{
if(Left_moto_stop)
{ 一 一
if(pwm_val_left<=push_val_left) Left_moto_pwm=1;
else
Left_moto_pwm=O;
if(pwm_val_left>=10) pwm_val_left=O;
} 一 一
else Left_moto_pwm=0;
} 一 一
void pwm_out_right_moto(void)
{ --- if(Right_moto_stop)
{ 一 一
if(pwm_val_right<=push_val_right)
Right_moto_pwm= 10、1;
else
Right_moto_pwm=0;
if(pwm_val_right>=10) pwm_val_right=0;
} 一 一
else Right_moto_pwm=0;
} 一 一
/*TIMER0中斷服務(wù)子函數(shù)*/
void timer。()in terrupt 1 using 2
{
TH0=0XF8; //1Ms 定時(shí)
TL0=0X30;
pwm_val_left++; pwm_val_right++; pwm_out_left_moto(); pwm_out_right_moto();
} ---
/*--主函數(shù)--*/ void ma 11、in (void)
{
TMOD=0X01;
TH0= 0XF8; //1ms 定時(shí)
TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
delay(100); run();
/*無(wú)限循環(huán)*/
while(1)
//有信號(hào)為0沒(méi)有信號(hào)為1 if(Left_2_led==0&&Right_1 _led==0) run();
else
//右邊檢測(cè)到黑線
{
if(Right_1_led==1 &&Left_2 _led==0)
{
Left_moto_go; //左邊兩個(gè)電機(jī)正轉(zhuǎn)
Right_moto_back; // 右邊兩個(gè)電機(jī)反轉(zhuǎn)
} 12、 ~ 一
if(Left_2」ed==1 &&Right_1」ed==0) // 左邊檢測(cè)到黑線
{
Right_moto_go; //右邊兩個(gè)電機(jī)正轉(zhuǎn)
Left_moto_back; //左邊兩個(gè)電機(jī)反式開(kāi)始轉(zhuǎn)
起
3.
避障部分主要有一個(gè)紅外探頭讀取,讀取后以脈沖形式傳入到控制系統(tǒng), 以控制機(jī)器人避開(kāi)障礙物后尋跡返回原來(lái)路線繼續(xù)前進(jìn)
避障程序:
終
占
#in clude 13、P0_0 //P3_4 接四路尋跡模塊接口第三
路輸出信號(hào)即中控板上面標(biāo)記為 0UT3
#defi ne Right_1」ed
路輸出信號(hào)即中控板上面標(biāo)記為
P0_3
OUT4
#define bi_1」ed P2_7
#defi ne Left_moto_go
//左邊兩個(gè)電機(jī)向前走一 一
〃P3_5 接四路尋跡模塊接口第四
{P1_0=1,P1_ 1= 0,P1_2=1,P1_3=0;}
#defi ne Left_moto_back
左邊兩個(gè)電機(jī)向后轉(zhuǎn)
#defi ne Left_moto_Stop
左邊兩個(gè)電機(jī)停轉(zhuǎn)
#defi ne Right_moto_ 14、go
右邊兩個(gè)電機(jī)向前走
{P1_0=0,P1_ 1= 1,P1_2=0,P1_3=1;}
{P1_0=0,P1_ 仁 0,P1_2=0,P1_3=0;}
{P1_4=1,P1_5=0,P1_6=1,P1_7=0;}
//
//
//
#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //
右邊兩個(gè)電機(jī)向后走一 一 一 一 一 一
#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //
右邊兩個(gè)電機(jī)停轉(zhuǎn) 一 一 一 一 一 一
void run(v 15、 oid)
{
Left_moto_go ; // 左電機(jī)往前走
Right_moto_go ; // 右電機(jī)往前走
}
void stop(void)
{
Left_moto_Stop ; // 左電機(jī)往前走
Right_moto_Stop; // 右電機(jī)往前走
} 一 一
//前速后退
void backr un(v oid)
{
Left_moto_back ; // 左電機(jī)往后走
Right_moto_back ; // 右電機(jī)往后走
} 一 一
//左轉(zhuǎn)
void Leftr un(v oid)
{
Right_moto_Stop ; // 左電 16、機(jī)往前走
Left_moto_go ; // 右電機(jī)往前走
}
//右轉(zhuǎn)
void rightr un(v oid)
{
Right_moto_go ; // 左電機(jī)往前走
Left_moto_Stop ; // 右電機(jī)往前走
}
/*--主函數(shù)--*/
void ma in (void)
{
stop();
while(1)
{
if(Left_1_led ==0&&Right_1_led==O&&zhong_1」ed==0) run();
if(Left_1_led ==1 &&Right_1_led==0)
rightru n();
if( Right 17、_1_led==1 &&Left_1_led ==0)
Leftru n();
if(zho ng_1_led==1)
run();
if(bi_1」ed==0)
{ {un sig ned int x,y;
for(x=0;x<10;x++) for(y=0;y<1000;y++) backr un();
} {
un sig ned int x,y;
for(x=0;x<20;x++) for(y=0;y<1000;y++) rightru n();
}
{
un sig ned int x,y;
for(x=0;x<50;x++) for(y=0;y<1000; 18、y++) run();
}
{
un sig ned int x,y;
for(x=0;x<20;x++) for(y=0;y<1000;y++) leftru n();
}}
拐右制控序程
}}
四. 機(jī)器人系統(tǒng)調(diào)試
1. 機(jī)器人系統(tǒng)硬件調(diào)試
系統(tǒng)硬件是否符合要求將直接將直接決定著整套系統(tǒng)的正常運(yùn)行,是軟件 調(diào)試的基本條件,在本次硬件系統(tǒng)的調(diào)試是分模塊進(jìn)行的。先調(diào)試5V穩(wěn)壓電源, 電壓為4.98~5.01 ,在正常范圍內(nèi)。驅(qū)動(dòng)模塊的調(diào)試選擇 5V和GND乍為高低電 平的I/O ,接一個(gè)電機(jī)在輸出端和 DIR,觀察電機(jī)轉(zhuǎn)動(dòng)符合條件。
2. 機(jī)器人系統(tǒng)軟件調(diào)試
系統(tǒng)軟件是 19、使用模塊化編程的,首先完成單元功能模塊的調(diào)試 ,然后對(duì)多
個(gè)模塊整合進(jìn)行系統(tǒng)的調(diào)試。
聯(lián)機(jī)調(diào)試是最重要的一部分,同時(shí)也是本系統(tǒng)成功的關(guān)鍵,有前面的硬件 調(diào)試和軟件的分開(kāi)調(diào)試,系統(tǒng)的聯(lián)合調(diào)試也就顯得迎刃而解。
五?功能說(shuō)明
通過(guò)以上軟硬件的設(shè)計(jì)和調(diào)試之后,我們所制作出來(lái)的機(jī)器人基本上擁有尋 跡,避障,越障,上下坡等功能。
1. 尋跡功能
機(jī)器人的尋跡功能是我們?cè)跈C(jī)器人能在直線行走的程序的基礎(chǔ)上進(jìn)行尋跡 程序設(shè)計(jì)的,通過(guò)通過(guò)尋黑或?qū)ぐ椎某绦蛟O(shè)計(jì)即可實(shí)現(xiàn)機(jī)器人沿黑跡或白跡行 走的功能。
2. 避障功能
機(jī)器人的避障功能主要是通過(guò)紅外線傳感器檢測(cè)到障礙物信號(hào)以脈沖的形 式傳送到控制系統(tǒng)控制機(jī)器人行走方向,避開(kāi)障礙物。
3. 越障功能
為了使機(jī)器人能越過(guò)障礙物,我們?cè)跈C(jī)器人的尾部安裝一個(gè)萬(wàn)向輪是器人在越 障是時(shí)的助推力,避免機(jī)器人在越障時(shí)后倒。
參考文獻(xiàn):
吳黎明
第一版
《單片機(jī)原理及應(yīng)用技術(shù)》
譚浩強(qiáng)
第二版
《C程序設(shè)計(jì)》
《單片機(jī)
C語(yǔ)言入門(mén)教程》
《傳感器檢測(cè)技術(shù)與應(yīng)用》
隊(duì)名:南方小子
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 火力發(fā)電廠各設(shè)備的主要作用大全
- 3.高壓電工考試判斷練習(xí)題含答案
- 企業(yè)電氣防爆知識(shí)
- 13 低壓電工電工作業(yè)模擬考試題庫(kù)試卷含答案
- 電氣設(shè)備維修的十項(xiàng)原則
- 2.電氣電纜與直流模擬考試復(fù)習(xí)題含答案
- 電氣節(jié)能措施總結(jié)
- 2.電氣電機(jī)(一)模擬考試復(fù)習(xí)題含答案
- 接地電阻測(cè)量原理與測(cè)量方法
- 3.高壓電工作業(yè)模擬考試題庫(kù)試卷含答案
- 礦山維修電工安全技術(shù)操作規(guī)程
- 電工基礎(chǔ)口訣總結(jié)
- 3.某電廠值長(zhǎng)面試題含答案解析
- 電工基礎(chǔ)知識(shí)順口溜
- 配電系統(tǒng)詳解