《機器人設計說明書》由會員分享,可在線閱讀,更多相關《機器人設計說明書(7頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、機器人一南方小子設計及功能說明
一. 機器人設計所需部件
我們制作的機器人所用到的部件:
一個L293D驅動模塊,四個直流電機,四個紅外線反射傳感器,一塊AT89S52 單片機,四個5.8cm小輪,一個萬向輪,一個12MHz的晶振,導線若干,電容 若干,芯片若干
其中:
直流電機1驅動輸出;
直流電機2驅動輸出;
直流電機3驅動輸出;
直流電機4驅動輸出;
5V尋跡ARM控制,可以方便的控制直流電機速度和方向 可以方便的控制
直流電機速度;
單片機有四組接口可以為接紅外避障接口。
二. 機器人系統(tǒng)硬件設計
1 ?電源模塊設計
根據(jù)材料我們選用兩節(jié)3.6V鋰電池作為輸
2、入電源,由于 52單片機要求輸 入電壓為+5V我們采用7805穩(wěn)壓后供電。
2. 驅動模塊設計
我們所用的驅動模塊為L293D驅動模塊, 可以
直接驅動4路3- 16V 直流電機,并提供了 5V輸出接口(最低只
要6V),可以給5V單片機電路系統(tǒng)供電,支持3.3V MCU ARM控制, 可以方便的控制直流電機速度和方向 ,也可以控制2相步進電機,5線4
相步進電機。驅動模塊使用兩個繼電器和四個三極管為主要部件構成驅動電路。 可以分別控制四個電機正轉?反轉和停轉。其中四組信號線可以接入單片機。
3. 紅外線傳感模塊設計
紅外線傳感模塊主要有四個紅外對管,電阻和發(fā)光二極管組成;三個紅
3、外 線反射傳感器作為機器人的尋跡功能使用,另外一個作為機器人的探頭用以避 障探測;紅外對管由發(fā)射管和三極管組成,當遇到黑線沒有反射時接收三極管 不導通,相應輸出端輸出高電平,其他時刻接收三極管導通,輸出端被下拉為 低電平。其紅外探頭接口有三條線組成:
紅線:接4.5-5V 電源高電平
黃色線:信號線,接單片機,輸出 TTL電平給單片機,用以測量紅外光
值
黑線:GND OVt源低電平
4. 附加硬件設備設計
為了便于機器人更好越障和上坡,我們在機器人尾部附加設計一個萬向輪, 避免機器人在越障時后輪被卡在障礙物上以及防止機器人上坡時機器人后倒。
三. 機器人系統(tǒng)軟件設計
1. 電
4、機程序設計
直流電機驅動比較簡單,不像步電機那樣需要給高低電平脈沖直流電機只 要給高低電平就可以轉只要 PWM=即高電平,電機就可以轉,DIROO/I則控制電 機的正反轉。
2.尋跡程序控制O1
尋跡其實是對模塊輸出端高低電平的讀取,只要實現(xiàn)四個 IO 口即可實現(xiàn)所
#defi ne Left_moto_go
左邊兩個電機向前走一 -
#defi ne Left_moto_back
左邊兩個電機向后轉
#defi ne Left_moto_Stop
左邊兩個電機停轉
#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;}
//
//
有的尋跡讀取,當讀到一時,表示相應未知的紅外對管在黑線上。經(jīng)尋跡程序 控制可實現(xiàn)機器人沿S型路線行走。
尋跡程序:
#i nclude
//PWM輸出本尋跡小車不用
//PWM輸出本尋跡小車不用
#defi ne Left_moto_pwm
#defi ne Right_moto_pwm #define Left_1_led P3_
P2_0
P2_1 _4
//P3_4
接四路尋跡模塊接口第
6、一
路輸出信號即中控板上面標記為
OUT1
#define Left_2_led P3_5
//P3_5
接四路尋跡模塊接口第二
路輸出信號即中控板上面標記為
OUT2
#define Right_1_led P3
1_6
//P3_6
接四路尋跡模塊接口第三
路輸出信號即中控板上面標記為
OUT3
#define Right_2」ed P3_7
//P3_7
接四路尋跡模塊接口第四
路輸出信號即中控板上面標記為
OUT4
{P1_0=1,P1_ 仁 0,P1_2=1,P1_3=0;} //
右邊兩個電機向前走
#d
7、efine Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} //
右邊兩個電機向前走
#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //
右邊兩個電機停轉 一 一 一 一 一 一
un sig ned char pwm_val_left =0;
un sig ned char push_val_left =1;// 左電機占空比 10/40
un sig ned char pwm_val_right =0;
un sig ned char push_val_right=1
8、;〃 右電機占空比 10/40
bit Right_moto_stop=1;
bit Left_moto_stop =1; //延時函數(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中斷服務子函數(shù)*/
void timer。()in terrupt 1 using 2
{
TH0=0XF8; //1Ms 定時
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 定時
TL0= 0X30;
TR0= 1;
ET0= 1;
EA = 1;
delay(100); run();
/*無限循環(huán)*/
while(1)
//有信號為0沒有信號為1 if(Left_2_led==0&&Right_1 _led==0) run();
else
//右邊檢測到黑線
{
if(Right_1_led==1 &&Left_2 _led==0)
{
Left_moto_go; //左邊兩個電機正轉
Right_moto_back; // 右邊兩個電機反轉
}
12、 ~ 一
if(Left_2」ed==1 &&Right_1」ed==0) // 左邊檢測到黑線
{
Right_moto_go; //右邊兩個電機正轉
Left_moto_back; //左邊兩個電機反式開始轉
起
3.
避障部分主要有一個紅外探頭讀取,讀取后以脈沖形式傳入到控制系統(tǒng), 以控制機器人避開障礙物后尋跡返回原來路線繼續(xù)前進
避障程序:
終
占
#in clude
#define zho ng_1_led P0_2 〃P3_3 接四路尋跡模塊接口第二
路輸出信號即中控板上面標記為 OUT2
#define Left_1_led
13、P0_0 //P3_4 接四路尋跡模塊接口第三
路輸出信號即中控板上面標記為 0UT3
#defi ne Right_1」ed
路輸出信號即中控板上面標記為
P0_3
OUT4
#define bi_1」ed P2_7
#defi ne Left_moto_go
//左邊兩個電機向前走一 一
〃P3_5 接四路尋跡模塊接口第四
{P1_0=1,P1_ 1= 0,P1_2=1,P1_3=0;}
#defi ne Left_moto_back
左邊兩個電機向后轉
#defi ne Left_moto_Stop
左邊兩個電機停轉
#defi ne Right_moto_
14、go
右邊兩個電機向前走
{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;} //
右邊兩個電機向后走一 一 一 一 一 一
#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} //
右邊兩個電機停轉 一 一 一 一 一 一
void run(v
15、 oid)
{
Left_moto_go ; // 左電機往前走
Right_moto_go ; // 右電機往前走
}
void stop(void)
{
Left_moto_Stop ; // 左電機往前走
Right_moto_Stop; // 右電機往前走
} 一 一
//前速后退
void backr un(v oid)
{
Left_moto_back ; // 左電機往后走
Right_moto_back ; // 右電機往后走
} 一 一
//左轉
void Leftr un(v oid)
{
Right_moto_Stop ; // 左電
16、機往前走
Left_moto_go ; // 右電機往前走
}
//右轉
void rightr un(v oid)
{
Right_moto_go ; // 左電機往前走
Left_moto_Stop ; // 右電機往前走
}
/*--主函數(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();
}}
拐右制控序程
}}
四. 機器人系統(tǒng)調試
1. 機器人系統(tǒng)硬件調試
系統(tǒng)硬件是否符合要求將直接將直接決定著整套系統(tǒng)的正常運行,是軟件 調試的基本條件,在本次硬件系統(tǒng)的調試是分模塊進行的。先調試5V穩(wěn)壓電源, 電壓為4.98~5.01 ,在正常范圍內。驅動模塊的調試選擇 5V和GND乍為高低電 平的I/O ,接一個電機在輸出端和 DIR,觀察電機轉動符合條件。
2. 機器人系統(tǒng)軟件調試
系統(tǒng)軟件是
19、使用模塊化編程的,首先完成單元功能模塊的調試 ,然后對多
個模塊整合進行系統(tǒng)的調試。
聯(lián)機調試是最重要的一部分,同時也是本系統(tǒng)成功的關鍵,有前面的硬件 調試和軟件的分開調試,系統(tǒng)的聯(lián)合調試也就顯得迎刃而解。
五?功能說明
通過以上軟硬件的設計和調試之后,我們所制作出來的機器人基本上擁有尋 跡,避障,越障,上下坡等功能。
1. 尋跡功能
機器人的尋跡功能是我們在機器人能在直線行走的程序的基礎上進行尋跡 程序設計的,通過通過尋黑或尋白的程序設計即可實現(xiàn)機器人沿黑跡或白跡行 走的功能。
2. 避障功能
機器人的避障功能主要是通過紅外線傳感器檢測到障礙物信號以脈沖的形 式傳送到控制系統(tǒng)控制機器人行走方向,避開障礙物。
3. 越障功能
為了使機器人能越過障礙物,我們在機器人的尾部安裝一個萬向輪是器人在越 障是時的助推力,避免機器人在越障時后倒。
參考文獻:
吳黎明
第一版
《單片機原理及應用技術》
譚浩強
第二版
《C程序設計》
《單片機
C語言入門教程》
《傳感器檢測技術與應用》
隊名:南方小子