2013-11-28 129 views
2

我有兩個手推車繞軌道移動,兩者都使用超聲波測量模塊來檢測障礙物在其路徑,並通過微控制器的Arduino控制。兩個超聲波傳感器以相同的頻率工作,並且這個頻率不能改變。兩個超聲波傳感器相互干擾。如何通過在Arduino代碼中添加一些東西來減少這種干擾或防止干擾。硬件不能改變。感謝您的幫助的Arduino +多個超聲波傳感器+干擾

回答

6

有一般的六種方式來減少兩個信道之間的干擾(例如,見http://en.wikipedia.org/wiki/Multiplexing) - 其中兩個並不適用於聲音。這留下了四個:

space  - don't operate in the same space (e.g. cell towers): not applicable for you 
frequency - (e.g. channels) you said you can't change that 
time  - don't operate at the same time 
code  - send out different amplitude patterns 

從某種意義上說,「代碼」有點像「時間」,但更復雜。使用「時間」時,嘗試對其進行計時,以便兩個傳感器不會同時傳輸。用「代碼」,他們發送複雜的脈衝序列,並使用這些來消除干擾。

我認爲你最好的選擇(簡單但有效)是「時間」。這將取決於更新的你所需要的頻率一點點,但你可以做一個越野車的「主人」,發送短啁啾每100毫秒(說);然後有第二個車等待,直到聽到主人啁啾,和50個ms後發送它自己的脈搏(當它知道其他車會安靜)。通過這種方式,每個人每秒鐘都會有10次更新,但不會產生干擾。

爲了更強健,「奴隸」車可以決定(在沒有聽到「主」脈衝後)在100 ms後發送自己的脈衝 - 這樣,當只有一輛車出現時,它可以運行。他們實際上可以使用這種算法 - 那麼就沒有「主」和「奴隸」,他們有相同的代碼(通常是一個好主意)。作爲最後的調整,如果你隨機使這個「等待n ms」的間隔,你將實現一個版本的「載波偵聽多路訪問碰撞檢測」 - 見http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection

祝你好運。

相關問題