楊秀增+楊仁桓
摘 要: 為了提高超聲波的測量精度,利用FPGA技術設計一款高精度超聲波測距儀。利用Quartus Ⅱ軟件在一片高密度的可編程邏輯門列陣(FPGA)上,設計基于SoPC的硬件系統(tǒng)平臺,并利用Nios Ⅱ EDS開發(fā)軟件開發(fā)測量儀的軟件系統(tǒng)。利用FPGA內部的硬件資源設計高速度的超聲波控制器,采用溫度傳感器DS18B20測量環(huán)境溫度,并利用溫度修正超聲波傳播速度。測試表明,利用該方案設計的超聲波測距儀具有較高的距離測量精度,有一定的實用推廣價值。
關鍵詞: 超聲波; 非接觸式測距; 編程邏輯門列陣; Nios Ⅱ; DS18B20
中圖分類號: TN919?34; TH85 文獻標識碼: A 文章編號: 1004?373X(2017)01?0137?03
Abstract: In order to improve the measurement accuracy, a high?precision ultrasonic range finder was designed based on field programmable gate array (FPGA) technology. The hardware system platform based on SoPC was designed on a high?density FPGA by using Quartus Ⅱ software. The Nios Ⅱ EDS development software is used to develop the software system of the range finder. The hardware resource inside FPGA is adopted to design the high?speed ultrasonic controller. The temperature sensor DS18B20 is employed to measure the environment temperature. The temperature is used to correct the ultrasonic propagation velocity. The test results show that the ultrasonic range finder has high range measuring precision, and a certain practical promotion value.
Keywords: ultrasonic; non?contact range finding; FPGA; Nios Ⅱ; DS18B20
0 引 言
超聲波測距儀是利用超聲波測量距離的一種非接觸式距離測量工具[1?2]。因超聲波具有定向性好、使用方便、成本低廉、抗干擾能力強等優(yōu)點,所以超聲波測距儀在工業(yè)測量、車輛避障[1?4]、安全預警、液位測量[3?4]、機械內部損傷檢[3]、車輛自動導航[4]以及機器人等領域得到廣泛的應用[1?2]。然而,目前大多數超聲波測距儀一般采用MCS?51單片機[5]作為控制器,其測量精度受到定時器的時鐘頻率的限制[3?5],難以令人滿意[1?5]。
針對以上情況,本文利用大規(guī)模的FPGA[6?8]采用軟硬件協(xié)同設計方法,自定義用戶IP核技術和溫度補償技術,設計一套基于SoPC[9]的嵌入式高精度超聲波距離測量系統(tǒng)。本測試系統(tǒng)具有可靠性高、集成度高、響應速度快、精度高和成本低廉等特點。
1 硬件系統(tǒng)設計
在硬件系統(tǒng)上,本測距儀采用一片高密度的可編程邏輯門列陣(FPGA)作為硬件設計平臺,其系統(tǒng)設計框圖如圖1所示,主要由Nios Ⅱ處理器、Avalon?MM總線、JTAG控制器、UART控制器、EPCS控制器、超聲波控制器、LCD控制器、EPCS4存儲器、SDRAM控制器、SDRAM存儲器、LCD顯示器、通用I/O口及HC?SR04超聲波收發(fā)模塊組成。為了實現(xiàn)復雜的控制,在可編程邏輯門列陣(FPGA)中內嵌了一個32位的Nios Ⅱ處理器。Nios Ⅱ處理器是Altera公司提供的32位軟核處理器。在系統(tǒng)設計時,設計者根據項目的要求,把Nios Ⅱ軟核CPU免費地內嵌在Altera公司生產的FPGA中。SDRAM控制器控制著外圍的SDRAM存儲器芯片,用于存放數據。JTAG UART控制器能實現(xiàn)程序的下載和在線調試功能;EPSC控制器控制著EPSC存儲芯片,用于存儲FPGA配制文件;LCD控制器控制著LCD顯示器用于顯示測得的數據。超聲波控制器是根據外部的超聲波收發(fā)模塊的電氣特性而設計的用戶自定義控制器,其輸出引腳TRIG和ECHO與外部的超聲波收發(fā)模塊相連,控制超聲波收發(fā)模塊進行測距。溫度對超聲波的傳播速度影響較大,本系統(tǒng)設計溫度補償電路來提高測量精度。本系統(tǒng)通過PIO與DS18B20數字溫度傳感器相連。
2 硬件系統(tǒng)設計
2.1 超聲波控制器設計
超聲波控制器是本系統(tǒng)的核心模塊,其設計框圖如圖2所示,主要由接口單元電路、寄存器組、倍頻器、計數器和狀態(tài)機組成。接口單元電路起著連接Avalon?MM總線和超聲波控制器的作用。因為在接口單元電路內部有地址譯碼器,所以Nios Ⅱ可以通過地址譯碼器訪問控制器中的所有寄存器。倍頻器的作用是把50 MHz的系統(tǒng)時鐘倍頻到100 MHz,從而提高系統(tǒng)的測量精度。狀態(tài)機控制中各個模塊的協(xié)調工作通過產生各種時序信號實現(xiàn)。TRIG是超聲波收發(fā)模塊的觸發(fā)信號;ECHO是超聲波反射波接收判斷輸入信號;ST是計數器啟動信號,高電平計數器開始計數;CLR是計數器清零信號,CLR為高電平時對計數器的值清零;H是計數器值,保存控制信號, H為高電平時,計數器的當前值被保存在計數器寄存器中。在超聲波控制器中,還定義了三個寄存器,這三個寄存器定義和地址分配情況如表1所示。
2.2 狀態(tài)機模塊設計
狀態(tài)機模塊是超聲波控制器的關鍵模塊,其作用是產生各種控制時序。圖3為狀態(tài)機的狀態(tài)轉換圖,設有空閑、啟動、計數、數據保存和計數器清零五個狀態(tài)。在加電時,狀態(tài)機處于空閑狀態(tài),一旦Nios Ⅱ軟核CPU向控制寄存器寫入啟動指令時,狀態(tài)機進入啟動狀態(tài)。在啟動狀態(tài)中,狀態(tài)機一方面對啟動寄存器進行清零操作,另一方面,產生超聲波測距啟動信號TRIG,啟動超聲波測距模塊產生超聲波,這些任務完成之后,狀態(tài)機進入計數狀態(tài)。在計數狀態(tài)中,計數器對100 MHz時鐘進行計數,當超聲波收發(fā)模塊收到被障礙物反射回來的超聲波時,ECHO變?yōu)榈碗娖剑嫈灯魍V褂嫈?,狀態(tài)機進入數據保存狀態(tài)。在數據保存狀態(tài)中,計數數據被保存在計數寄存器中。數據被保存之后,狀態(tài)機進入計數器數據清零狀態(tài),這時計數器中的值被清零,為下次計數做好準備。
2.3 硬件平臺的設計
超聲波測距儀的SoPC硬件設計采用的是Altera公司的SoPC Builder開發(fā)工具。SoPC Builder是一個功能強大的系統(tǒng)開發(fā)工具,嵌入式系統(tǒng)設計師可以利用此工具非常輕松地設計一個基于Nios Ⅱ處理器的片上系統(tǒng)。在SoPC Builder的圖形用戶界面中,設計者可以把SoPC Builder庫中的功能模塊添加到系統(tǒng)中,除此之外,SoPC Builder還允許設計者把用戶自定義的邏輯單元添加到SoPC Builder庫中。利用SoPC Builder開發(fā)工具定義的硬件系統(tǒng)見表2,其中,ultrasonc是超聲波控制器,是用戶自定義的邏輯控制單元。
2.4 溫度補償電路的設計
超聲波的傳播速度極易受到溫度的影響。超聲波在常溫下的傳播速度大約為340 m/s,但當溫度發(fā)生變化時,超聲波的傳播速度會發(fā)生變化,例如,當溫度每升高1 ℃時,超聲波的傳播速度[10]會增加0.6 m/s,因此,在利用超聲波測量距離時,必需考慮溫度對超聲波傳播速度的影響。
3 系統(tǒng)程序的設計
為了讓本測試儀正常工作,還需要設計本系統(tǒng)的控制程序。系統(tǒng)程序采用Altera公司的Nios Ⅱ EDS 8.0集成開發(fā)環(huán)境對系統(tǒng)程序進行開發(fā)。圖4為本系統(tǒng)程序的算法流程圖。程序啟動后,首先Nios Ⅱ主程序對系統(tǒng)的有關設備進行初始化操作,例如,LCD液晶屏初始化、溫度傳感器DS18B20初始化和串口初始化等。
系統(tǒng)初始化完成之后,Nios Ⅱ軟核CPU讀取DS18B20溫度值,獲取當前測試環(huán)境的溫度值。完成溫度讀取之后,Nios Ⅱ向超聲波控制中的啟動寄存器發(fā)送啟動指令,啟動超聲波測距模塊進行測距, Nios Ⅱ讀取狀態(tài)寄存器的值,了解控制器的工作狀態(tài)。如果控制器正處于忙工作狀態(tài)時,控制器延時一段時間,再次讀取狀態(tài)信息,如果了解到控制器正處于“閑”工作狀態(tài)時,讀取計數寄存器中的值,通過式(1)對超聲波的傳播速度進行修正,再利用修正過的傳播速度計算測距并顯示距離。
4 驗測試結果
為了進一步評估本超聲波測距儀的精度,根據以上的設計方法,利用一塊高密度的FPGA和超聲波收發(fā)模塊設計了一臺試驗樣機,并對該試驗樣機進行性能測試。FPGA采用Altera公司生產的EP1C6Q240C8,超聲波收發(fā)模塊采用HC?SR04。表3為試驗樣機的一組測試結果,從測試結果可以看出,利用本測試測量距離時,除了測量近距離的相對誤差在2%之外,測量中長距離的相對誤差保持在1%以內,因此,本測試儀具有較高的測量精度。
5 結 語
超聲波測距儀是一種非接觸式距離測量工具,具有很多優(yōu)點。本文針對傳統(tǒng)單片機超聲波測距儀測量誤差大的缺點,采用軟硬件協(xié)同設計方法和自定義用戶IP核技術,設計一套基于Nios Ⅱ的高精度超聲波距離測量系統(tǒng),本系統(tǒng)具有可靠性高、集成度高、響應速度快、精度高和成本低廉等優(yōu)點,因此有一定的實用價值和推廣價值。
參考文獻
[1] 汪才杰,張大名,張米露.基于FPGA的高精度超聲波測距系統(tǒng)的設計[J].微型機與應用,2012,31(17):25?27.
[2] 張攀峰,王玉萍,張健,等.帶有溫度補償的超聲波測距儀的設計[J].計算機測量與控制,2012,20(6):1717?1720.
[3] 張全禹,蘇寶林,李懷亮,等.基于FPGA的超聲波測距系統(tǒng)設計與實現(xiàn)[J].電子測試,2014(22):164?165.
[4] 趙海鳴,卜英勇,王紀嬋.一種高精度超聲波測距系統(tǒng)的研制[J].礦業(yè)研究與開發(fā),2006,26(3):62?65.
[5] 張芬,董浩斌,焦彥斌.基于C8051F320單片機的超聲波測距儀[J].儀表技術與傳感器,2009(12):35?37.
[6] 樊紅星,張小超,劉磊,等.基于FPGA的CMOS線陣圖像傳感器數據采集系統(tǒng)設計[J].現(xiàn)代電子技術,2015,38(14):129?132.
[7] 賈穎燾,顧趙宇,傅其詳,等.基于FPGA和DSP的雷達信號脈沖壓縮[J].現(xiàn)代電子技術,2015,38(17):13?16.
[8] 陳鵬名,盧振洋,劉嘉,等.基于FPGA的圖像與模擬信號同步采集系統(tǒng)[J].現(xiàn)代電子技術,2015,38(19):79?82.
[9] 代俊鋒,穆欣.基于SoPC的伺服控制器的方案研究[J].現(xiàn)代電子技術,2015,38(20):150?153.
[10] 趙小強,趙連玉.超聲波測距系統(tǒng)中的溫度補償[J].組合機床與自動化加工技術,2008(12):65?68.