我有一个连接到 arduino 的 GPS 单元,但具体的硬件并不重要。这很可能是一台从标准时间参考接收定期更新的计算机 - 通过互联网 - 并且需要平滑该信号。
GPS 更新大约每 100 毫秒进行一次,但众所周知,Arduinos 上的时钟是不规则的。我的处理器可能会认为 100 毫秒是 120 毫秒或 80 毫秒,这取决于晶体的实际频率。我希望处理器有一个由 GPS 单元驱动但经过平滑处理的计算时间,以便该过程的任何部分都可以随时请求当前时间并获得与实际时间非常接近的时间。
我对 PID 有点熟悉,但在实践中使用它的程度还不足以了解如何将其应用于我当前的问题。我怀疑可能有更好的方法来解决这个特殊问题,尽管我尝试过的几个都遭受了破坏性谐波的影响。
例如。在 ACTUAL 时间 0h 1m 10s 0ms 时,GPS 可能会收到更新,指出时间是 0:01:10.000。如果 105 毫秒后 GPS 尚未更新 cpu,即使 GPS 驱动程序仍认为时间为 0:01:10.000,平滑函数仍应读取 0:01:10.100(ish)。