加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 提問(wèn)
    • 回復(fù):
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

信標(biāo)代碼在單片機(jī)實(shí)踐效果差

2020/04/03
94
閱讀需 2 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

子曰:“不憤不啟,不悱不發(fā)”。卓大大,我現(xiàn)在心好累。

提問(wèn)

我的心好累呀

卓大大您好,我是一名信標(biāo)組的參賽選手 . 最近研究聲音定位已經(jīng)一個(gè)多星期了,一直在跟著您推文中的方法走,也曾像其他人求助,解決了很多問(wèn)題,但是也遇到了一些新的問(wèn)題,有些暫時(shí)想不明白,就想來(lái)請(qǐng)教一下。

購(gòu)買的 TC264 核心板尚未拿到手,于是用上一屆的 K66 板子做實(shí)驗(yàn)。使用的麥克風(fēng)是 MAX9814 模塊,GAIN 接 5V。

實(shí)驗(yàn)電路板與麥克風(fēng)傳感器

?

一開(kāi)始先用兩個(gè)麥克風(fēng),10khz 采集 2000 個(gè)數(shù)據(jù)做互相關(guān)運(yùn)算,結(jié)果存在數(shù)組內(nèi)。找出互相關(guān)的最大值對(duì)應(yīng)的下標(biāo) Nmax,這個(gè)下標(biāo)和 2000 的差 2000-Nmax 即為時(shí)間延遲 / 采樣間隔。

  • 當(dāng) Nmax=0 時(shí),對(duì)應(yīng)信標(biāo)在兩個(gè)麥克風(fēng)正前方,角度對(duì)應(yīng) 90 度;當(dāng) Nmax<0 時(shí),對(duì)應(yīng)信標(biāo)在兩個(gè)麥克風(fēng)左側(cè),定義角度為 0;當(dāng) Nmax0 時(shí),對(duì)應(yīng)信標(biāo)在兩個(gè)麥克風(fēng)的右側(cè),定義角度為 180 度。

實(shí)驗(yàn)布局示意圖

?

這里遇到的問(wèn)題是求出的結(jié)果只有三個(gè),兩個(gè)麥克風(fēng)距離算 8 厘米,最大時(shí)間間隔才 235 微妙,而采樣 100 微妙一次,這樣的結(jié)果就理所當(dāng)然了。

通過(guò)提高采樣速率,軟件插值,提高麥克風(fēng)間距,增加測(cè)量時(shí)間可以增加分辨率。我都嘗試了。

提高采樣速率和軟件插值效果明顯,可以做到互相關(guān)的最大值的坐標(biāo)從 3 個(gè)點(diǎn)內(nèi)的移動(dòng)增大到 100 個(gè)點(diǎn)內(nèi)的 移動(dòng)。我覺(jué)得這應(yīng)已經(jīng)很不錯(cuò)了。

Chirp 信號(hào)波形

?

麥克風(fēng)間距受到 Chirp 半波長(zhǎng)限制,增加采樣時(shí)間效果不明顯(試驗(yàn)從 1000 到 4000 個(gè)點(diǎn))。

然后我開(kāi)始嘗試用三個(gè)麥克風(fēng)實(shí)現(xiàn)定位,作了一個(gè)等邊三角形固定麥克風(fēng)。以厘米為單位建立平面坐標(biāo),求解聯(lián)立的雙曲線方程,再代入第三個(gè)方程求得唯一解。

折騰半天算出來(lái)表達(dá)式非常長(zhǎng)的一串,在電腦上運(yùn)行 C 語(yǔ)言程序,MATLAB 計(jì)算,代入數(shù)值答案都正確而且一致,說(shuō)明等式?jīng)]有問(wèn)題。

使用三角形麥克風(fēng)陣列測(cè)量揚(yáng)聲器的位置

?

把這些代碼移植到單片機(jī)里實(shí)踐,效果確實(shí)非常差:大部分時(shí)候算出來(lái)的 X,Y 坐標(biāo)只是符號(hào)正確而已,說(shuō)明好壞知道我在哪個(gè)象限;有些符號(hào)都是錯(cuò)誤的。我想這個(gè)數(shù)學(xué)模型是非常敏感的。在遠(yuǎn)點(diǎn)的地方雙曲線接近平行,0.1 厘米的誤差都會(huì)導(dǎo)致誤解或者提前相交 -- 失之毫厘,差之千里。

于是,我開(kāi)始尋找誤差來(lái)源:麥克風(fēng)的誤差可以忽略不計(jì);K66 的 ADC 采樣的誤差,一是 ADC 腳懸空時(shí)跳變較大(但是接入麥克風(fēng)后又是穩(wěn)定很多),而是一個(gè) ADC 的才寄回干擾的其他的 ADC。這個(gè)挺明顯的,1 個(gè)麥克風(fēng)+2 個(gè)懸空使用虛擬示波器看波形,有聲音的時(shí)候 2 個(gè)懸空的也有不算小的波動(dòng)。

采集到的波形信號(hào)

?

我找了個(gè) RT1064 來(lái)做對(duì)比,發(fā)現(xiàn)這兩個(gè)指標(biāo)都好上不少;三是麥克風(fēng)不是一個(gè)點(diǎn),是一個(gè)圓柱體,加上等邊三角形的誤差,鳳城參數(shù)和我實(shí)際麥克風(fēng)間具有一定的差距。

然后尋找錯(cuò)誤的來(lái)源:在 Chirp 的中頻段,有可能互相關(guān)的結(jié)果在 t 點(diǎn)和 T-t 點(diǎn)都是峰值(t 是時(shí)間延遲,T 是信號(hào)周期)。因?yàn)槲也杉降男盘?hào)并不是一個(gè)完整周期的 Chirp 信號(hào),可能在我采集的這一段就是規(guī)律的正弦信號(hào),往左往右都可以重合。

Chirp 信號(hào)的自相關(guān)信號(hào)

?

用完整的 Chirp 信號(hào)可以解決這個(gè)錯(cuò)誤,但是在保證時(shí)間分辨率起碼在 10 微妙的情況下,不管是提高采樣頻率還是插值,一個(gè) 0.2048s 的信號(hào)的點(diǎn)起賣超過(guò) 20000 個(gè)。而且不知道信號(hào)的起始時(shí)間的情況下才采集這么長(zhǎng)的時(shí)間也不一定才到完整的一幀 Chirp 信號(hào)。

所以我現(xiàn)在有點(diǎn)懷疑純麥克風(fēng)的方案。折騰了這么久,以為快要成功的時(shí)候又發(fā)現(xiàn)了 一大大堆不知道如何解決的問(wèn)題。我現(xiàn)在也沒(méi)有力氣再重新飛線測(cè)試 RT1064 的結(jié)果了。

Chirp 信號(hào)的 FFT 幅度譜

?

萬(wàn)一只是誤差非常非常大和非常大的區(qū)別呢?不知不覺(jué)寫了這么多,真的是麻煩卓老師了。

回復(fù):

采集數(shù)據(jù)的頻率只需要設(shè)置為 10kHz 就好了,不需要提高采樣頻率。這是因?yàn)閷?shí)際信號(hào)產(chǎn)生的 DAC 的頻率就是 10kHz,提高采樣頻率也不會(huì)提高數(shù)據(jù)的精度;提高自相關(guān)判斷的精度是采用 FFT+補(bǔ)零的方式來(lái)完成的;具體方法以后會(huì)進(jìn)行理論分析;對(duì)于聲源的定位,麥克風(fēng)陣列的極限越長(zhǎng),定位精度越高??梢园殡S追的車模運(yùn)動(dòng),自然產(chǎn)生拉長(zhǎng)后的麥克風(fēng)陣列基線;需要假設(shè)能夠利用調(diào)頻接收模塊來(lái)獲得發(fā)送的信號(hào)。根據(jù)該信號(hào)的起始點(diǎn)來(lái)確定采集的起始點(diǎn)以保證能夠采集到完整的一幀 Chip 信號(hào);在實(shí)際測(cè)試中,距離的重復(fù)誤差應(yīng)該在 1 厘米左右,如果大于這個(gè)誤差,請(qǐng)檢查一下你的電路中實(shí)際信號(hào)的幅值和噪聲。

公眾號(hào)留言

卓大大,可千萬(wàn)別把電磁 AI 的賽道搞得太長(zhǎng),我剛試了一下,推車采集數(shù)據(jù)真的好累人啊 /::<身體累是一方面,心也累,都不知道辛辛苦苦采集的數(shù)據(jù)訓(xùn)練的結(jié)果會(huì)是啥鬼樣子。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

公眾號(hào)TsinghuaJoking主筆。清華大學(xué)自動(dòng)化系教師,研究興趣范圍包括自動(dòng)控制、智能信息處理、嵌入式電子系統(tǒng)等。全國(guó)大學(xué)生智能汽車競(jìng)賽秘書處主任,技術(shù)組組長(zhǎng),網(wǎng)稱“卓大大”。