鐘志賢,韓 杰
(1.河北工程大學(xué),河北邯鄲 056038;2.邯鄲市建筑設(shè)計(jì)研究院,河北邯鄲 056002)
隨著機(jī)器人技術(shù)的發(fā)展,自主移動(dòng)競(jìng)賽機(jī)器人要求通過(guò)各種傳感器系統(tǒng)在已知或未知的環(huán)境中自主移動(dòng)來(lái)完成相應(yīng)的任務(wù)。避障測(cè)距系統(tǒng)作為一個(gè)重要的決策分支得到廣泛的研究??紤]到超聲波測(cè)距的優(yōu)點(diǎn),文中采用模塊化的設(shè)計(jì)方法,設(shè)計(jì)一個(gè)基于C8051F310單片機(jī)和CX2016A紅外解碼芯片的超聲波測(cè)距傳感器模塊,通過(guò)RS422總線(xiàn)與主控制器組網(wǎng),結(jié)合自定義通信協(xié)議,為機(jī)器人回避障礙物和導(dǎo)航提供距離信息和環(huán)境溫度信息。
移動(dòng)機(jī)器人控制系統(tǒng)中測(cè)距控制系統(tǒng)的硬件組成結(jié)構(gòu)示意圖如圖1所示。
圖1 測(cè)距控制系統(tǒng)硬件結(jié)構(gòu)示意圖
1.1模塊控制器的選擇
模塊控制器采用C8051F310,它具有高速流水線(xiàn)結(jié)構(gòu),兼容的CIP-51內(nèi)核(可達(dá)25MIPS)與標(biāo)準(zhǔn)的 8051 結(jié)構(gòu)相比指令執(zhí)行速度有很大的提高。有4個(gè)16位通用定時(shí)計(jì)數(shù)器,1280字節(jié)片內(nèi)RAM,擴(kuò)展的中斷系統(tǒng)向CIP-51提供14個(gè)中斷源(標(biāo)準(zhǔn)8051只有7個(gè)中斷源),允許大量的模擬和數(shù)字外設(shè)中斷[1]。一個(gè)中斷驅(qū)動(dòng)系統(tǒng)需要較少的 MCU干預(yù),因而具有更高的執(zhí)行效率。
1.2測(cè)距方法的選擇
超聲波測(cè)距的主要方法有渡越時(shí)間法、相位檢測(cè)法、聲波幅值檢測(cè)法[2]?,F(xiàn)在超聲波測(cè)距一般使用渡越時(shí)間法,選擇渡越時(shí)間法是因?yàn)槠浞椒ê?jiǎn)單可靠,精度能滿(mǎn)足大多數(shù)應(yīng)用。其原理為:控制器通過(guò)測(cè)量超聲波發(fā)送和接收到回波的時(shí)間差t,計(jì)算得到發(fā)射源與目標(biāo)障礙物之間的距離:
d=vt/2
式中v為超聲波在空氣中的傳播速度,m/s.
式中T為環(huán)境溫度,℃.
1.3總線(xiàn)的選擇
自主移動(dòng)競(jìng)賽機(jī)器人控制系統(tǒng)由不同模塊通過(guò)不同的總線(xiàn)連接在一起。考慮到測(cè)距模塊之間不需要通信,而RS422總線(xiàn)支持點(diǎn)對(duì)多的雙向通信,且是以差動(dòng)方式發(fā)送和接收,不需要數(shù)字地線(xiàn),可以全雙工工作收發(fā)互不影響,同速率條件下傳輸距離遠(yuǎn)、抗干擾性強(qiáng)等優(yōu)點(diǎn),所以選擇RS422總線(xiàn)作為測(cè)距系統(tǒng)的系統(tǒng)總線(xiàn)。
2.1測(cè)距模塊最小系統(tǒng)
圖2為測(cè)距模塊最小系統(tǒng)。
圖2 測(cè)距模塊最小系統(tǒng)
2.2發(fā)射電路
超聲波發(fā)射電路如圖3所示,超聲波發(fā)射電路主要負(fù)責(zé)產(chǎn)生超聲波聲波信號(hào)。該模塊采用的超聲波換能器的頻率是40 kHz,所以主控制器P1.2引腳(網(wǎng)絡(luò)標(biāo)號(hào)SEND)要提供40 kHz的信號(hào)給超聲波換能器。為了使超聲波有足夠的能量能傳播得更遠(yuǎn),還需要設(shè)計(jì)電路把信號(hào)放大。升壓?jiǎn)卧饕梢粋€(gè)脈沖變壓器和一對(duì)復(fù)合管組成,復(fù)合管具有很高的電流放大系數(shù),脈沖變壓器主要有兩個(gè)功能:一是將5 V電壓升至12 V;二是使其輸出阻抗與換能器的阻抗相匹配。優(yōu)點(diǎn)是消除了諧振,缺點(diǎn)是電路需要兩種電壓。
圖3 超聲波發(fā)射電路
2.3接收電路
超聲波接收電路如圖4所示,超聲波接收電路一直都是超聲波測(cè)距的關(guān)鍵點(diǎn),它主要負(fù)責(zé)從接收探頭接收到的各種噪聲中,提取微弱的40 kHz信號(hào),并且經(jīng)過(guò)前置放大、帶通濾波、中間放大、比較整形轉(zhuǎn)換成單片機(jī)可以識(shí)別的TTL電平信號(hào),完成接收任務(wù)。
CX20106是專(zhuān)用的40 kHz紅外信號(hào)接收芯片,具有很高的信號(hào)檢測(cè)靈敏度且能有效減少電路之間的互相干擾,減少電噪聲[3]。其輸出的信號(hào)是能被單片機(jī)直接識(shí)別的TTL信號(hào),調(diào)節(jié)圖4中R13電位器可以改變接收靈敏度,C13是一個(gè)積分電容,標(biāo)準(zhǔn)值為330 pF,如果該電容值取得過(guò)大,會(huì)使探測(cè)距離變短。第7腳(網(wǎng)絡(luò)標(biāo)號(hào)RECEIVE)在沒(méi)有接收到回波時(shí),為高電平,當(dāng)接收到回波時(shí)跳變?yōu)榈碗娖酵ㄖo單片機(jī),單片機(jī)進(jìn)入外部中斷服務(wù)子程序進(jìn)行計(jì)算處理。
圖4 超聲波接收電路
2.4通信接口和溫度測(cè)量
測(cè)距模塊通信接口電路如圖5(a)所示,電平轉(zhuǎn)換芯片U3選用MAX3491,JP2為總線(xiàn)接口端子。在遠(yuǎn)距離傳輸時(shí)需要在傳輸電纜的兩端接120Ω的匹配電阻。但是由于模塊傳輸距離近且匹配電阻會(huì)消耗較大功率,考慮到系統(tǒng)由電池供電,所以不用終端匹配電阻。
溫度測(cè)量電路如圖5(b)所示,由于超聲波在空氣中傳播的速度和溫度有關(guān),為了提高測(cè)距精度,必須加入溫度補(bǔ)償。系統(tǒng)采用數(shù)字溫度傳感器DS18B20來(lái)采集環(huán)境溫度。DS18B20測(cè)量范圍是-55~+125 ℃,在-10~+85 ℃間,測(cè)量精度達(dá)±0.5 ℃[4]。其抗干擾性強(qiáng),功耗低,接口簡(jiǎn)單,適用于各種溫度測(cè)控系統(tǒng)。
(a)通信接口 (b)測(cè)溫電路
測(cè)距模塊系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì)方法,主要包括主程序、超聲波發(fā)射子程序、外部中斷服務(wù)子程序、溫度測(cè)量子程序、串口通信子程序。
3.1算法設(shè)計(jì)
由于系統(tǒng)采用一主多從式的組網(wǎng)方式,上位機(jī)主控制器可以通過(guò)輪詢(xún)的方式,收集各個(gè)模塊的距離信息,各個(gè)模塊單獨(dú)工作,互不影響。
每個(gè)模塊都由串口中斷函數(shù)接收上位機(jī)下發(fā)的數(shù)據(jù),若和自己的地址匹配,則解析命令,和上位機(jī)交換數(shù)據(jù)。外部中斷服務(wù)子程序,當(dāng)接收電路檢測(cè)到回波時(shí),即有外部中斷信號(hào)發(fā)生時(shí),程序跳到外部中斷服務(wù)子程序,首先關(guān)閉定時(shí)計(jì)數(shù)器0,禁止外部中斷,接著提取計(jì)數(shù)值得到渡越時(shí)間,調(diào)用溫度測(cè)量子程序測(cè)溫,計(jì)算聲速,或者根據(jù)溫度查表得到聲速,然后根據(jù)聲速和時(shí)間差計(jì)算出距離,跳出完成1次測(cè)量。并通過(guò)串口向上位機(jī)發(fā)送數(shù)據(jù)。部分程序流程圖如圖6所示。
(a)主程序流程圖 (b)計(jì)時(shí)程序流程圖 (c) 外部中斷服務(wù)子程序流程圖
3.2自定義通信協(xié)議
由于機(jī)器人控制系統(tǒng)龐大以及復(fù)雜,我們使用了多處理器,測(cè)距系統(tǒng)包括兩種不同系列的處理器(c8051f系列和ARM7,PC213X),因此處理器之間的通信必須深入研究及其設(shè)計(jì),才能使整個(gè)控制系統(tǒng)成功運(yùn)作。
系統(tǒng)串口通信協(xié)議,即接收和發(fā)送幀格式如表1所示。規(guī)定主機(jī)地址為0x00,讀取距離的命令為0x0a,讀取溫度的命令為0x0b.如果主機(jī)向1號(hào)模塊(地址為0x01)要距離數(shù)據(jù)則:
主機(jī)發(fā)送:0x55 0xaa 0x01 0x00 0x0a 0x0a
從機(jī)返回:0x55 0xaa 0x00 0x02 0x0a 0x11 0x22 0x3e
返回幀中:0x11、0x22,為有效數(shù)據(jù),轉(zhuǎn)換成十進(jìn)制時(shí)高位在前,低位在后。
表1 接收和發(fā)送的幀格式
3.3程序效率
由于測(cè)量溫度耗費(fèi)時(shí)間長(zhǎng),但是溫度短時(shí)間變化不大,甚至沒(méi)有變化,所以每次計(jì)算距離時(shí)沒(méi)有必要重新計(jì)算聲速,只需把上一次測(cè)量的溫度緩存起來(lái),和最近一次測(cè)量的溫度比較,如果有變化,再啟用溫度補(bǔ)償聲速,或者把不同溫度下對(duì)應(yīng)的聲速,人工計(jì)算好做成表,單片機(jī)計(jì)算距離時(shí)根據(jù)溫度,直接查表得到聲速。這樣縮短測(cè)距時(shí)間,提高程序效率。還需要簡(jiǎn)化公式、減少計(jì)算步驟、優(yōu)化程序代碼等,如:乘、除法用移位代替。
系統(tǒng)具有工作穩(wěn)定、結(jié)構(gòu)簡(jiǎn)單、成本低等優(yōu)點(diǎn)。引入溫度補(bǔ)償,使得結(jié)果更加準(zhǔn)確。通過(guò)合理的選用C805F310和CX20106芯片組成方案,抗干擾性能有了較大的改善,完成一次測(cè)量的時(shí)間大大縮小,能及時(shí)向上位機(jī)主控制器提供測(cè)距服務(wù)。
參考文獻(xiàn):
[1]胡發(fā)煥,邱小童,朱花.C8051F單片機(jī)在自動(dòng)機(jī)器人上的應(yīng)用.信息化縱橫,2009(5):24-25.
[2]李戈,孟祥杰,王曉華,等.國(guó)內(nèi)超聲波測(cè)距研究應(yīng)用現(xiàn)狀.測(cè)繪科學(xué),2011,36(4):60-61.
[3]秦偉,顏文俊.基于CX20106A的超聲波倒車(chē)?yán)走_(dá)設(shè)計(jì).壓電與聲光,2011,33(1):162-163.
[4]朱向慶,陳志雄.帶溫度補(bǔ)償?shù)?60°超聲波測(cè)距測(cè)速系統(tǒng)設(shè)計(jì).壓電與聲光,2011,33(2):317-318.