摘 要: 為了提高移動(dòng)機(jī)器人的定位能力,,提出了一種測(cè)障系統(tǒng),。硬件電路以STC12C5A60S2單片機(jī)為主控核心,外圍電路主要由超聲波測(cè)距,、電子羅盤(pán)測(cè)方位,、數(shù)字測(cè)溫和液晶顯示電路組成。測(cè)距由超聲波渡越時(shí)間法實(shí)現(xiàn),利用所測(cè)溫度實(shí)時(shí)修正參數(shù),,提高了測(cè)距精度,。方位由電子羅盤(pán)采集并以數(shù)字量輸出,簡(jiǎn)化了電路,。系統(tǒng)軟件是一個(gè)微內(nèi)核,、多任務(wù)的實(shí)時(shí)系統(tǒng),將μC/OS-II嵌入單片機(jī),,多參數(shù)采集程序運(yùn)行之上,,彌補(bǔ)了前后臺(tái)系統(tǒng)處理多參數(shù)實(shí)時(shí)性差的不足。實(shí)際運(yùn)行表明,,系統(tǒng)具有測(cè)試精度高,、實(shí)時(shí)好和擴(kuò)展性好等優(yōu)點(diǎn)。
關(guān)鍵詞: 測(cè)障系統(tǒng); μC/OS-II,;多任務(wù),;單片機(jī)
測(cè)障系統(tǒng)由測(cè)距和測(cè)方位等功能組成,它是一個(gè)多參數(shù),、多功能采集系統(tǒng),,而基于過(guò)程處理的前后臺(tái)系統(tǒng)已很難在實(shí)時(shí)性和可靠性上滿足要求。隨著技術(shù)的進(jìn)步,一些8位及以上微控制器已能嵌入實(shí)時(shí)操作系統(tǒng)(RTOS),,應(yīng)用程序運(yùn)行之上,,兩者相互協(xié)作,組成一個(gè)多任務(wù),、多功能,、可裁剪的測(cè)控系統(tǒng),有效地克服了傳統(tǒng)設(shè)計(jì)方案的不足,。
μC/OS-II是嵌入式實(shí)時(shí)操作系統(tǒng),,它具有的微內(nèi)核、多任務(wù),、實(shí)時(shí)性和穩(wěn)定可靠等特點(diǎn)使其特別適用于構(gòu)建基于微處理器或單片機(jī)(這類(lèi)處理器對(duì)存儲(chǔ)空間要求極其苛刻)的測(cè)控系統(tǒng),,其被成功應(yīng)用于航天工程、生命科學(xué),、消費(fèi)類(lèi)電子產(chǎn)品等領(lǐng)域就是很好的例證[1],。
STC12C5A60S2單片機(jī)是具有8051內(nèi)核的增強(qiáng)型單片機(jī),,無(wú)需外擴(kuò)數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器就能很好地運(yùn)行裁剪的μC/OS-II系統(tǒng),。本文將?滋C/OS-II移植進(jìn)STC12C5A60S2單片機(jī),設(shè)計(jì)了基于單片機(jī)的多參數(shù),、多功能測(cè)障系統(tǒng),。
1 系統(tǒng)方案和主要電路
系統(tǒng)硬件主要由STC12C5A60S2單片機(jī)、超聲波電路、數(shù)字溫度傳感器DS18B20,、時(shí)鐘芯片DS1302,、液晶顯示器LCD12864(ST7920)組成,硬件框圖如圖1所示,。
STC12C5A60S2單片機(jī)運(yùn)行μC/OS-II和應(yīng)用程序,,是測(cè)控系統(tǒng)的核心。單片機(jī)內(nèi)置60 KB Flash程序存儲(chǔ)器,、集成1 280 B數(shù)據(jù)存儲(chǔ)器和1 KB數(shù)據(jù)Flash存儲(chǔ)器[1],。 這些硬件配置使其能構(gòu)成基于μC/OS-II的多參數(shù)、多功能的實(shí)時(shí)測(cè)控系統(tǒng),。超聲波電路實(shí)現(xiàn)測(cè)距,;電子羅盤(pán)電路實(shí)現(xiàn)測(cè)方位;數(shù)字溫度傳感器測(cè)試溫度,,用于測(cè)距參數(shù)的修正,;時(shí)鐘芯片輸出時(shí)間;液晶顯示器實(shí)時(shí)顯示距離,、方位,、溫度等參數(shù)。
1.1 超聲波電路
超聲波電路是利用超聲脈沖回波渡越時(shí)間法來(lái)實(shí)現(xiàn)測(cè)距,根據(jù)系統(tǒng)發(fā)射超聲波與接收反射波的時(shí)間差,結(jié)合修正后的波速計(jì)算出與障礙物的距離[2],。測(cè)距公式如下:
S=vt/2 (1)
v=331.5+0.6Δ (2)
其中,,S為與障礙物的距離,單位為m,;v為帶溫度補(bǔ)償?shù)某暡▊鞑ニ俣?單位為m/s,;t為超聲波發(fā)射與接收到反射波時(shí)的時(shí)間差,單位為s,;331.5是0℃時(shí)超聲波在空氣中的傳播速度, 單位為m/s,;Δ為實(shí)測(cè)溫度,由測(cè)溫電路測(cè)得,單位為℃,。
超聲波電路由超聲波發(fā)射電路和超聲波接收電路組成,,選用壓電式超聲波傳感器(型號(hào)TCT40-16T/R,中心頻率40.0±1.0 kHz),。
超聲波發(fā)射電路由555定時(shí)器,、CD4069、TCT40-16T發(fā)射器等組成,如圖2所示,。它是利用發(fā)射器的逆壓電效應(yīng),將高頻電振動(dòng)轉(zhuǎn)換成機(jī)械振動(dòng),產(chǎn)生超聲波發(fā)射出去的電路,。電路中,當(dāng)單片機(jī)控制引腳P1.1為低電平時(shí),,555定時(shí)器產(chǎn)生中心頻率40 kHz的高頻信號(hào),,由引腳3輸出至CD4069,,CD4069將其整形后驅(qū)動(dòng)發(fā)射器發(fā)射超聲波。
超聲波接收電路由TCT40-16R接收器和紅外線檢波芯片CX20106A等組成,,如圖3所示,。它是利用接收器的壓電效應(yīng),將接收的超聲振動(dòng)轉(zhuǎn)換成電信號(hào),實(shí)現(xiàn)微弱反射回波的放大,、濾波,、檢波、整形輸出的電路[3],。電路中,,反射波由引腳1輸入,此信號(hào)被處理后由引腳7輸出低電平,,此負(fù)跳變通過(guò)P1.2引入單片機(jī),,單片機(jī)以查詢(xún)的方式獲取該信號(hào)的變化(反射波)。
1.2 電子羅盤(pán)電路
電子羅盤(pán)電路用于測(cè)試與障礙物的方位(角度和方向),。其工作原理是利用磁阻傳感器測(cè)試與地磁場(chǎng)的偏移關(guān)系從而獲取方位信息[4],。
電子羅盤(pán)電路由電源電路和HMC5883L集成模塊組成。HMC5883L內(nèi)置磁阻傳感器,、12位ADC,、放大器、I2C數(shù)字接口,、測(cè)量精度達(dá)到1°~2°[5],。電子羅盤(pán)電路與單片機(jī)接口如圖4所示。
1.3 數(shù)字測(cè)溫/時(shí)鐘電路
數(shù)字測(cè)溫電路由數(shù)字溫度傳感器DS18B20組成,。它具有以下特點(diǎn)[6]: (1)測(cè)溫范圍為-55℃~+125℃,, 最高12 bit分辨率,精度可達(dá)±0.5℃;(2)可通過(guò)編程的方式實(shí)現(xiàn)9 bit~12 bit的數(shù)字溫度直讀; (3)可設(shè)置超限溫度報(bào)警,,并有搜索命令識(shí)別報(bào)警條件;(4)單總線接口,僅需一條輸入/輸出線(DQ)就能與單片機(jī)(P1.0)通信,。DS18B20數(shù)字測(cè)溫電路如圖5所示。
時(shí)鐘電路由時(shí)鐘芯片DS1302組成,。它是一種高性能,、低功耗、采用三線接口的實(shí)時(shí)時(shí)鐘電路,,可以對(duì)時(shí)間和日期進(jìn)行計(jì)時(shí)[7],。DS1302時(shí)鐘電路如圖6所示。
2 系統(tǒng)軟件
系統(tǒng)軟件是運(yùn)行于?滋C/OS-II之上的程序,,它將RTOS與應(yīng)用程序有機(jī)融合在一起,。RTOS負(fù)責(zé)任務(wù)管理與調(diào)度、任務(wù)間同步和通信等功能,;應(yīng)用程序?qū)崿F(xiàn)具體功能,,如測(cè)距、測(cè)方位和參數(shù)顯示等,。
2.1 μC/OS_II移植
μC/OS-II必須裁剪才能在STC12C5A60S2單片機(jī)中正常運(yùn)行,主要涉及4個(gè)文件[1]: 處理器相關(guān)文件(OS_CPU_C.C,、OS_CPU.H)、 配置文件(OS_CFG.H),、 匯編文件(OS_CPU_A.ASM),、啟動(dòng)文件(STARTUP.A5)。
2.2 應(yīng)用程序組成
程序流程框圖如圖7所示,。主文件由系統(tǒng)和應(yīng)用程序初始化功能函數(shù),、任務(wù)1和任務(wù)2的功能函數(shù)、時(shí)鐘中斷函數(shù)UserTickTimer()等組成,。
2.2.1 系統(tǒng)和應(yīng)用程序初始化主要功能函數(shù)
(1) OSInit()
初始化操作系統(tǒng),。
(2) InitHardware()/InitLcdBase()/ Init DS1302 ()/Init
Hmc5883()
初始化定時(shí)器T0/T1:方式1,T0定時(shí)50 ms中斷一次,,T1為超聲波計(jì)數(shù),,初值為0。
初始化液晶顯示器LCD12864,、數(shù)字時(shí)鐘芯片DS1302和電子羅盤(pán)芯片HMC5883,。
(3) OSTaskCreate()
OSTaskCreate(Task1,(void*)0,&Task1Stk[0],1);
OSTaskCreate(Task2,(void*)0,&Task2Stk[0],2);
創(chuàng)建Task1和Task2兩個(gè)任務(wù),級(jí)別為1和2,,并分配堆棧,。
(4) myMbox=OSMboxCreate((void*)1);
創(chuàng)建消息郵箱并賦初值,作為1 s到的時(shí)間標(biāo)識(shí),。
(5) OSStart()
啟動(dòng)多任務(wù),。
2.2.2 任務(wù)1和任務(wù)2的功能函數(shù)
(1) 任務(wù)1的功能函數(shù)
① Hmc5883Process()/DisplayGoniometer()
測(cè)方位并用數(shù)字/指針顯示,,每1 s刷新一次,。
② OSTimeDly(20)
任務(wù)1被掛起20個(gè)時(shí)鐘節(jié)拍,,讓出CPU資源,。
(2) 任務(wù)2的功能函數(shù)
① OSMboxPend(myMbox,0,&err)
當(dāng)接收到系統(tǒng)每隔1 s發(fā)過(guò)來(lái)的消息時(shí),執(zhí)行以下函數(shù),否則等待,。
② Get1302Data()/Display1302DigitalClock()
讀取DS1302的值并顯示時(shí)間,。
③ Ds18b20DataToString()/DisplayDs18b20Tempe()
讀取DS18b20溫度值并轉(zhuǎn)換為相應(yīng)格式,顯示溫度值。
④ UltraShowDistance()
顯示基于超聲回波渡越時(shí)間波測(cè)試的距離值,。
⑤ OSTimeDly(5)
任務(wù)2被掛起5個(gè)時(shí)鐘節(jié)拍,,讓出CPU資源。
3 實(shí)驗(yàn)
基于單片機(jī)的測(cè)障系統(tǒng)實(shí)際運(yùn)行結(jié)果如圖8所示,。
圖8(a)~(d)中,,第1行為交替顯示時(shí)間和日期信息,,日期格式為年/月/日;數(shù)字時(shí)鐘格式為小時(shí):分鐘:秒,。初始時(shí)間和日期可通過(guò)程序設(shè)定,。
第2行:“E:XXX.X°” 為方位信息,即與以東為參考點(diǎn)的夾角(角度為0時(shí)指向東),,單位為度(°),。指針的指向與角度一致。
第3行:“XXX.XCM”為實(shí)測(cè)的與障礙物的距離,,單位為cm,,測(cè)試范圍<600 cm。
第4行:“±XX.XX℃”為實(shí)測(cè)溫度,單位為攝氏度(℃),。
系統(tǒng)硬件以增強(qiáng)型單片機(jī)為測(cè)控核心,,外圍電路采用模塊化設(shè)計(jì),整個(gè)電路穩(wěn)定,、可靠,。系統(tǒng)軟件設(shè)計(jì)為基于嵌入式實(shí)時(shí)操作系統(tǒng)的多任務(wù)系統(tǒng)。實(shí)際運(yùn)行表明,,系統(tǒng)測(cè)試精度高,功能多,,實(shí)時(shí)性好,可擴(kuò)展性好,為深入研究機(jī)器人定位系統(tǒng)奠定了基礎(chǔ),。
參考文獻(xiàn)
[1] 陳桂友. 增強(qiáng)型8051單片機(jī)實(shí)用開(kāi)發(fā)技術(shù)[M].北京:北京航空航天大學(xué)出版社,2010.
[2] 張根寶,,李秀平,龐蘇娟. 基于ARM Cortex-M3 便攜式智能超聲波液位計(jì)[J].儀表技術(shù)與傳感器,2012(1):20-31.
[3] 楊發(fā)權(quán),,陳勝權(quán). 基于M50462和CX20106A芯片的雙工紅外線通信系統(tǒng)[J].佛山科學(xué)技術(shù)學(xué)院學(xué)報(bào)(自然科學(xué)版),2008,26(5):21-24.
[4] 郭檢楠.基于磁阻芯片和MSP430單片機(jī)的電子羅盤(pán)設(shè)計(jì)[J].信息與電子工程,2010,8(1):12-14.
[5] 胡寧博,李劍,趙櫸云.基于HMC5883的電子羅盤(pán)設(shè)計(jì)[J].傳感器世界,2011(6):35-38.
[6] 孫明利,,鮑健,張爍. 單總線技術(shù)及DS18B20的溫度測(cè)量實(shí)現(xiàn)[J].大氣與環(huán)境光學(xué)學(xué)報(bào),2010,5(4):322-326.
[7] 黃明強(qiáng). DS1302在單片機(jī)系統(tǒng)中的應(yīng)用.保定師范專(zhuān)科學(xué)校學(xué)報(bào)[J].2004,17(2):30-33.