藍點DWM1000 模塊已經打樣測試完畢,有興趣的可以申請購買了,更多信息參見 藍點論壇
正文:
DWM1000 超寬帶測距,使用的TOF(time of fly) 的方式,也就是計算無線電磁波傳輸時間,通過傳輸的時間換算成距離。 電磁波傳輸速率和光速一樣,速度是299792.458km/s,可參見百度百科。如果想通過測試這個傳播時間換算距離,那么就需要非常高的內部時鍾。然。。。並不是有了高速的內部時鍾即可測距,還需要一點,數據送達天線的精確時間,也就是我們發送數據時,何時將數據送到天線,以及接收到有效數據到天線時的確切時鍾。 理論上所有滿足以上兩點的射頻收發器都可以實現TOF測距。
DWM1000有一個delayed 發送,也就是延時發送,可以精確控制發送時間,其實這個可用可不用,用了它可以減少一次數據傳輸而已。
下面簡單介紹官方提供基礎例子中的SS-TWR 和 DS-TWR
不論SS-TWR 還是DS-TWR 都是雙邊測距,能夠得到兩個模塊之間的距離信息,而不是位置信息,位置信息需要后期使用高中數學知識計算。
參考官方資料,但並不會逐句翻譯,盡量寫我的理解,且別人更容易理解的語句。
官方參考資料:《dw1000_user_manual_2.10》APPENDIX 3: Two-Way Ranging
1 Single-sided Two-way Ranging(SS-TWR)
一共有兩個設備,也就是兩個DWM1000 模塊,分別稱為DeviceA 和 DeviceB, DeviceA 在A 時刻發送一條信息給DeveiceB,經過空中一段時間傳播(Tprop)在時刻B到達B設備。
我們很直觀的可以看到,時刻B - 時刻A 就是信號的傳播時間,也就是Tprop,然后換算距離,是否可行? 答案是不能! 因為A 和B 都有獨立的時鍾,並沒有同步,假如二者時鍾可以同步,那么這樣計算是最好的。
什么是二者時鍾同步? 就是某一個時刻下,設備A 和 設備B 時鍾節拍一樣,假如都是20180個時鍾節拍(時鍾節拍從系統上電或者PLL穩定后,從0到最大然后依次0 最大往復)或者兩者知道確切的差值。然DWM1000 模塊間顯然沒有這么高的能力讓不同模塊間時鍾同步。
接着正確的方向分析,DeviceB收到DeviceA 的信息后,經過一段時間Treply,在時刻C時將回復信息發送到DeciveA,這個信息經過一段時間Tprop 后,DeciveA收到。
這里假設兩次信號的傳播時間一致,也就是A發送信息給B 到 B 發信息到A 間隔內二者距離不變,這就要求Treply 很短。
DeciveA 可以通過讀寄存器獲得A 時刻和 D時刻 時間戳,二者相減就是Tround.
從上圖我們還可以看到另外一個時間Treply,這個時間長度實際在DeciveA中計算獲得的。 DeciveB 發送的信息包含了自己接收信息時刻B的時間戳以及發送信息時刻C的時間戳,當A收到信息后二者減法即可得到Treply。
不同的設備時鍾頻率是一致的,通過Tround - Treply 即可得到兩次無線信號傳輸的時間,換算成距離除以2即是DeciveA 和 DeceiveB 之間的距離。
關於時間戳以及時間同步時鍾頻率再舉一個栗子:
假如,你有一兄弟身在美帝,而你在天朝,兩個人都有一個超級無線收發器,想用它測試一下你倆之間的距離。
你兄弟看了下手表,08:10:00(8點10分00秒)按了一下發射器,你收到無線信號,看了下自己的5塊錢的電子表,正好是下午3點整,過了兩分鍾,3點02分00秒,給你老兄發了回去的信息,信息內容是你接收的時間點和發送時間點(分別是3點 和 3點02分00秒),你那位仁兄在08:13:00 收到你回復的信息---》 這個就和上面的圖示類似。
由於時差原因,你老兄的手表和你的是不同步的,時間點不一樣,不能通過你收到 時間和 你老兄發送時間差 計算距離。
但是頻率是一致的,手表都是按秒計算的(不考慮秒表)
你老兄可以根據時間差3分鍾,以及你那邊的2分鍾,算出美帝和天朝無線信號一共傳輸了1分鍾,折半后換算距離就是天朝美帝的距離。(這里僅僅是個栗子)
關於誤差:
你五塊錢電子表跑兩分鍾快10秒,發信息告訴老兄說是2分鍾,其實才1分50秒左右。 這個就是每個個體的差異了,不能保證全部都一樣。誤差不能消除只能減小,減小方法就是收到信息后,盡量快速發送出去,防止誤差累計。
這也是DS-TWR消除誤差主要手段,極度降低Treply 的時間。
另外一點,由於兩個Device 之間只發送了兩次信息(各一次),可能會有障礙物或者的噪聲的干擾,測距變化較大,最好多次取均值,也就是DS-TWR的原理。
接着這個誤差說一下第三方模塊,你的手表之所以不准是因為基准頻率不准,內部小的晶振,對於DWM1000模塊來說,也是需要一個高精度外部晶振,通過內部PLL產生更高頻的信號,如果第三方模塊在晶振上偷工減料,對於精度的影響是不可補償的,不可挽回的,也就是通過軟件無法patch。 考慮上面一個栗子。
下面補一張DWM1000 官方圖片,不同的晶振對於測距的影響。
高精度晶振2ppm,而質量差一點的40ppm,相差20倍。(摘自百度:ppm是個相對偏差,1ppm表示百萬分之一,跟百分比一個道理。晶振頻率一般以MHz(10的6次方)為單位,所以,標稱頻率10MHz的晶振,頻率偏差10Hz就剛好是1ppm)
可以計算出2ppm 到 40 ppm 相差3.8ns,而光1ns傳播30cm,也就是誤差達到1m以上。所以晶振質量至關重要!
再來,可以縱向比較,前面說過 極度降低Treply 的時間
假如同樣是2ppm 的晶振,Treply 增加引入的誤差也是線性的,如果Treply = 5ms,引入的誤差也超過1m
然,並不是第三方模塊不好,舍得投入的第三方模塊性價比一定高於官方模塊!