首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino +多个超声波传感器+干扰

Arduino +多个超声波传感器+干扰
EN

Stack Overflow用户
提问于 2013-11-29 04:01:05
回答 1查看 6.9K关注 0票数 2

我有两辆四轮车在一条赛道上移动,它们都使用超声波测量模块来检测其路径上的障碍物,并由Arduino微控制器控制。两个超声波传感器以相同的频率工作,该频率不能改变。这两个超声波传感器相互干扰。我如何通过在Arduino代码中添加一些东西来减少或防止这种干扰。硬件不能更改。谢谢你的帮忙

EN

回答 1

Stack Overflow用户

发布于 2013-11-29 06:29:56

一般来说,有六种方法可以减少两个通道之间的干扰(例如,参见http://en.wikipedia.org/wiki/Multiplexing) -其中两种方法不适用于声音。这样就只剩下四个了:

代码语言:javascript
复制
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

祝好运。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20273971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档