两个相同的Arduino Nano以不同的速度运行?



我正在做一个项目,它要求我使用 2 个独立的 Arduinos 彼此独立运行。现在,这两个Arduino都运行相同的代码,但我注意到在10分钟左右之后,其中一个落后了,并且这个时差随着时间的推移而不断增加。就像我已经提到的,Arduino是相同的,我同时购买了它们,它们正在运行该程序的相同副本。任何想法可能导致这种情况以及如何解决它?

谢谢。

这是我购买的Arduino的链接,以防万一。 我在亚马逊上的 Arduino 模块

晶体振荡器的容差高达100ppm(极端情况),这意味着每秒可能会得到16Mhz*100ppm = 1600个时钟脉冲差。此外,运行时间的差异也可能是由较小的电压差异引起的。即使电路板上有稳压器,它的容差也很小,基于这样一个事实,它在MHz范围内工作,这可以攀升到可识别的偏移。

一种可能的解决方案是两个微控制器的同步。我不是专家,所以以下解决方案是可能且简单的解决方案,但绝对不是最好的。 如果它们彼此靠近,则可以使用每个控制器的两个引脚。一个作为输入,一个作为输出。在你的代码中写这样的东西(如果你使用相同的 Pin 图,两者相同):

digitalWrite(outPin, LOW);
while(digitalRead(inPin)){};
digitalWrite(outPin, HIGH);

将第一个的输出连接到第二个的输入,从第二个连接到第一个相同。 这会导致较快控制器的每个周期都处于等待状态,直到较慢的控制器到达相同的程序部件。但要小心,如果其中一个卡在某个地方,它也会停止第二个。所以没有冗余!如果这是您的目标,请不要使用此方法并搜索其他同步方法。

也许您可以使用一些RTC(实时时钟)硬件来帮助您保持同步。它们非常便宜且易于使用。

相关内容

最新更新