摘 要 隨著數字技術的快速發展,數字技術被廣泛應用于智能控制的領域中。單片機以體積小、功能全、價格低廉、開發方便的優勢得到了許多電子系統設計者的青睞。它適合于實時控制,可構成工業控制器、智能儀表、智能接口、智能武器裝置以及通用測控單元等。 本文以STC89C52單片機為核心設計了智能機器人系統,本機器人實現了能在人一區域內沿引導線行走,自動繞鄣,在有光源引導的條件下能沿光源行走。同時,能檢測埋在地下的金屬片,發出聲光知識信息,并能實時儲存,顯示檢測到的斷點數目以及各斷點至起跑線間的距離,最后能停在指定地點,顯示整個運行的時間。 關鍵詞 單片機 傳感器 L298 A/D LCD12864 Abstract With the development of thedigital technology, digital technology has been widely applied in the field ofintelligent control. MCU with small volume, complete functions, low price,convenient development advantage by many electronic system designers favor. Itis suitable for real-time control, can form industrial controllers, intelligentinstruments, intelligent interface, intelligent weapon device and universalmeasurement and control unit. To STC89C52 microcontrolleras the core design of intelligent robot system, this robot can walk in a regionalong the guide line, automatic winding Zhang, walking along the lightconditions of a light guide. Able to detect buried in the underground metalsheets, audible and visual knowledge and information, and real-time storage,display the number of breakpoints detected and the distance between eachbreakpoint to the starting line, the final stop at the designated locations, toshow the entire run time. Key words Singlechipmicrocomputer Sensor L298 A/D LCD12864 目錄 第1章 緒論 1.1課題研發背景 隨著控制技術、計算機技術、信息處理技術和傳感器技術的發展,智能機器人無論是在工業領域還是消費電子領域都已經扮演了非常重要的角色,已成為人工智能研究和發展的熱點之一。在語音控制機器人領域,有研究表明已成功地將連續隱馬爾可夫模型(CHMM,Centrifugal Pump based onContinuous HiddenMarkov Model)模型應用于定點數字信號處理器(DSP, Digital Signal Processor)上,并實現了對機器人的語音控制。關于傳感測距方面,使用多傳感器快速測量智能機器人與障礙物之間距離的方法,使機器人不僅具備語音識別功能,而且能實現智能避障。而關于家用室內機器人的應用也有相關研究,文獻[4]探究了一種通用并有效的智能移動機器人嵌入式控制平臺,并設計了一套能滿足要求的低成本的機器人定位系統以及自動充電系統。這里設計的移動音樂機器人即屬于智能機器人范疇,該音樂機器人集多種功能于一體,不但有陪人玩耍的娛樂功能還有保護家庭安全的安防功能。 1.2 設計的目的和意義 隨著數字技術的快速發展,數字技術被廣泛應用于智能控制的領域中。單片機以體積小、功能全、價格低廉、開發方便的優勢得到了許多電子系統設計者的青睞。它適合于實時控制,可構成工業控制器、智能儀表、智能接口、智能武器裝置以及通用測控單元等。 本作品以STC98C52單片機為核心,利用傳感器作為機器人的眼睛;單片進行處理判斷,然后驅動直流減速電機進行相應的動作,并采用12864液晶顯示記錄一些有用的信息;本設計全部采用通用器件,在達到指標要求的前提下降低了功耗和成本。 第2章 方案設計 本設計STC98C52單片機為核心,利用傳感器作為機器人的眼睛;單片進行處理判斷,然后驅動直流減速電機進行相應的動作,并采用12864液晶顯示記錄一些有用的信息。 | | | | | | | | | | | | | | | | | | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif | | | | | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image003.gif | | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif | | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif | | | | | | | | | | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif | | | |
圖2.1方案原理圖 2.1循跡方案設計 當循跡模塊尋到黑線時輸出低電平,否則輸出高電平,由此驅動電機動作,邏輯功能表如下 表2.1循跡電路功能表 2.2尋光方案設計 尋光電路由三個光敏電阻組成分別位于機器人的、中、右,并通過A/D采集光強同時比較出哪一方向上的光照最強,并作出相應的動作,邏輯表如下所示 表2.1循跡電路功能表 2.3機器人按鍵設計 洗衣機面板上有2個按鈕K1、K2、K2 (1)K1是電源的總開關按鍵。 (2)K2 進入循跡工作模式。 (3)K3 進入尋光工作模式。 第3章 硬件設計 3.1單片機型號方案選擇 方案 1:采用 ATmeg16單片機對信號處理,優點速度快,功能強大,但價格貴,操作較復雜,不適合初學者 方案 2:采用 AT89c51單片機對信號處理,優點操作簡單,接口方便,具備所有單片機的基本功能,容易學,價格便宜。 經過兩個方案對比,應選擇方案2,采用簡單易學的STC89C52作為本機器人的控制核心。 3.2顯示方案的的選擇 方案 1:采用1602液晶顯示,優點操作簡單,電路簡單,小巧,缺點不能顯示漢字。 方案 2:采用12864液晶顯示,優點可以串行通信顯示,節省I/Ok口,操作簡單,電路簡單,自帶字庫,能顯示漢字,缺點體積較大。 經過兩個方案對比,應選擇方案2,采用可顯示漢字的12864液晶進行顯示。 3.3循跡傳感器方案的選擇 方案 1:利用紅外發射管和紅外一體化接收頭做循跡裝置,優點距離遠,抗干擾強,電路簡單,缺點驅動復雜,發射管需要38KHz脈沖驅動,操作復雜。 方案 2:電子競賽專用RPR220 反射型光電探測器,靈敏度高,使用方便,缺點電路較復雜。 經過兩個方案對比,應選擇方案2,使用電子競賽專用RPR220 反射型光電探測器作為循跡傳感器。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg 圖3.3循跡傳感器 3.4避障傳感器方案的選擇 方案 1:采用超聲波模塊避障,優點避障距離精確,操作復雜,實現較困難。 方案 2:采用光電開關模塊,優點操作簡單,電路簡單,缺點避障距離需要手動調節。 經過兩個方案對比,應選擇方案2,采用光電開關模塊實現避障、繞障。 3.5金屬檢測方案的選擇 方案 1:采用自制電渦流傳感器,可實現金屬檢測,電路復雜,供電需要交流電源,實現較困難。 方案 2:采用金屬檢測開關,優點操作簡單,電路簡單。經過兩個方案對比,應選擇方案2,采用金屬檢測開關實現金屬檢測。 3.6尋光電路方案的選擇 方案 1:采用由光敏電阻和三極管組成的開關型尋光電路,優點電路簡單,缺點只有開光量輸出,沒有明顯的光強比較。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg 圖3.6.1尋光開關電路 方案 2:采用半臂測量電路,用A/D進行采集,優點有明顯的光強比較,缺點電路較復雜。 經過兩個方案對比,應選擇方案2,半臂A/D采集光強。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg 圖3.6.2半臂A/D采集光強 3.7A/D方案的選擇 方案 1:采用ADC0809,八通道8位A/D,并行傳輸數據,操作簡單,但需要大量I/O口。 方案 2:采用ADC0834,四通道8位串行A/D,可串行通信,節省I/O口資源。 經過兩個方案對比,應選擇方案2,采用ADC0834進行A/D轉換。 3.8電機方案的選擇 方案 1:采用步進電機,定位準確,可以快速急停,缺點電路復雜,控制較難。 方案 2:直流減速電機,控制方便,容易實現。 經過兩個方案對比,應選擇方案2,采用直流減速電機。 3.9機器人里程測量方案 方案 1:采用光電碼盤,計算輪子的圈數,優點計算精確,缺點程序算法復雜,安裝不方便。 方案 2:采用霍爾傳感器,計算輪子的圈數,優點操作簡單,電路容易實現,缺點只能記車輪的整圈數。 經過兩個方案對比,應選擇方案2,采用霍爾傳感器測量里程,雖然只能計算整全數,但對于本設記,精度已經足夠了。 3.10單片機最小系統電路分析 通過AVR單片機對數據處理,為了單片機工作最優狀態,復位電路、震蕩電路、ISP下載電路選擇該公司給出的標準接法。連接電路如圖 3.2所示。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg 圖3.10單片機最小系統電路圖 3.11液晶顯示電路設計與分析 通過12864液晶顯示數據,使用串行通信方式控制12864。連接電路如圖 3.9所示。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 圖3.11液晶顯示電路圖 3.12 報警電路 本設計采用無源蜂鳴器,單片機必須輸出固定頻率的方波信號,其工作電壓范圍寬4~12V,需要外圍元件少。通過單片機輸出高電平來控制蜂鳴器報警。具體電路如圖所示: file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif 圖3-12 蜂鳴器報警電路 3.13 電機驅動電路 采用集成芯片L298驅動電路電路控制電機,簡單方便,如圖所示。 file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg 第4章 軟件設計 程序設計使用中斷方式對數據進行顯示,實現簡單,方便快捷?傮w設計流程如圖4.1所示。
| | file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif |
圖4.1程序流程圖 結 論 隨著集成電路和計算機技術的迅速發展,使電子儀器的整體水平發生巨大變化,傳統的儀器逐步的被智能儀器所取代。智能儀器的核心部件是單片機,因其極高的性價比得到廣泛的應用與發展,從而加快了智能儀器的發展。而傳感器作為測控系統中對象信息的入口,越來越受到人們的關注。傳感器好比人體“五官”的工程模擬物,它是一種能將特定的被測量信息(物理量、化學量、生物量等)按一定規律轉換成某種可用信號輸出的器件或裝置本次設計中的半橋電子稱就是在以上儀器的基礎上設計而成的。因此,只有充分了解有關智能儀器、單片機、傳感器以及各部分之間的關系才能達到要求。 參考文獻 1 李勛 單片機微型計算機大學讀本.[M]北京:北京航空航天大學出版社,2002 3 王治剛.單片機應用技術與實訓.[M]北京:清華大學出版社,2004 4 張積東等.單片機51/98開發與應用.[M]北京:電子工業出版社,2004 5 周航慈等. 單片機程序設計基礎.[M]北京:北京航空航天大學出版社,1997 6 彭為. 單片機典型系統設計實例精講.北京:電子工業出版社,2006 7 何立民等. 單片機高級教程.北京:北京航空航天大學出版社,2000 8 盧艷軍. 單片機基本原理及應用系統.北京:機械工業出版社,2005 9 周美娟等. 單片機技術及系統設計.北京:清華大學出版社,2007 10 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,2002 11 黃俊,王兆安.電力電子變流技術.西安交通大學 機械工業出版社 12 陳伯時.電力拖動自動控制系統(第二版).北京:機械工業出版社1997 13 李忠文,安生輝.實用電機控制電路.化學工業出版社 14 丁道宏.電力電子技術.機械工業出版社,1990 附錄1 軟件主程序 #include<iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define RS_CLR PORTB&=~BIT(5)
#define RS_SET PORTB|=BIT(5)
#define RW_CLR PORTB&=~BIT(6)
#define RW_SET PORTB|=BIT(6)
#define EN_CLR PORTB&=~BIT(7)
#define EN_SET PORTB|=BIT(7)
uint wendu,set_warm;
char table[];
char table1[9];
void LCD_write_com(unsignedchar com)
{
RS_CLR;
RW_CLR;
EN_SET;
PORTD= com;
delay_ms(10);
EN_CLR;
}
void LCD_write_Data(unsignedchar Data)
{
RS_SET;
RW_CLR;
EN_SET;
PORTD = Data;
delay_ms(1);
EN_CLR;
}
void LCD_clear(void)
{
LCD_write_com(0x01);
delay_ms(10);
}
void LCD_init(void)
{
LCD_write_com(0x38);
delay_ms(10);
LCD_write_com(0x38);
delay_ms(10);
LCD_write_com(0x38);
delay_ms(10);
LCD_write_com(0x38);
LCD_write_com(0x08);
LCD_write_com(0x01);
LCD_write_com(0x06);
delay_ms(10);
LCD_write_com(0x0C);
}
adc_init()
{
DDRA&=~BIT(0);
PORTA&=~BIT(0);
ADMUX|=0x40;
ADCSRA=0XE0;
SFIOR=0X00;
SREG|=BIT(7);
}
void data_pro(uint temp_l,uint temp_h)
{
uinttemp1,temp2,bb,i;
temp1=temp_h*256;
temp2=temp1+temp_l;
temp2=(temp2*46-1700)/10;
if(temp2<50)
temp2=0;
if(temp2>5000)
temp2=0;
table[3]=temp2/1000;
temp1=temp2%1000;
table[2]=temp1/100;
temp2=temp1%100;
table[1]=temp2/10;
table[0]=temp2%10;
}
void delay_ms(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=1000;y>0;y--);
}
void main()
{
DDRC=0XFF;
DDRA=0XFF;
DDRB=0XFF;
DDRD=0XFF;
LCD_init();
adc_init();
while(1)
{
uint adc_l,adc_h;
adc_l=ADCL;
adc_h=ADCH;
data_pro(adc_l,adc_h);
LCD_write_com(0x84);
LCD_write_Data(0x30+table[3]);
LCD_write_Data(0x2e);
LCD_write_Data(0x30+table[2]);
LCD_write_Data(0x30+table[1]);
LCD_write_Data(0x20);
LCD_write_Data(0x4b);
LCD_write_Data(0x67);
delay_ms(200);
}
} file:///C:/Users/407/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
|