我有两辆四轮车在一条赛道上移动,它们都使用超声波测量模块来检测其路径上的障碍物,并由Arduino微控制器控制。两个超声波传感器以相同的频率工作,该频率不能改变。这两个超声波传感器相互干扰。我如何通过在Arduino代码中添加一些东西来减少或防止这种干扰。硬件不能更改。谢谢你的帮忙
发布于 2013-11-29 06:29:56
一般来说,有六种方法可以减少两个通道之间的干扰(例如,参见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在某种意义上,“代码”有点像“时间”,但更复杂。使用" time ",您可以尝试对它进行计时,这样两个换能器就不会同时传输。通过“编码”,他们发送复杂的脉冲序列,并使用这些序列来消除干扰。
我认为你最好的选择(简单但有效)是“时间”。这将取决于您需要的更新频率,但您可以将一个buggy设置为" master ",每100ms发送一次短的chirp (比方说);然后让第二个buggy等待,直到它听到master chirp,并在50 ms后发送自己的脉冲(当它知道另一个buggy将是安静的时候)。通过这种方式,每个都将有每秒10次更新,但它们不会干扰。
为了更健壮,“从属”buggy可以决定(在没有听到来自“master”的脉冲后)在100ms之后发送自己的脉冲--这样它就可以在只有一个buggy的情况下运行。它们实际上可以各自使用这个算法--这样就没有了“主”和“从”,它们有相同的代码(通常是个好主意)。作为最后一个调整,如果您使这个“等待n毫秒”间隔随机,您将实现一个版本的“载波侦听多路访问与冲突检测”-请参阅http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection
祝好运。
https://stackoverflow.com/questions/20273971
复制相似问题