摘 要:介紹基于PIC單片機的越障機器人紅外測距系統,給出了系統的硬件結構,電路設計和軟件設計。試驗結果表明,設計方案可行,系統工作穩定可靠。
關鍵詞:紅外傳感器;PIC16F877;A/D轉換
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
越障機器人在行進過程中需要不斷地獲取關于前方障礙的信息,從而對機器人進行有效地控制。由于機器人體積小,對傳感器要求精度高,因此采用單片機進行控制。PIC16F877內有8通道、具有10位精度的A/D轉換模塊,我們利用這種單片機設計了一個紅外測距系統。
1紅外傳感器的原理
傳感器的紅外發光管發出紅外光,光敏接收管接收前方物體反射光;接收管接收的光強隨反射物體的距離變化,據此判斷前方是否有障礙物并根據接收信號強弱判斷物體的距離。
2PIC16F877簡介
PIC16F877單片機是由美國Microchip公司生產的8位單片微機,具有獨特的RISC(精簡指令集)結構,數據總線和指令總線分離的哈佛總線結構,使指令只有單字長的特性,且允許指令碼的位數可多于8位的數據位數,這與傳統的采用CISC結構的8位單片機相比,可以達到2∶1的代碼壓縮,速度提高4倍。
P1C16F877芯片上集成有8K的Flash可重復編程存儲器,368byte的數據存儲器,256byte的EEPROM數據存儲器,3個定時/計數器,2個集捕捉、比較、脈寬調制3項功能于一身的CCP模塊,同步串行通信端口,10位多通道A/D轉換器,以及時鐘、上電復位、看門狗等。芯片引腳共40條。
3基于PIC16F877的紅外測距系統
3.1硬件電路設計
首先利用紅外發光管TLN205發射紅外光,紅外光在遇到前面的障礙物反射,由紅外接收管TPS708接收,此時TPS708會產生一個與光強相對應的電流。電流經由LM358兩級放大后,在輸出端可以得到一個0~3V的模擬電壓,作為PIC16F877單片機RA0端口的模擬輸入量。單片機在完成初始化和端口選擇后,即開始進行A/D轉換,重復等待與檢查轉換完成標志值是否已為零,最后將轉換結果通過譯碼器74LS138在LED上顯示出來。
紅外光發射及接收電路如圖1所示,Vin為控制輸入信號(采用高低電平輸入),以控制發光管的開關。單片機硬件連接圖電路如圖2所示。
3.2軟件設計
主程序和A/D轉換子程序流程圖如圖3和圖4所示。
3.2.1設定輸入/輸出引腳
PIC16F877單片機D口的8個端口作為數據輸出使用,同時將A口的RA0引腳設定為模擬電壓輸入??刂艱口輸入/輸出功能的TRISD寄存器(地址為88h)全設為0;A口輸入輸出功能的TRISA寄存器(地址為85h)〈0〉位為1。PIC指令如下所示:
bankel TRISD;選擇寄存器所在的數據存儲體
clrf TRISD;設定D口為數據輸出口
bsf TRISA,0;設定RA0位輸入口
3.2.2A/D轉換
PIC16F877單片機A/D轉換的初始設定存放在A/DCON1寄存器(地址為9fH)與A/DCON0寄存器(地址為1fH)中。A/D轉換初始設定與選擇模擬輸入端的程序如下:
A/D轉換啟動的控制信號是A/DCON0寄存器的〈2〉位,設為1表示啟動轉換,設為0表示不要轉換。A/D轉換的結果放在A/DRESH及A/DRESL寄存器,程序如下:
4試驗結論
按上述設計,我們制作了實際的紅外測距系統,并進行了測量實驗。圖5為實驗曲線,其中虛線代表擬合后的二次曲線,曲線擬合采用matlab提供的擬合函數polyfit。從圖中可以看出,所設計的紅外傳感器能夠實現0~25cm之間的距離測量,且具有較高的精度,完全能夠滿足控制要求。










