摘 要:介紹基于PIC單片機(jī)的越障機(jī)器人紅外測距系統(tǒng),給出了系統(tǒng)的硬件結(jié)構(gòu),電路設(shè)計和軟件設(shè)計。試驗結(jié)果表明,設(shè)計方案可行,系統(tǒng)工作穩(wěn)定可靠。
關(guān)鍵詞:紅外傳感器;PIC16F877;A/D轉(zhuǎn)換
Rangemeasurement Infrared System Based on PIC16F877
SONG Yiqun, DU Huasheng, DONG Erbao
(University of Science and Technology of China, Hefei 230027, China)
Abstract: This article introduces a kind of rangemeasurement system in mobile robot based on PIC microcontroller and infrared sensor. It presents the hardware configuration, the electric circuit design and the software design. It is proved by experiment that the system works stably and reliably.
Key words: infrared sensor; PIC16F877; A/D converter
越障機(jī)器人在行進(jìn)過程中需要不斷地獲取關(guān)于前方障礙的信息,從而對機(jī)器人進(jìn)行有效地控制。由于機(jī)器人體積小,對傳感器要求精度高,因此采用單片機(jī)進(jìn)行控制。PIC16F877內(nèi)有8通道、具有10位精度的A/D轉(zhuǎn)換模塊,我們利用這種單片機(jī)設(shè)計了一個紅外測距系統(tǒng)。
1紅外傳感器的原理
傳感器的紅外發(fā)光管發(fā)出紅外光,光敏接收管接收前方物體反射光;接收管接收的光強(qiáng)隨反射物體的距離變化,據(jù)此判斷前方是否有障礙物并根據(jù)接收信號強(qiáng)弱判斷物體的距離。
2PIC16F877簡介
PIC16F877單片機(jī)是由美國Microchip公司生產(chǎn)的8位單片微機(jī),具有獨(dú)特的RISC(精簡指令集)結(jié)構(gòu),數(shù)據(jù)總線和指令總線分離的哈佛總線結(jié)構(gòu),使指令只有單字長的特性,且允許指令碼的位數(shù)可多于8位的數(shù)據(jù)位數(shù),這與傳統(tǒng)的采用CISC結(jié)構(gòu)的8位單片機(jī)相比,可以達(dá)到2∶1的代碼壓縮,速度提高4倍。
P1C16F877芯片上集成有8K的Flash可重復(fù)編程存儲器,368byte的數(shù)據(jù)存儲器,256byte的EEPROM數(shù)據(jù)存儲器,3個定時/計數(shù)器,2個集捕捉、比較、脈寬調(diào)制3項功能于一身的CCP模塊,同步串行通信端口,10位多通道A/D轉(zhuǎn)換器,以及時鐘、上電復(fù)位、看門狗等。芯片引腳共40條。
3基于PIC16F877的紅外測距系統(tǒng)
3.1硬件電路設(shè)計
首先利用紅外發(fā)光管TLN205發(fā)射紅外光,紅外光在遇到前面的障礙物反射,由紅外接收管TPS708接收,此時TPS708會產(chǎn)生一個與光強(qiáng)相對應(yīng)的電流。電流經(jīng)由LM358兩級放大后,在輸出端可以得到一個0~3V的模擬電壓,作為PIC16F877單片機(jī)RA0端口的模擬輸入量。單片機(jī)在完成初始化和端口選擇后,即開始進(jìn)行A/D轉(zhuǎn)換,重復(fù)等待與檢查轉(zhuǎn)換完成標(biāo)志值是否已為零,最后將轉(zhuǎn)換結(jié)果通過譯碼器74LS138在LED上顯示出來。
紅外光發(fā)射及接收電路如圖1所示,Vin為控制輸入信號(采用高低電平輸入),以控制發(fā)光管的開關(guān)。單片機(jī)硬件連接圖電路如圖2所示。
3.2軟件設(shè)計
主程序和A/D轉(zhuǎn)換子程序流程圖如圖3和圖4所示。
3.2.1設(shè)定輸入/輸出引腳
PIC16F877單片機(jī)D口的8個端口作為數(shù)據(jù)輸出使用,同時將A口的RA0引腳設(shè)定為模擬電壓輸入。控制D口輸入/輸出功能的TRISD寄存器(地址為88h)全設(shè)為0;A口輸入輸出功能的TRISA寄存器(地址為85h)〈0〉位為1。PIC指令如下所示:
bankel TRISD;選擇寄存器所在的數(shù)據(jù)存儲體
clrf TRISD;設(shè)定D口為數(shù)據(jù)輸出口
bsf TRISA,0;設(shè)定RA0位輸入口
3.2.2A/D轉(zhuǎn)換
PIC16F877單片機(jī)A/D轉(zhuǎn)換的初始設(shè)定存放在A/DCON1寄存器(地址為9fH)與A/DCON0寄存器(地址為1fH)中。A/D轉(zhuǎn)換初始設(shè)定與選擇模擬輸入端的程序如下:
A/D轉(zhuǎn)換啟動的控制信號是A/DCON0寄存器的〈2〉位,設(shè)為1表示啟動轉(zhuǎn)換,設(shè)為0表示不要轉(zhuǎn)換。A/D轉(zhuǎn)換的結(jié)果放在A/DRESH及A/DRESL寄存器,程序如下:
4試驗結(jié)論
按上述設(shè)計,我們制作了實際的紅外測距系統(tǒng),并進(jìn)行了測量實驗。圖5為實驗曲線,其中虛線代表擬合后的二次曲線,曲線擬合采用matlab提供的擬合函數(shù)polyfit。從圖中可以看出,所設(shè)計的紅外傳感器能夠?qū)崿F(xiàn)0~25cm之間的距離測量,且具有較高的精度,完全能夠滿足控制要求。










