周鵬
(華僑大學(xué) 信息學(xué)院,福建 廈門 361021)
超聲波具有束射性好,方向性和抗干擾性強(qiáng)的特點(diǎn)使其被廣泛應(yīng)用于移動(dòng)機(jī)器人的自動(dòng)導(dǎo)航[1-2]。但僅用超聲波測障無法精確確定移動(dòng)機(jī)器人的位置,因?yàn)樗荒苋娅@知障礙物的方位(角度和方向),所以必須附加具有測試方位的傳感器。
針對上述問題,提出一種基于STC89C52單片機(jī)的電子羅盤-超聲波測障方案,實(shí)驗(yàn)表明,系統(tǒng)在定位精度和可靠性達(dá)到設(shè)計(jì)要求。
系統(tǒng)主要由STC89C52單片機(jī),超聲波電路(超聲波發(fā)射電路和接收電路),電子羅盤電路,LCD1602液晶顯示電路和電源組成(如圖1所示)。
圖1 系統(tǒng)框圖Fig.1 Structure diagram of MCU
系統(tǒng)中,超聲波電路用于測試與障礙物的距離。其工作原理[3]是根據(jù)系統(tǒng)發(fā)射超聲波和接收到反射波的時(shí)間差,結(jié)合修正后的波速計(jì)算出與障礙物距離。測距公式如下:
其中,S為與障礙物距離,單位m。
v為帶溫度補(bǔ)償?shù)某暡▊鞑ニ俣?,單位m/s。
t為超聲波發(fā)射與接收到反射波時(shí)的時(shí)間差,單位s。
331.5 為0℃時(shí)超聲波在空氣中的傳播速度,單位m/s。
Δ為實(shí)測溫度,由測溫度電路測得,單位℃。
電子羅盤電路用于測試與障礙物的方位(角度和方向)。其工作原理[4]是利用磁阻傳感器測試與地磁場的偏移關(guān)系從而獲取方位信息。
STC89C52單片機(jī)是系統(tǒng)的核心,用于處理上述數(shù)據(jù)并將其顯示在LCD1602液晶顯示器上。
系統(tǒng)選用STC89C52單片機(jī),它具有抗干擾性能強(qiáng)、速度快、功耗低和指令代碼完全兼容8051單片機(jī)等特點(diǎn)。其主要參數(shù)為[5]:時(shí)鐘頻率最高可達(dá)80 MHz;內(nèi)置8K字節(jié)的Flash-ROM,512字節(jié)的RAM和2 K字節(jié)的E2PROM;3個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu)。
STC單片機(jī)系統(tǒng)由STC89C52單片機(jī),時(shí)鐘電路,復(fù)位電路組成(如圖2所示)。
時(shí)鐘電路采用內(nèi)部時(shí)鐘方式,為單片機(jī)系統(tǒng)提供時(shí)鐘信號(hào)。
復(fù)位電路采用上電自動(dòng)復(fù)位和按鍵復(fù)位的方式,只要保證加到RST引腳的高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期就能使單片機(jī)正常復(fù)位。
系統(tǒng)選擇LCD1602(HD44780)液晶顯示器實(shí)時(shí)顯示障礙物的方位,距離,時(shí)間等信息。LCD1602是工業(yè)字符型液晶顯示器,它能夠同時(shí)顯示32個(gè)字符(16列2行),具有低功耗、顯示內(nèi)容豐富等特點(diǎn)。LCD1602與單片機(jī)接口電路如圖3所示。
圖2 STC單片機(jī)系統(tǒng)Fig.2 Structure diagram of STC MCU
圖3 LCD1602與單片機(jī)接口電路Fig.3 Interface diagram of LCD1602 and MCU
超聲波電路由超聲波發(fā)射電路和超聲波接收電路組成,選用壓電式超聲波傳感器 (型號(hào)TCT40-16T/R,中心頻率40.0±1.0 kHz)。
超聲波發(fā)射電路(如圖4所示)由555定時(shí)器,CD4069,TCT40-16T發(fā)射器等組成,它是利用發(fā)射器的逆壓電效應(yīng),將高頻電振動(dòng)轉(zhuǎn)換成機(jī)械振動(dòng),產(chǎn)生超聲波發(fā)射出去的電路。電路中,當(dāng)單片機(jī)控制引腳P1.4為低電平時(shí),555定時(shí)器產(chǎn)生中心頻率40 kHz的高頻信號(hào),由引腳3輸出至CD4069,CD4069將其整形后驅(qū)動(dòng)發(fā)射器發(fā)射超聲波。
超聲波接收電路(如圖5所示)由TCT40-16R接收器和紅外線檢波芯片CX20106A等組成,它是利用接收器的壓電效應(yīng),將接收的超聲振動(dòng)轉(zhuǎn)換成電信號(hào),實(shí)現(xiàn)微弱反射回波的放大,濾波,檢波,整形輸出的電路[6]。電路中,反射波由引腳1輸入,此信號(hào)被處理后由引腳7輸出低電平,此負(fù)跳變通過P1.5引入單片機(jī),單片機(jī)以查詢的方式獲取該信號(hào)的變化(反射波)。
圖4 超聲波發(fā)射電路Fig.4 Circuit of ultrasonic emision
圖5 超聲波接收電路Fig.5 Circuit of ultrasonic receiver
電子羅盤電路由電源電路,HMC5883L集成模塊(主要電路如圖6所示)組成。HMC5883L內(nèi)置磁阻傳感器,12位ADC,放大器,I2C 數(shù)字接口,測量精度達(dá)到 1°~2°[7]。
圖6 電子羅盤與單片機(jī)接口電路Fig.6 Interface diagram of electronic compass and MCU
系統(tǒng)由電壓芯片7805和662K分別為單片機(jī)和HMC5883L提供+5 V和+3.3 V的工作電壓,電源電路如圖7和圖8所示。
圖7 +5V電源電路Fig.7 Power supply circuit of 5 volt
圖8 +3.3V電源電路Fig.8 Power supply circuit of 3.3 volt
系統(tǒng)軟件采用結(jié)構(gòu)化設(shè)計(jì),即主函數(shù)調(diào)用子函數(shù),子函數(shù)再調(diào)用各功能子函數(shù)。主函數(shù)由初始化函數(shù)(初始化定時(shí)/計(jì)數(shù)器,LCD1602液晶顯示器,電子羅盤模塊等)和調(diào)用子函數(shù)(測距,測方位,時(shí)間和日期顯示等函數(shù))組成。子函數(shù)包括測方位函數(shù)(電子羅盤模塊實(shí)現(xiàn)),測距函數(shù)(超聲波模塊實(shí)現(xiàn))和信息顯示函數(shù)(顯示方位,距離,時(shí)間和日期)。功能子函數(shù)用于驅(qū)動(dòng)底層硬件。系統(tǒng)流程如圖9所示。
圖9 系統(tǒng)流程圖Fig.9 Flow-process diagram of system
1)初始化函數(shù)
①void TimerInit(void)//T0/T1 同為定時(shí)器,工作方式 1,T0定時(shí)50 ms產(chǎn)生一次中斷;T1用于計(jì)數(shù)超聲波測距時(shí)間
②void InitLcd1602(void)//初始化 LCD1602 液晶顯示器
③void InitHMC5883(void)//初始化 HMC5883L 電子羅盤模塊
④void SetClock (unsigned char, unsigned char, unsigned char)//設(shè)定時(shí)間
⑤void SetDate (unsigned char, unsigned char, unsigned char)//設(shè)定日期
2)調(diào)用子函數(shù)
①void TrigUltra(void)//啟動(dòng)超聲波測距
②void ShowDistanceUltra(void)//顯示與障礙物的距離
③void StartHmc5883(void)//啟動(dòng)方位測試并顯示結(jié)果
④void RunDigitalClock(void)//顯示時(shí)間
⑤void RunDate(void)//顯示日期
1)LCD1602液晶顯示函數(shù)
① void TestLcdIdle(void)//忙檢測
②void WriteCommand(unsigned char)//寫入命令
③void WriteData(unsigned char)//寫入數(shù)據(jù)
④void InitLcd1602(void)//清屏、設(shè)置光標(biāo)等初始化
⑤)void SetPos_1602 (unsigned char,bit)//設(shè)定顯示內(nèi)容的起始位置
⑥void PrintC_1602(unsigned char)//字符顯示
⑦void PrintS_1602(unsigned char*)//字符串顯示
2)超聲波測距函數(shù)
①void DistanceUltraProcess(void)//根據(jù)定時(shí)器計(jì)數(shù)值計(jì)算距離
②void ShowDistanceUltra (long)//顯示測距結(jié)果
②void ShowBlindSpotUltra (void)//顯示盲點(diǎn)(超過測距范圍)
3)電子羅盤測方位函數(shù)
①void StartHmc5883(void)//起始信號(hào)
②void StopHmc5883 (void)//終止信號(hào)
③void SendAckHmc5883(bit)//發(fā)送應(yīng)答信號(hào)
④bit RecvAckHmc5883 (void)//接收應(yīng)答信號(hào)
⑤void SendByteHmc5883 (unsigned char)//發(fā)送單字節(jié)數(shù)據(jù)
⑥unsigned char RecvByteHmc5883 (void)//接收單字節(jié)數(shù)據(jù)
⑦void WriteByteHmc5883(unsigned char, unsigned char)//寫入單字節(jié)數(shù)據(jù)
⑧void ReadByteHmc5883(unsigned char, unsigned char)//讀取單字節(jié)數(shù)據(jù)
⑨void ReadAngleHmc5883 (void)//讀出測試角度數(shù)據(jù)
系統(tǒng)實(shí)際運(yùn)行結(jié)果如圖10~13所示。
圖10 測試結(jié)果一Fig.10 The result of the first experiment
圖11 測試結(jié)果二Fig.11 The result of the second experiment
圖12 測試結(jié)果三Fig.12 The result of the third experiment
圖13 測試結(jié)果四Fig.13 The result of the fourth experiment
圖中, 第 1 行:”XX:XX:XX” 為時(shí)/分/秒;”XX/XX/XX”為年/月/日;
第2行:”EXXX.X。是以順時(shí)針為旋轉(zhuǎn)方向與東的夾角(系統(tǒng)以東為參考起點(diǎn),角度為0時(shí)指向東),單位為度;”DXXX.XCM”為與障礙物的間距,單位為厘米。
經(jīng)過實(shí)測,系統(tǒng)能精確測試障礙物的方位和間距,并數(shù)字顯示。實(shí)驗(yàn)表明,系統(tǒng)測障功能達(dá)到設(shè)計(jì)要求,整個(gè)電路簡單實(shí)用,為后續(xù)深入研究移動(dòng)機(jī)器人自動(dòng)導(dǎo)航奠定基礎(chǔ)。
[1]童峰,許天增.一種移動(dòng)機(jī)器人超聲波導(dǎo)航系統(tǒng)[J].機(jī)器人,2002,24(1):55-57.TONG Feng,XU Tian-zeng.A ultrasonic navigation system for mobile robot[J].Robot,2002,24(1):55-57.
[2]蘇強(qiáng),林旭梅.一種基于單片機(jī)的超聲波傳感器的研究與設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2010,29(15):92-99.SU Qiang,LIN Xu-mei.Research and design on ultrasonic sensorsbased on single chip[J].Microcomputer& Its Applications,2010,29(15):92-99.
[3]郭清.基于STC89C52的超聲波測距防撞系統(tǒng)設(shè)計(jì)[J].儀表技術(shù)與傳感器,2011(6):74-77.GUO Qing.Ultrasonic ranging and anti-collision system based on STC89C52[J].Instrument Technique and Sensor,2011(6):74-77.
[4]郭檢楠.基于磁阻芯片和MSP430單片機(jī)的電子羅盤設(shè)計(jì)[J].信息與電子工程,2010,8(1):12-14.GUO Jian-nan.Design of digital compass with magneto resistive chip and the MCU of MSP430[J].Information and Elecronic Engineering,2010,8(1):12-14.
[5]王節(jié)旺.一種基于STC89C52RC單片機(jī)的計(jì)時(shí)系統(tǒng)的設(shè)計(jì)方案[J].微型機(jī)與應(yīng)用,2011,30(6):28-30.WANG Jie-wang.Design and implement of timing system based on STC89C52C MCU[J].Microcomputer& Its Applications,2011,30(6):28-30.
[6]張丹,賀西平.基于單片機(jī)的超聲波測距系統(tǒng)的設(shè)計(jì)[J].紡織高校基礎(chǔ)科學(xué)學(xué)報(bào),2008,21(1):117-120.ZHANG Dan,HE Xi-ping.Design of ultrasonic distance testing system based on microprocessor[J].Basic Sciences Journal of Textile Universities,2008,21(1):117-120.
[7]胡寧博,李劍,趙櫸云.基于HMC5883的電子羅盤設(shè)計(jì)[J].傳感器世界,2011(6):35-38.HU Ning-bo,LI Jian,ZHAO Ju-yun.Digital electronic compass based on HMC5883[J].Senor World,2011(6):35-38.