我有两个四驱车在轨道上移动,两个都使用超声波测量模块来检测路径中的障碍物,并由Arduino微控制器控制.两个超声波传感器以相同的频率工作,并且该频率不能改变.两个超声波传感器相互干扰.如何通过向Arduino代码添加内容来减少这种干扰或防止干扰.硬件无法更改.谢谢你的帮助
通常有六种方法可以减少两个通道之间的干扰(例如参见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毫秒后发送自己的脉冲(当它知道另一辆越野车将会安静时).通过这种方式,每个每秒将有10次更新,但它们不会干扰.
为了更加强大,"奴隶"越野车可以决定(在没有听到来自"主人"的脉冲之后)在100毫秒后发送自己的脉冲 - 这样它就可以在只有一辆越野车时运行.事实上他们每个人都可以使用这个算法 - 然后没有"主人"和"奴隶",他们有相同的代码(通常是一个好主意).作为最后的调整,如果你使这个"等待n ms"间隔随机,你将实现一个版本的"带有碰撞检测的载波侦听多路访问" - 请参阅http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection
祝好运.