丁會(huì)利,王迅佳,陳曉
(華域汽車(chē)系統(tǒng)股份有限公司,上海 200433)
超聲波傳感器,因?yàn)槠渚哂泄ぷ鞣€(wěn)定,算法相對(duì)簡(jiǎn)單的特點(diǎn),很早就被廣泛用于車(chē)輛輔助系統(tǒng)中,用于障礙物檢測(cè),泊車(chē)輔助等功能。最近幾年,隨著智能駕駛的興起,超聲波傳感器又被用于智能泊車(chē)輔助系統(tǒng)、側(cè)視輔助系統(tǒng)、高速橫向輔助系統(tǒng)等應(yīng)用中。而以超聲波為基礎(chǔ)的解決方案成本相對(duì)較低,可以滿足中低端車(chē)型對(duì)于智能駕駛的需求。
常見(jiàn)的超聲波傳感器有兩種,第一種是安裝在汽車(chē)前后保險(xiǎn)杠上的,也就是用于測(cè)量汽車(chē)前后障礙物的倒車(chē)?yán)走_(dá),這種雷達(dá)業(yè)內(nèi)稱為UPA;第二種是安裝在汽車(chē)側(cè)面的,用于測(cè)量側(cè)方障礙物距離的超聲波雷達(dá),業(yè)內(nèi)稱為APA。超聲波目前的使用場(chǎng)景,基本有三種,一種是實(shí)現(xiàn)簡(jiǎn)單的倒車(chē)輔助、警告障礙物的預(yù)警功能,配置的超聲波雷達(dá)數(shù)量一般是4 個(gè);另一種是增加了汽車(chē)在前進(jìn)過(guò)程中的預(yù)警,配置數(shù)量在8 個(gè);最后一種就是配置12 個(gè),實(shí)現(xiàn)水平、垂直、斜向全自動(dòng)泊車(chē)的功能[1]。
在系統(tǒng)研發(fā)階段,經(jīng)常需要為系統(tǒng)提供距離信號(hào)以便調(diào)試或者用于測(cè)試系統(tǒng)功能。通過(guò)移動(dòng)物體讓超聲波雷達(dá)檢測(cè)這種方式并不方便實(shí)驗(yàn)室中使用,因?yàn)檎鎸?shí)物體的移動(dòng)需要空間,而且控制物體移動(dòng)的精度和速度會(huì)限制到開(kāi)發(fā)系統(tǒng)功能[2]。這種條件下,仿真超聲波傳感器輸出信號(hào),模擬物體的距離信號(hào),從而“騙過(guò)”控制系統(tǒng)就變成了一種切實(shí)可行的實(shí)驗(yàn)室測(cè)試解決方案。超聲波雷達(dá)仿真系統(tǒng)可以用于算法設(shè)計(jì)、功能測(cè)試、硬件在環(huán)測(cè)試等諸多場(chǎng)景,具有體積小,受環(huán)境干擾低,響應(yīng)速度快,同時(shí)仿真?zhèn)鞲衅鲾?shù)量多、測(cè)試重復(fù)性好等特點(diǎn)。
超聲波傳感器測(cè)量距離是利用了聲波在固定介質(zhì)內(nèi)傳播速度固定的原理。目前,常用探頭的工作頻率有40kHz,48kHz和58kHz 三種。一般來(lái)說(shuō),頻率越高,靈敏度越高,但水平與垂直方向的探測(cè)角度就越小。超聲波傳感器在某一時(shí)刻通過(guò)脈沖激發(fā)傳感器發(fā)射超聲波,超聲波遇到障礙物后反射回波,傳感器探測(cè)到回波后,計(jì)算發(fā)射出超聲波與接收到超聲波的時(shí)間差(T),再根據(jù)聲速(V)算出傳感器與障礙物之間的距離(L)[3]。
計(jì)算公式:
圖1 超聲波傳感器工作原理示意圖[4]
一般車(chē)用超聲波傳感器都采用寬壓設(shè)計(jì),符合車(chē)用12V直流供電。ECU(與電子控制單元)之間信號(hào)傳遞采用數(shù)字信號(hào),既可以提高抗干擾能力,保證數(shù)據(jù)的準(zhǔn)確性,又便于命令傳輸,增加信息傳輸?shù)呢S富性。
超聲波傳感器多采用2 線制或3 線制,信號(hào)收發(fā)使用同一根信號(hào)線,分時(shí)占用資源。這種設(shè)計(jì)可以大大減少車(chē)輛內(nèi)部走線,同時(shí)減少ECU 設(shè)計(jì)過(guò)程中對(duì)接口資源的占用?;诖?,在做傳感器仿真設(shè)計(jì)的時(shí)候,需要考慮到信號(hào)線的復(fù)用,收發(fā)整合在一起,而軟件設(shè)計(jì)過(guò)程中也需要滿足這種分時(shí)占用的特征。
超聲波傳感器有自己固定的工作時(shí)鐘,命令傳輸、發(fā)射聲波、接收回波等都會(huì)按照時(shí)鐘的整數(shù)倍進(jìn)行。
圖2 聲波信號(hào)轉(zhuǎn)換示意圖[4]
超聲波傳感器會(huì)將聲波、回波轉(zhuǎn)換成通訊信號(hào)傳輸給ECU,轉(zhuǎn)換標(biāo)準(zhǔn)跟閾值相關(guān)。當(dāng)檢測(cè)到的聲波或者回波強(qiáng)度超過(guò)預(yù)設(shè)閾值時(shí),會(huì)產(chǎn)生信號(hào)下邊沿,而當(dāng)聲波或者回波強(qiáng)度再次低于閾值時(shí),會(huì)產(chǎn)生信號(hào)上邊沿,當(dāng)這個(gè)過(guò)程完成后,可以判斷接收到了一個(gè)聲波或者回波。
除了檢測(cè)到聲波后會(huì)產(chǎn)生信號(hào)外,傳感器還需要與ECU之間傳輸命令、傳輸配置信息,這些命令按照一定的邏輯特征在信號(hào)線上傳輸。
超聲波傳感器傳輸?shù)氖菙?shù)字信號(hào),信號(hào)之間的分別是通過(guò)脈沖寬度來(lái)識(shí)別的,以標(biāo)準(zhǔn)時(shí)鐘的整數(shù)倍作為計(jì)數(shù),例如6 倍基準(zhǔn)時(shí)鐘代表0、3 倍基準(zhǔn)時(shí)鐘代表1。
超聲波傳感器命令結(jié)構(gòu)按照“命令標(biāo)志”?“命令類(lèi)別”?“命令數(shù)據(jù)”的順序依次在信號(hào)線發(fā)送。而“命令類(lèi)別”和“命令數(shù)據(jù)”并不一定發(fā)生,這種情況導(dǎo)致信號(hào)線上一條信號(hào)的長(zhǎng)度并不固定,這為仿真時(shí)處理信號(hào)邏輯帶來(lái)了一定的困難。
圖3 超聲波傳感器信號(hào)邏輯示意圖[4]
第一章我們已經(jīng)詳細(xì)描述了超聲波傳感器的各方面特征,我們的仿真工作就是需要把這些特征用仿真設(shè)備實(shí)現(xiàn)出來(lái)。不僅如此,我們還要在仿真設(shè)備上實(shí)現(xiàn)自動(dòng)化測(cè)試輔助功能,以便接入到自動(dòng)化測(cè)試設(shè)備中。基于這些要求,我們開(kāi)發(fā)了一套測(cè)試系統(tǒng),仿真超聲波信號(hào),實(shí)現(xiàn)對(duì)超聲波泊車(chē)輔助或者自動(dòng)泊車(chē)功能的測(cè)試。
設(shè)計(jì)的測(cè)試系統(tǒng)框圖如下,主要包括PC 機(jī)、Linux 實(shí)時(shí)機(jī)、FPGA 板卡、CAN 通信板卡和被測(cè)ECU 等組成,其中,仿真系統(tǒng)使用NI cRIO 開(kāi)發(fā)。
圖4 仿真系統(tǒng)框圖
仿真系統(tǒng)主體是FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)設(shè)備。FPGA進(jìn)行傳感器邏輯運(yùn)算并且將運(yùn)算結(jié)果通過(guò)數(shù)字接口發(fā)送給ECU,ECU 接收仿真信號(hào)并正常工作。實(shí)時(shí)操作系統(tǒng)負(fù)責(zé)調(diào)配FPGA 程序、CAN(控制器局域網(wǎng)絡(luò))總線通訊和與上位機(jī)PC 通訊[5]。CAN 總線負(fù)責(zé)為ECU 提供CAN 總線仿真信號(hào),以保證ECU 正常工作。最后,所有數(shù)據(jù)都會(huì)通過(guò)網(wǎng)絡(luò)傳輸?shù)缴衔籔C 機(jī),用于顯示和存儲(chǔ)。
FPGA 程序是超聲波傳感器仿真的核心邏輯實(shí)現(xiàn)。原始數(shù)據(jù)是脈沖序列,根據(jù)第一章介紹,信號(hào)的內(nèi)容并不是直接反應(yīng)在數(shù)據(jù)值中,而是跟脈沖寬度相關(guān),不能直接使用,因此需要通過(guò)FPGA 進(jìn)行計(jì)時(shí)與整理,得到可以識(shí)別與使用的數(shù)據(jù)。
圖5 FPGA 程序框圖
FPGA 程序框圖如上圖所示,“IO 驅(qū)動(dòng)層”從接口硬件中取得數(shù)據(jù)后,傳遞到“數(shù)據(jù)識(shí)別”模塊,“數(shù)據(jù)識(shí)別”模塊通過(guò)計(jì)時(shí)器識(shí)別出具體的命令或是數(shù)據(jù),再傳遞給“邏輯層”供使用。
“邏輯層”負(fù)責(zé)整理命令和數(shù)據(jù),根據(jù)傳感器工作邏輯處理數(shù)據(jù),再根據(jù)處理結(jié)果向硬件發(fā)送相應(yīng)命令和數(shù)據(jù)?!斑壿媽印边€需要把整理好的命令和數(shù)據(jù)傳遞給傳輸層,用于更高一層邏輯處理、顯示和保存。
“數(shù)據(jù)整理”模塊接收到邏輯層的命令和數(shù)據(jù)后,把命令和數(shù)據(jù)整理成超聲波傳感器標(biāo)準(zhǔn)的脈沖序列發(fā)送給驅(qū)動(dòng)層,驅(qū)動(dòng)層執(zhí)行序列給ECU 發(fā)出相應(yīng)的命令和數(shù)據(jù)。
FPGA 程序需要按照一定流程運(yùn)行。FPGA 仿真程序工作流程圖如下:
圖6 FPGA 仿真程序工作流程圖
一般來(lái)說(shuō),ECU 啟動(dòng)后,會(huì)向超聲波傳感器發(fā)送初始化命令,當(dāng)收到工作正常反饋后才能繼續(xù)工作,因此FPGA 程序開(kāi)始后需要等待初始化命令,并且正確處理反饋。如果有配置命令,傳感器會(huì)先處理配置命令。配置結(jié)束后,進(jìn)入等待狀態(tài),等待ECU 通知傳感器發(fā)送超聲波。仿真系統(tǒng)收到發(fā)送命令后,需要向ECU 模擬發(fā)送超聲波的脈沖波形,同時(shí)根據(jù)預(yù)先設(shè)置好的位置信息,進(jìn)行時(shí)間上的延時(shí)后,繼續(xù)向ECU 發(fā)送模擬接收到回波的脈沖波形。至此,一個(gè)完整的距離測(cè)量仿真周期完成。
超聲波傳感器仿真過(guò)程中,除了處理好整個(gè)FPGA 程序邏輯框架以外,一些跟時(shí)間相關(guān)的設(shè)計(jì)細(xì)節(jié)也必須注意。因?yàn)槌暡▊鞲衅鞯乃忻詈蛿?shù)據(jù)傳輸都與脈寬和時(shí)序相關(guān)。
超聲波傳感器一般工作在50kHz 時(shí)鐘下[2],相當(dāng)于20μs一個(gè)基礎(chǔ)時(shí)間周期(Tunit),傳感器仿真工作必須滿足20μs內(nèi)完成全部12 個(gè)傳感器(當(dāng)前主流APA 系統(tǒng)中有12 個(gè)超聲波傳感器同時(shí)工作)仿真計(jì)算工作,同時(shí)又不能超過(guò)設(shè)備計(jì)算能力的限度,經(jīng)過(guò)實(shí)踐中證明,采用1-10μs 為一個(gè)計(jì)算周期是比較合理的。
超聲波傳感器的硬件設(shè)計(jì)中,信號(hào)線只有一條,無(wú)論收發(fā)都會(huì)反映在信號(hào)線的脈沖序列里,而命令或者數(shù)據(jù)并沒(méi)有完全的互斥性,不同的命令或者數(shù)據(jù)可能會(huì)有相同的脈寬計(jì)時(shí),這為FPGA 軟件設(shè)計(jì)帶來(lái)了困難。以elmos 的E524.03傳感器為例,SEND 命令(發(fā)送超聲波)的時(shí)序脈寬是6 個(gè)時(shí)間單位(Tunit),而CMD 命令中的數(shù)據(jù)0,也是6 個(gè)時(shí)間單位(Tunit),如果不加區(qū)分可能會(huì)產(chǎn)生歧義。
解決的辦法是在命令計(jì)時(shí)后,將CMD 命令和SEND 命令序列徹底分開(kāi),一個(gè)序列沒(méi)執(zhí)行完,不對(duì)進(jìn)行命令脈寬計(jì)時(shí),這樣可以杜絕命令歧義發(fā)生。下圖為FPGA 仿真程序處理命令序列流程圖。
圖7 FPGA 仿真程序處理命令序列流程圖
除此之外,在FPGA 程序中還需要設(shè)計(jì)合理的超時(shí)機(jī)制,當(dāng)計(jì)時(shí)計(jì)算超出必要的限度時(shí)退出計(jì)時(shí)計(jì)算進(jìn)入主程序框架,以免陷入“卡死”狀態(tài),失去對(duì)其他命令的相應(yīng)。
基于上述方法實(shí)現(xiàn)的超聲波傳感器仿真系統(tǒng)與一款乘用車(chē)APA 控制器聯(lián)合調(diào)試,檢驗(yàn)仿真系統(tǒng)效果。
超聲波傳感器仿真系統(tǒng)仿真CMD 命令以及CMD 命令數(shù)據(jù)實(shí)測(cè)波形如下:
圖8 仿真CMD 命令以及CMD 命令數(shù)據(jù)實(shí)測(cè)波形
實(shí)測(cè)波形圖中標(biāo)尺24000 代表第24000μs,以此類(lèi)推。實(shí)測(cè)波形符合超聲波傳感器中CMD 命令及其數(shù)據(jù)的標(biāo)準(zhǔn),實(shí)際使用中,傳感器仿真系統(tǒng)可以識(shí)別此命令。
超聲波傳感器仿真系統(tǒng)仿真距離信號(hào)實(shí)測(cè)波形如下:
圖9 仿真95cm 距離信號(hào)實(shí)測(cè)波形
仿真系統(tǒng)在接收到ECU 發(fā)出的SEND 命令后,緊接著仿真一個(gè)發(fā)出超聲波的脈沖波形,經(jīng)過(guò)延時(shí)后,仿真一個(gè)接收回波的脈沖波形。實(shí)測(cè)波形符合超聲波傳感器標(biāo)準(zhǔn),也可以被ECU 所識(shí)別。
綜合實(shí)測(cè)波形顯示,仿真系統(tǒng)有效,可以完成超聲波傳感器波形的仿真。
圖10 不同仿真距離與ECU 計(jì)算距離對(duì)比圖
超聲波傳感器仿真系統(tǒng)最大的意義在于仿真距離,所以我們需要對(duì)實(shí)際仿真的距離與ECU 讀取的距離進(jìn)行比較,評(píng)判是否可以用于ECU 測(cè)試。實(shí)際驗(yàn)證中,我們通過(guò)CAN 網(wǎng)絡(luò)監(jiān)測(cè)ECU 讀取信號(hào)后計(jì)算得到的距離值,并且與仿真系統(tǒng)預(yù)設(shè)的距離信息比較,用來(lái)評(píng)判仿真系統(tǒng)仿真的準(zhǔn)確度。
由以上對(duì)比圖可以發(fā)現(xiàn),在有效距離范圍內(nèi),仿真距離與ECU 計(jì)算距離之間存在相對(duì)固定的差值,分析原因后可以推斷是仿真系統(tǒng)距離算法參數(shù)與ECU 距離算法參數(shù)略有不同造成的,最終根據(jù)不同ECU 產(chǎn)品,可以微調(diào)仿真系統(tǒng)算法參數(shù),就可以達(dá)到相吻合的效果。500cm 以上,ECU 測(cè)量距離不再變化,已經(jīng)到計(jì)算距離上限,因此在500cm 以上不在仿真系統(tǒng)考慮范圍內(nèi)。
通過(guò)以上比較可以發(fā)現(xiàn),仿真系統(tǒng)可以滿足ECU 測(cè)試需要。
本文以elmos E524.03 傳感器為例,介紹了超聲波傳感器的工作原理,并且根據(jù)這些特點(diǎn)設(shè)計(jì)了一套超聲波傳感器仿真系統(tǒng)。系統(tǒng)搭建中注重框架和時(shí)序邏輯的設(shè)計(jì),并且對(duì)重點(diǎn)細(xì)節(jié)進(jìn)行詳細(xì)描述,最終實(shí)現(xiàn)了超聲波傳感器仿真系統(tǒng)。
根據(jù)最終與ECU 的聯(lián)合調(diào)試結(jié)果表明,這套超聲波傳感器仿真系統(tǒng)可以完成對(duì)實(shí)際傳感器監(jiān)測(cè)目標(biāo)的模擬,能夠用于未來(lái)基于超聲波傳感器的智能駕駛系統(tǒng)設(shè)計(jì)驗(yàn)證與測(cè)試。實(shí)際使用中通過(guò)調(diào)整算法參數(shù)可以適配不同傳感器和ECU,通用性較強(qiáng)。