2013-11-28 99 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

祝你好运。

相关问题