周鵬
(華僑大學 信息學院,福建 廈門 361021)
超聲波具有束射性好,方向性和抗干擾性強的特點使其被廣泛應用于移動機器人的自動導航[1-2]。但僅用超聲波測障無法精確確定移動機器人的位置,因為它不能全面獲知障礙物的方位(角度和方向),所以必須附加具有測試方位的傳感器。
針對上述問題,提出一種基于STC89C52單片機的電子羅盤-超聲波測障方案,實驗表明,系統在定位精度和可靠性達到設計要求。
系統主要由STC89C52單片機,超聲波電路(超聲波發射電路和接收電路),電子羅盤電路,LCD1602液晶顯示電路和電源組成(如圖1所示)。

圖1 系統框圖Fig.1 Structure diagram of MCU
系統中,超聲波電路用于測試與障礙物的距離。其工作原理[3]是根據系統發射超聲波和接收到反射波的時間差,結合修正后的波速計算出與障礙物距離。測距公式如下:

其中,S為與障礙物距離,單位m。
v為帶溫度補償的超聲波傳播速度,單位m/s。
t為超聲波發射與接收到反射波時的時間差,單位s。
331.5 為0℃時超聲波在空氣中的傳播速度,單位m/s。
Δ為實測溫度,由測溫度電路測得,單位℃。
電子羅盤電路用于測試與障礙物的方位(角度和方向)。其工作原理[4]是利用磁阻傳感器測試與地磁場的偏移關系從而獲取方位信息。
STC89C52單片機是系統的核心,用于處理上述數據并將其顯示在LCD1602液晶顯示器上。
系統選用STC89C52單片機,它具有抗干擾性能強、速度快、功耗低和指令代碼完全兼容8051單片機等特點。其主要參數為[5]:時鐘頻率最高可達80 MHz;內置8K字節的Flash-ROM,512字節的RAM和2 K字節的E2PROM;3個16位定時器/計數器,一個6向量2級中斷結構。
STC單片機系統由STC89C52單片機,時鐘電路,復位電路組成(如圖2所示)。
時鐘電路采用內部時鐘方式,為單片機系統提供時鐘信號。
復位電路采用上電自動復位和按鍵復位的方式,只要保證加到RST引腳的高電平持續時間大于2個機器周期就能使單片機正常復位。
系統選擇LCD1602(HD44780)液晶顯示器實時顯示障礙物的方位,距離,時間等信息。LCD1602是工業字符型液晶顯示器,它能夠同時顯示32個字符(16列2行),具有低功耗、顯示內容豐富等特點。LCD1602與單片機接口電路如圖3所示。

圖2 STC單片機系統Fig.2 Structure diagram of STC MCU

圖3 LCD1602與單片機接口電路Fig.3 Interface diagram of LCD1602 and MCU
超聲波電路由超聲波發射電路和超聲波接收電路組成,選用壓電式超聲波傳感器 (型號TCT40-16T/R,中心頻率40.0±1.0 kHz)。
超聲波發射電路(如圖4所示)由555定時器,CD4069,TCT40-16T發射器等組成,它是利用發射器的逆壓電效應,將高頻電振動轉換成機械振動,產生超聲波發射出去的電路。電路中,當單片機控制引腳P1.4為低電平時,555定時器產生中心頻率40 kHz的高頻信號,由引腳3輸出至CD4069,CD4069將其整形后驅動發射器發射超聲波。
超聲波接收電路(如圖5所示)由TCT40-16R接收器和紅外線檢波芯片CX20106A等組成,它是利用接收器的壓電效應,將接收的超聲振動轉換成電信號,實現微弱反射回波的放大,濾波,檢波,整形輸出的電路[6]。電路中,反射波由引腳1輸入,此信號被處理后由引腳7輸出低電平,此負跳變通過P1.5引入單片機,單片機以查詢的方式獲取該信號的變化(反射波)。

圖4 超聲波發射電路Fig.4 Circuit of ultrasonic emision

圖5 超聲波接收電路Fig.5 Circuit of ultrasonic receiver
電子羅盤電路由電源電路,HMC5883L集成模塊(主要電路如圖6所示)組成。HMC5883L內置磁阻傳感器,12位ADC,放大器,I2C 數字接口,測量精度達到 1°~2°[7]。

圖6 電子羅盤與單片機接口電路Fig.6 Interface diagram of electronic compass and MCU
系統由電壓芯片7805和662K分別為單片機和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
系統軟件采用結構化設計,即主函數調用子函數,子函數再調用各功能子函數。主函數由初始化函數(初始化定時/計數器,LCD1602液晶顯示器,電子羅盤模塊等)和調用子函數(測距,測方位,時間和日期顯示等函數)組成。子函數包括測方位函數(電子羅盤模塊實現),測距函數(超聲波模塊實現)和信息顯示函數(顯示方位,距離,時間和日期)。功能子函數用于驅動底層硬件。系統流程如圖9所示。

圖9 系統流程圖Fig.9 Flow-process diagram of system
1)初始化函數
①void TimerInit(void)//T0/T1 同為定時器,工作方式 1,T0定時50 ms產生一次中斷;T1用于計數超聲波測距時間
②void InitLcd1602(void)//初始化 LCD1602 液晶顯示器
③void InitHMC5883(void)//初始化 HMC5883L 電子羅盤模塊
④void SetClock (unsigned char, unsigned char, unsigned char)//設定時間
⑤void SetDate (unsigned char, unsigned char, unsigned char)//設定日期
2)調用子函數
①void TrigUltra(void)//啟動超聲波測距
②void ShowDistanceUltra(void)//顯示與障礙物的距離
③void StartHmc5883(void)//啟動方位測試并顯示結果
④void RunDigitalClock(void)//顯示時間
⑤void RunDate(void)//顯示日期
1)LCD1602液晶顯示函數
① void TestLcdIdle(void)//忙檢測
②void WriteCommand(unsigned char)//寫入命令
③void WriteData(unsigned char)//寫入數據
④void InitLcd1602(void)//清屏、設置光標等初始化
⑤)void SetPos_1602 (unsigned char,bit)//設定顯示內容的起始位置
⑥void PrintC_1602(unsigned char)//字符顯示
⑦void PrintS_1602(unsigned char*)//字符串顯示
2)超聲波測距函數
①void DistanceUltraProcess(void)//根據定時器計數值計算距離
②void ShowDistanceUltra (long)//顯示測距結果
②void ShowBlindSpotUltra (void)//顯示盲點(超過測距范圍)
3)電子羅盤測方位函數
①void StartHmc5883(void)//起始信號
②void StopHmc5883 (void)//終止信號
③void SendAckHmc5883(bit)//發送應答信號
④bit RecvAckHmc5883 (void)//接收應答信號
⑤void SendByteHmc5883 (unsigned char)//發送單字節數據
⑥unsigned char RecvByteHmc5883 (void)//接收單字節數據
⑦void WriteByteHmc5883(unsigned char, unsigned char)//寫入單字節數據
⑧void ReadByteHmc5883(unsigned char, unsigned char)//讀取單字節數據
⑨void ReadAngleHmc5883 (void)//讀出測試角度數據
系統實際運行結果如圖10~13所示。

圖10 測試結果一Fig.10 The result of the first experiment

圖11 測試結果二Fig.11 The result of the second experiment

圖12 測試結果三Fig.12 The result of the third experiment

圖13 測試結果四Fig.13 The result of the fourth experiment
圖中, 第 1 行:”XX:XX:XX” 為時/分/秒;”XX/XX/XX”為年/月/日;
第2行:”EXXX.X。是以順時針為旋轉方向與東的夾角(系統以東為參考起點,角度為0時指向東),單位為度;”DXXX.XCM”為與障礙物的間距,單位為厘米。
經過實測,系統能精確測試障礙物的方位和間距,并數字顯示。實驗表明,系統測障功能達到設計要求,整個電路簡單實用,為后續深入研究移動機器人自動導航奠定基礎。
[1]童峰,許天增.一種移動機器人超聲波導航系統[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]蘇強,林旭梅.一種基于單片機的超聲波傳感器的研究與設計[J].微型機與應用,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的超聲波測距防撞系統設計[J].儀表技術與傳感器,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].信息與電子工程,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]王節旺.一種基于STC89C52RC單片機的計時系統的設計方案[J].微型機與應用,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].紡織高校基礎科學學報,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的電子羅盤設計[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.