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