江智威,劉培培,楊 毅,殷佳莉
(成都理工大學 信息科學與技術(shù)學院(網(wǎng)絡安全學院、牛津布魯克斯學院),四川 成都 610059)
近些年,電子技術(shù)的不斷發(fā)展使得非接觸式的測距方法層出不窮,相較于傳統(tǒng)人工測量存在的費時費力、部分環(huán)境人類難以實地測量等問題,電子測量方式應用更加廣泛且更貼近生活。例如生活中常見的倒車預警、家裝設計、工程測量等。隨著5G、AI、物聯(lián)網(wǎng)等新技術(shù)的不斷成熟,自動泊車、自動駕駛、智能工作機器人等新科技產(chǎn)品也需要更加穩(wěn)定的測距工具[1-3]。
常見的測距方法包括:視覺檢測技術(shù)、雷達測距技術(shù)、超聲波測距技術(shù)和激光測距技術(shù)。前兩種方案的價格昂貴、軟硬件設備復雜,不適合應用于日常生活中。超聲波和激光的測距方式因其價格便宜、設備簡單,成為了民用領域最常見的測距方式[4]。
超聲波測距和激光測距都有較好的精度,但是二者都會因為環(huán)境條件的不同而影響其工作的穩(wěn)定性。超聲波測距的精確度容易受到環(huán)境溫度、濕度的影響,而激光測距則可能受到環(huán)境光照強度,尤其是紅外光強度的影響而導致測量結(jié)果的誤差增大[5]。因此,該文設計一種激光與超聲波混合的測距方式,利用二者影響因素的不同相互抵消誤差,并使用最小二乘法減小測距誤差,使測距結(jié)果更加準確。
該文設計了一種基于STM32的激光與超聲波聯(lián)合測距方法。該方法所應用的主要設備包括:STM32F103開發(fā)板、VL53L0X激光測距模塊、HC-SR04超聲波傳感器、光敏傳感器、溫度傳感器、LCD顯示屏。首先利用VL53L0X激光測距模塊和HC-SR04超聲波傳感器模塊對目標進行測距,光敏傳感器和溫度傳感器用于監(jiān)測測試環(huán)境的光照強度和溫度,通過STM32F103ZET6主控芯片對所有模塊發(fā)送控制指令和接收數(shù)據(jù),并將得到的最終測量距離通過LCD屏幕顯示。
該方案的系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖
該文選用的主控芯片是STM32F103ZET6芯片,STM32F103系列芯片是意法半導體公司基于Cortex-M3內(nèi)核開發(fā)的一款芯片,最大工作頻率達到了72 MHz。Cortex-M3內(nèi)部的寄存器、數(shù)據(jù)路徑、存儲器接口等皆為32位。Cortex-M3內(nèi)核采用了哈弗結(jié)構(gòu),擁有獨立的指令總線和數(shù)據(jù)總線并且包含了多個能夠并行處理的總線接口,使得調(diào)用指令和讀寫數(shù)據(jù)能并行處理,從而提升了工作速度。
該主控模塊主要是對超聲波測距模塊、激光測距模塊傳輸控制指令,控制測距模塊工作并接收所測距離數(shù)據(jù)。主控模塊同時控制光敏傳感器和溫度傳感器進行工作,收集光照強度和溫度數(shù)據(jù)對已經(jīng)獲得數(shù)據(jù)進行補償和加權(quán)計算。
VL53L0X是較常用的ToF激光測距傳感器,其使用了940 nm無紅光閃爍激光器,采用了脈沖式的測距技術(shù),避免了相位式測距方法所存在的檢測峰值的誤差。脈沖式激光測距的原理和過程是測距儀器發(fā)射出的激光經(jīng)被測物體反射后由接收端接收回射激光,測距儀器記錄激光往返時間,測距儀器和物體之間的距離為:
(1)
其中,S1為所測距離,C1為光在空氣中的傳播速度,T1為激光往返時間。該方法的精確度取決于接收通道帶寬、探測器信噪比和時間間隔精確度。
VL53L0X模塊原理圖如圖2所示。從圖中可以發(fā)現(xiàn),VL53L0X自帶了2.8 V的穩(wěn)壓芯片,因此無論是3.3 V還是5 V的外部電源都能使VL53L0X正常工作。模塊通過IIC接口與外部通信,SCL和SDA用于連接MCU的IIC接口[6-8]。
圖2 VL53L0X原理
VL53L0X模塊提供了3種測量模式:(1)單次測量模式:該模式只觸發(fā)進行一次測量,測量結(jié)束則返回待機狀態(tài)等待下一次觸發(fā);(2)連續(xù)測量模式:該模式進行連續(xù)的測量,直到用戶停止測距才返回待機狀態(tài);(3)定時測量模式:該模式下,模塊通過用戶定義的延遲時間進行連續(xù)測量,直到用戶停止測距則返回待機狀態(tài)。用戶可以根據(jù)需要通過外部的KEY按鈕選擇工作模式,最大精確測量范圍約為1米左右。
意法半導體公司還為VL53L0模塊提供了4種不同精度的測量模式:(1)默認精度模式:測距范圍約1.2米,測量時間約30 ms;(2)高精度模式:測距范圍約1.2米,測量時間約200 ms,黑暗環(huán)境中的精確度在正負3%左右;(3)長距離模式:測距范圍約2米,測量時間約33 ms,但只適合在黑暗(無紅外光)環(huán)境中使用;(4)高速模式:測距范圍約1.2米,測量時間約20 ms,精度在正負5%左右。
該文采用ATK-VL53L0X-V1.1激光測距模塊,具有測量精度高、體積小、支持IIC通信等特點。在測試中,選用單次測量、默認精度模式。
該文選取HC-SR04超聲波傳感器,此模塊精度較高、盲區(qū)少,常用于機器人避障、物體測距、倒車雷達等民用領域。HC-SR04包含Vcc、Gnd、Trig、Echo四個接口。Vcc和Gnd分別接入3.3 V電源和地,主控模塊發(fā)送一個10 μs以上的高電平,Trig端接收到高電平后傳感器開始工作,模塊內(nèi)部循環(huán)發(fā)出8個40 kHz的脈沖,回響信號由低變高則計時開始,當回響信號由高電平變回低電平則計時結(jié)束,其高電平通過Echo引腳傳回MCU。超聲波模塊的工作時序如圖3所示。
圖3 超聲波傳感器時序
根據(jù)圖3可以看出,回響信號的高電平持續(xù)時間與距離有關(guān),則超聲波模塊的距離計算公式為:
(2)
其中,S2為超聲波模塊所測距離,C2為聲速,T2為回響信號高電平的持續(xù)時間[9-11]。
STM32內(nèi)部有一個溫度測量傳感器,可以用于測量周圍溫度。該傳感器通過ADCx_IN16通道與開發(fā)板的MCU相連接。它的輸出電壓值與溫度相關(guān),并將輸出電壓轉(zhuǎn)化為數(shù)字值輸出到LCD屏幕。該溫度測量模塊的模擬采樣時間是17.1 μs,支持的溫度測量范圍值為-40至125攝氏度,精度約為±1.5攝氏度。
使用內(nèi)部溫度傳感器時,先激活ADC的內(nèi)部通道,將ADC_CR2的AWDEN位設置為1,啟動傳感器并設置其與ADCx_IN16通道連接。只需通過ADCx_IN16通道讀取傳感器傳回的電壓值即可根據(jù)公式計算出當前溫度。
光敏傳感器作為最常見的傳感器之一,有光電管、光敏電阻、光電二極管、光電三極管、CCD或CMOS圖像傳感器等。該文采用一個光電二極管作為器件的光敏傳感器。光電二極管與常規(guī)二極管的原理和功能類似,它有一個具有光敏特性的PN結(jié),工作時需對其加上反向電壓。當受到光照時,PN結(jié)中形成空穴對,使得少數(shù)載流子密度增加,從而導致反向飽和電流增大形成光電流,并隨著光照強度的變化而變化。
將光電二極管與一個電阻串聯(lián),將電流變化轉(zhuǎn)換為電壓變化,只需通過測量電壓值就可以判斷當前的光照強度。整個光敏傳感器模塊通過PF8通道與MCU相連,通過讀取PF8通道的數(shù)值計算當前光照強度。
該系統(tǒng)的數(shù)據(jù)傳輸主要通過ADC通道和IIC通道。STM32F103ZET擁有3個12位的逐次逼近型的模數(shù)轉(zhuǎn)換器,最大轉(zhuǎn)換速率為1 MHz,可測量16個外部信號源和2個內(nèi)部信號源。IIC總線是由SDA數(shù)據(jù)線和SCL時鐘構(gòu)成的串行總線。當SCL為高電平,SDA由高電平向低電平跳變則開始傳輸數(shù)據(jù),SDA由低電平向高電平跳變時結(jié)束數(shù)據(jù)傳輸。
測量模塊測得距離、溫度、光強度的數(shù)據(jù)后,通過ADC和IIC通道傳輸給MCU進行下一步處理。
該系統(tǒng)利用Keil5對項目軟件進行開發(fā),采用C語言進行程序的編寫。主要程序包含:系統(tǒng)主程序、激光傳感器工作程序、超聲波傳感器程序、溫度傳感器程序、光敏傳感器程序、數(shù)據(jù)收發(fā)程序、LCD顯示程序,整個系統(tǒng)的工作流程如圖4所示。
圖4 系統(tǒng)流程
第一步:電源通電,系統(tǒng)對各個器件進行初始化。
第二步:溫度傳感器測量環(huán)境溫度,對超聲波測距進行溫度補償計算。測溫公式為:
T={(V25-Vsense)/Avg-Slope}+25
(3)
其中,T為所測溫度值,V25是在25攝氏度環(huán)境下的基準測量電壓值(約為1.43 V),Vsense為當前所測電壓值,為Vsense曲線的平均斜率(約為4.6 mV/℃)。
由于不同溫度下,聲音速度有差別,故對超聲波聲速進行補償計算,減少其誤差。超聲波聲速的溫度補償公式為:
C3=331.4+0.6T
(4)
其中,C3為溫度補償后的聲音傳播速度,T為所測的工作環(huán)境溫度[12-13]。
第三步:激光模塊和超聲波模塊進行測距工作,光敏傳感器對工作環(huán)境的光照強度進行測量。該文采用STM32開發(fā)板板載的光敏二極管作為光敏傳感器。光敏二極管與一個1 kΩ的電阻串聯(lián),可通過測量其電壓變化,并通過ADC讀取電壓值。將其量化后,將光照強度分為0至100,其中0對應最暗,100對應最亮。這里主要在太陽光下進行測量,因為太陽光中的紅外光對激光傳感器的精度影響較大。
第四步:將激光測距和超聲波測距的結(jié)果進行加權(quán)計算,加權(quán)計算公式為:
S=(1-A/100)×S1+(A/100)×S2
(5)
其中,S為加權(quán)計算后的距離,A為光照強度,S1為激光所測距離,S2為超聲波所測距離。
第五步:將加權(quán)計算后的距離帶入所求得的線性回歸模型,求出最終結(jié)果。
第六步:最終結(jié)果的輸出包含多種形式,可以通過LCD屏幕直接顯示測距結(jié)果,也可以把結(jié)果通過串口通信、藍牙通信等手段輸出給PC機、手機等終端設備做進一步的處理。該文采用LCD屏幕作為測距結(jié)果輸出設備。
最小二乘法在誤差估計的相關(guān)問題中有著廣泛的應用。它通過已有數(shù)據(jù),尋找使誤差的平方和最小化的函數(shù),從而達到降低誤差的目的。最小二乘法具有最小方差性、線性、無偏性,這三種性質(zhì)保證了其估計值是相對貼近實際值的結(jié)果。
該文選用了一階最小二乘回歸算法對除了溫度、光照以外的其他因素造成的測距誤差進行校正。最小二乘回歸算法的數(shù)學模型為:
Dn(x)=a0+a1x+a2x2+…+anxn
(6)
該文采用的是一階最小二乘回歸,故所求的回歸模型表達式為:
f(x)=ax+b
(7)
其中,f(x)為最小二乘回歸校正后的距離,x為激光與超聲波聯(lián)合測距經(jīng)過加權(quán)計算后的距離,a、b為待確定系數(shù)。a、b的值滿足方差E取值最小[14-15]。
(8)
其中,yi為實際距離,xi為測量距離。利用式(8)分別對a,b求解偏微分,并令其為0,則a、b的求解公式為:
(9)
利用所測得的數(shù)據(jù),求出a、b并帶入式(7),可以解得最小二乘回歸模型為:
f(x)=1.04x-0.16
(10)
該文采用50 cm直尺作為標準距離,對激光與超聲波聯(lián)合測距設備進行對照測試。測試分別在上午、中午與夜晚進行,光照強度分別為50、90、0,環(huán)境溫度為27℃、32℃、26℃。分時段測量的目的是為了模擬不同的工作環(huán)境,使得測試結(jié)果盡量貼近實際應用情況。測試結(jié)果如表1~表3所示。
表1 上午測距結(jié)果
表2 中午測距結(jié)果
表3 夜晚測距結(jié)果
根據(jù)表1至表3,再對12次測量的誤差分別取平均值,超聲波測距的平均誤差為4.08%,激光測距的平均誤差為4.63%,加權(quán)后測距的平均誤差為3.59%。通過比較可以得知,加權(quán)后的平均測距誤差比超聲波測距的誤差降低了約0.49%,比激光測距的平均誤差降低了1.04%。該實驗結(jié)果表明,根據(jù)激光與超聲波影響因素不同而采用加權(quán)平均計算減小誤差的方法是可行且有效的。
利用式(9)繼續(xù)對加權(quán)后距離進行最小二乘回歸校正。校正后結(jié)果值如表4所示。
表4 最小二乘回歸校正結(jié)果
通過對表4中校正后誤差取平均值,可得校正后平均誤差值為2.15%,相較于加權(quán)后的平均誤差值3.59%再次降低了1.44%。因此,可以得到最終結(jié)論,該設計方案相較于傳統(tǒng)的超聲波測距和激光測距有著更高的穩(wěn)定性。
基于STM32芯片,功能模塊主要包括距離測量模塊、外部環(huán)境檢測模塊、數(shù)據(jù)處理模塊和數(shù)據(jù)通信模塊,利用超聲波測距技術(shù)、激光測距技術(shù)為測距基礎工具,用光敏傳感器和溫度傳感器作為外部輔助工具,通過ADC和IIC通信接口傳輸數(shù)據(jù),最后采用加權(quán)平均計算和最小二乘法的校正算法處理測量數(shù)據(jù),設計出了一種更具穩(wěn)定性的短距離測距工具。該文詳細介紹了超聲波測距、激光測距和最小二乘回歸算法的相關(guān)技術(shù)原理,描述了系統(tǒng)的硬件和軟件的設計流程,制作并設計了模擬實驗。實驗結(jié)果表明,該設計方案能起到提高穩(wěn)定性、減小誤差的作用。該設計成本低、容易操作、穩(wěn)定性強,可以應用于倒車預警、家居測量、工程測繪等領域中。