一千萬個為什麽

搜索

我如何獲得準確的時間?

我使用Arduino制作了一個時鐘,但時間似乎在漂移。我了解翻轉問題;在一周的時間裏,時鐘似乎漂移約15分鐘。

我正在使用一個定制的PCB,並帶有這個諧振器< a>來自Digi-key。該代碼在每個循環的開始處讀取millis()函數,並從該值開始工作。

我的問題是:我如何用Arduino測量時間,足夠準確地制作可通過的桌面時鐘?

最佳答案

註意:盡管我的答案被接受並且得票率更高,但請確保您閱讀了埃德加博內的偉大答案了解如何讓您的Arduino在沒有RTC的情況下保持時間。

我在使用DS1307實時時鐘方面非常成功。以下是數據表的鏈接。

以下是它的一些功能:

  • 它使用IC接口與Arduino進行通信,使用正確的庫(網上提供)很容易編程。

  • 它通過SCL和SDA引腳(分別為模擬A4和A5)連接到Arduino,因此只使用2個引腳。

  • 它只需要很少的外部組件即可運行。

  • IT可以連接到紐扣電池,以便在Arduino關閉時保持時間。在低功耗模式下,紐扣電池可使用多年。
  • 它漂移很小(在我的情況下,它每周只漂移幾秒鐘)。

  • 這不是很貴。

如果您不打算使用RTC,您可以將通常用於為Arduino提供時鐘的晶振替換為晶振模塊,例如這個來自Farnel另一個。它們采用4引腳封裝,如下圖所示。他們將為您的arduino生成更精確的時鐘。

Crystal oscillator image Crystal oscillator image Crystal oscillator image

上述兩個模塊的公差均為50 ppm,工作電壓為5V。

再次,為了清楚起見,這些晶體振蕩器模塊不要與以下所示的普通2引腳晶體混淆。例如,這些是MCU的外部時鐘電路的一部分。

Crystal oscillator

轉載註明原文: 我如何獲得準確的時間?