寻迹小车的报告
蘇嵌119項目報告
?
?
?
項目題目:?????循跡小車 ????
?
項目成員:?????鄭旭宏 簡雷 ?
?
?
?
?
?
?
?
?
?
2016年9月11日~2016年10月15日
?
?
?
智能尋跡小車的設計?????
Intelligent?Tracing?Car?Design
?
?摘要?
?
????在智能尋跡小車控制系統的設計中,以AT89RD+為核心,用L298N驅動兩個減速電機,當產生信號驅動小車前進時,是通過尋跡模塊里的紅外對管是否尋到黑線產生的電平信號通過LM393再返回到單片機,單片機根據程序設計的要求做出相應的判斷送給電機驅動模塊,讓小車來實現前進、左轉、右轉、停車等基本功能。????尋白線時,外部環境光線的強弱對小車的運動會產生很大的影響,基于此原因,本實驗中的尋跡是指在白色地板上尋黑線。????尋跡是指通過紅外發射管和接收管識別路徑。?
????本實驗的重點有三個方面:1.硬件的設計實現;2.軟件的設計實現;3.方案的比較與論證。????報告共分為五章:?
第一章是智能小車總體概況。介紹了小車的功能及展示了小車模型。????
第二章是系統要求。介紹了小車設計的要求及尋跡的原理。詳細闡述了各模塊的方案比較與論證,最后得出最終方案。?
????第三章是硬件實現及單元電路實現。詳細闡述了各部分電路的設計,并給出了原理圖。?
??????第四章是軟件設計。介紹了設計思想、程序流程圖及具體程序設計。
?
?
目???錄??????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????
第一章??智能小車總體概況????????????????????????????????????????????
1.1?概況?
1.2總體結構圖?
?
第二章?系統設計????????????????????????????????????????????????????
2.1?設計要求????????????????????????????????????????????????????
2.2?小車尋跡的原理??????????????????????????????????????????????
2.3模塊方案比較與論證??????????????????????????????????????????
?
第三章??硬件實現及單元電路設計??????????????????????????????????????
3.1?AT89RD+主控芯片介紹?11?3.2?硬件設計?
3.2.1?紅外對管電路的設計??????????????????????????????????????
3.2.2尋跡紅外對管的安裝??????????????????????????????????????
3.2.3電機驅動電路的設計????????????????????????????????????????
?
第四章??軟件設計??????????????????????????????????????????????????????
4.1軟件設計思想?
4.3尋跡模塊軟件程序設計?
?
?
第一章??智能小車總體概況?
?
??1.1概況?
???智能小車以AT89RD+為核心,經焊接相關芯片用電路板自制而成,通過I/O口檢測信號,輸出信號到L298N,從而驅動兩個減速電機控制其前進?停止?左轉?右轉。檢測信號則為四組紅外發射和接收管,遇到黑線就是高電平,遇到白色就是低電平。
?
第二章?系統設計??
?????????????????????????????
2.1?小車尋跡的原理???????????????????????????????????????????????
這里的循跡是指小車在白色地板上尋黑線行走,通常采取的方法是紅外探測法。??紅外探測法,即利用紅外線在不同顏色的物體表面具有不同的反射性質的特點,在小車行駛過程中不斷地向地面發射紅外光,當紅外光遇到白色紙質地板時發生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機就是否收到反射回來的紅外光為依據來確定黑線的位置和小車的行走路線。紅外探測器探測距離有限,一般最大不應超過3cm。?
?
2.2模塊方案比較與論證?????
????根據設計要求,本系統主要由控制器模塊、尋跡傳感器模塊、直流電機及其驅動模塊、電壓比較模塊等模塊構成。?
為較好的實現各模塊的功能,我分別設計了幾種方案并分別進行了論證。?2.3.1車體設計?
????方案1:購買玩具電動車。購買的玩具電動車具有組裝完整的車架車輪、電機及其驅動電路。但是一般的說來,玩具電動車具有如下缺點:首先,這種玩具電動車由于裝配緊湊,使得各種所需傳感器的安裝十分不方便。其次,這種電動車一般都是前輪轉向后輪驅動,不能適應該題目的方格地圖,不能方便迅速的實現原地保持坐標轉90度甚至180度的彎角。再次,玩具電動車的電機多為玩具直流電機,力矩小,空載轉速快,負載性能差,不易調速。而且這種電動車一般都價格不菲。因此我們放棄了此方案。?
?????方案2:自己制作電動車。經過反復考慮論證,我們制定了左右兩輪分別驅動,后方向輪轉向的方案。即左右輪分別用兩個轉速和力矩基本完全相同的直流電機進行驅動,車體尾部裝一個方向輪。這樣,當兩個直流電機轉向相反同時轉速相同時就可以實現電動車的原地旋轉,由此可以輕松的實現小車坐標不變的90度和180度的轉彎。?
在安裝時保證兩個驅動電機同軸。當小車前進時,左右兩驅動輪與方向輪形成了三點結構。這種結構使得小車在前進時比較平穩,可以避免出現后輪過低而使左右兩驅動輪驅動力不夠的情況。為了防止小車重心的偏移,后方向輪起支撐作用。?
對于車架材料的選擇,鑒于方便性,我選擇了購買器件。綜上考慮,我選擇了方案1。?
?
2.3控制器模塊?
方案1:采用可編程邏輯期間CPLD?作為控制器。CPLD可以實現各種復雜的邏輯功能、規模大、密度高、體積小、穩定性高、IO資源豐富、易于進行功能擴展。采用并行的輸入輸出方式,提高了系統的處理速度,適合作為大規模控制系統的控制核心。但本系統不需要復雜的邏輯功能,對數據的處理速度的要求也不是非常高。且從使用及經濟的角度考慮我放棄了此方案。
?
?
????方案2:采用凌陽公司的16位單片機,它是16位控制器,具有體積小、驅動能力高、集成度高、易擴展、可靠性高、功耗低、結構簡單、中斷處理能力強等特點。處理速度高,尤其適用于語音處理和識別等領域。但是當凌陽單片機應用語音處理和辨識時,由于其占用的CPU資源較多而使得凌陽單片機同時處理其它任務的速度和能力降低。?
本系統主要是進行尋跡運行的檢測以及電機的控制。如果單純的使用凌陽單片機,在語音播報的同時小車的控制容易出現不穩定的情況。從系統的穩定性和編程的簡潔性考慮,我放棄了單純使用凌陽單片機而考慮其它的方案。?
????方案3:采用Atmel公司的AT89RD+單片機作為主控制器。AT89RD+是一個低功耗,高性能的8位單片機,32個IO口,?2個16位可編程定時計數器。?
從方便使用的角度考慮,我選擇了方案3。?2.3.3?尋跡方案?D的設計?
這里的尋跡是指小車在白色地板上,尋著黑線行走,通常采取的方法是以下三種方案。?
????
????方案1:用光敏電阻組成光敏探測器。光敏電阻的阻值可以跟隨周圍環境光線的變化而變化。當光線照射到白線上面時,光線發射強烈,光線照射到黑線上面時,光線發射較弱。因此光敏電阻在白線和黑線上方時,阻值會發生明顯的變化。將阻值的變化值經過比較器就可以輸出高低電平。?
但是這種方案受光照影響很大,不能夠穩定的工作。因此我考慮其他更加穩定的方案。?
????方案2:用紅外發射管和接收管自己制作光電對管尋跡傳感器。紅外發射管發出紅外線,當發出的紅外線照射到白色的平面后反射,若紅外接收管能接收到反射回的光線則檢測出白線繼而輸出低電平,若接收不到發射管發出的光線則檢測出黑線繼而輸出高電平。外部環境對其有一定影響。?
????方案3:用RPR220型光電對管。RPR220是一種一體化反射型光電探測器,其發射器是一個砷化鎵紅外發光二極管,而接收器是一個高靈敏度,硅平面光電三極管。?
RPR220采用DIP4封裝,其具有如下特點:?a.?塑料透鏡可以提高靈敏度。?
b.?內置可見光過濾器能減小離散光的影響。
c.?體積小,結構緊湊。?
d.?當發光二極管發出的光反射回來時,三極管導通輸出低電平。此光電對
管調理電路簡單,工作性能穩定。?
雖然第三種方案最好,但由于不容易買到,所以我選擇了第二種方案。?2.3.4?電機方案設計?
本系統為智能電動車,對于電動車來說,其驅動輪的驅動電機的選擇就顯得十分重要。由于本實驗要實現對路徑的準確定位和精確測量,我們綜合考慮了一下兩種方案。?
?
????方案1:采用步進電機作為該系統的驅動電機。由于其轉過的角度可以精確的定位,可以實現小車前進路程和位置的精確定位。雖然采用步進電機有諸多優點,步進電機的輸出力矩較低,隨轉速的升高而下降,且在較高轉速時會急劇下降,其轉速較低,不適用于小車等有一定速度要求的系統。經綜合比較考慮,我們放棄了此方案。?
????方案2:采用直流減速電機。直流減速電機轉動力矩大,體積小,重量輕,裝配簡單,使用方便。由于其內部由高速電動機提供原始動力,帶動變速(減速)齒輪組,可以產生較大扭力。?
我選擇了此方案2。?
2.5?電機驅動模塊?
方案1:采用專用芯片L298N作為電機驅動芯片。L298N是一個具有高電壓大電流的全橋驅動芯片,它相應頻率高,一片L298N可以分別控制兩個直流電機,而且還帶有控制使能端。用該芯片作為電機驅動,操作方便,穩定性好,性能優良。?
方案2:對于直流電機用分立元件構成驅動電路。由分立元件構成電機驅動電路,結構簡單,價格低廉,在實際應用中應用廣泛。但是這種電路工作性能不夠穩定。?
因此我們選用了方案1。?
?
2.6?最終方案?
經過反復論證,我最終確定了如下方案:?
(1)車體用零器件組裝。?
(2)采用最小系統板作為主控制器。?
(3)用紅外對管進行尋跡。
(4)L298N作為直流電機的驅動芯片。
(5)9v電池,穩壓模塊,穩出5v給單片機工作。
?
紅外對管檢測電路:
?
?
?
?
LN298N驅動模塊:
?
?
?
四、程序
//++++++++++++++++++++++//
#include <reg52.h>
#include"./delay/delay.h"
?
sbit IN1 = P1^0;
sbit IN2 = P1^1;
sbit ENA = P1^2;
sbit IN3 = P1^3;
sbit IN4 = P1^4;
sbit ENB = P1^5;
?
sbit left1 = P0^0;
sbit left2 = P0^1;
sbit right1 = P0^2;
sbit right2 = P0^3;
?
unsigned char zkb1 = 0;
unsigned char zkb2 = 0;
unsigned char t = 0;
?
?
void init()
{
EA = 1;
TMOD |= 0x01;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
TR0 = 1;
}
void timer0() interrupt 1
{
TH0 = (65536 - 100) / 256;
TL0 = (65536 - 100) % 256;
if(t < zkb1)
{
ENA = 1;
}
else
{
ENA = 0;
}
if(t < zkb2)
{
ENB =1;
}
else
{
ENB = 0;
}
++t;
if(t >= 50)
{
t = 0;
}
}
void turn_left1()
{
zkb1 = 13;
zkb2 = 0;
?
}
?
void turn_left2()
{
?
zkb1 = 13;
zkb2 = 0;
}
?
void turn_right1()
{
zkb1 = 0;
zkb2 = 13;
}
?
void turn_right2()
{
zkb1 = 0;
zkb2 = 13;
}
?
void qianjin()
{
zkb1 = 8;
zkb2 = 8;
}
void xunji()
{
unsigned char flag;
? if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))
? {
? flag = 0;
? }
? if((right2 == 0)&&(right1 ==1)&&(left1 == 0)&&(left2 == 0))
? {
? flag = 1;
? }
? if((right2 == 0)&&(right1 == 0)&&(left1 == 1)&&(left2 == 0))
? {
? flag = 2;
? }
? if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 1))
? {
? flag = 3;
? }
? if((right2 == 1)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))
? {
? flag = 4;
? }
? switch(flag)
? {
? case 0:qianjin();break;
?
? case 1:turn_right1();break;
?
? case 2:turn_left1();break;
?
? case 3:turn_left2();break;
?
? case 4:turn_right2();break;
?
? default:qianjin();break;
? }
}
?
void main()
{
init();
// zkb1 = 40;
// zkb2 = 30;
IN1 = 0;
IN2 = 1;
????IN3 = 0;
????IN4 = 1;
while(1)
{
xunji();
}
}
總結
- 上一篇: S32K116调试记录(2)CAN接口调
- 下一篇: OMRON欧姆龙PLC如何实现远程上下载