簡単な回答
DS1302モジュールをArduinoに接続するには、3本の信号線に加えて電源とグランドを配線し、新しいバックアップ電池を取り付けてから、時刻を一度設定する短いスケッチを実行します。その後は、バックアップ電池が充電されている限り、モジュールが自力で時刻を保持します。
DS1302にバックアップ電池が必要な理由とその動作
DS1302チップは、主電源が切れても小さなバックアップ電池からクロックとカレンダーを動かし続けます。これが、電池駆動や断続的に給電されるプロジェクトで役立つ理由です。購入するモジュールには通常電池ホルダーが付属しますが、電池自体が含まれているかどうかは製品によって異なるため、そのまま差し込めると思い込む前に製品ページを確認してください。
DS1302はI2Cではなく、シンプルな3線式シリアルインターフェース(リセット、データ、クロック)を使用するため、マイクロコントローラーのデジタルピンを3本占有します。これはトレードオフで、配線が簡単で非常に安価ですが、I2C RTCほどバス効率は良くありません。また、年を2桁で保存するため、コードで世紀をどう解釈するかを決める必要があります。
DS1302が処理することと、処理しないこと
このチップは時、分、秒、曜日、日付、月、2桁の年を記録します。カレンダーは月ごとの日数の違いやうるう年を自動的に補正するため、そのロジックを自分で書く必要はありません。ただし、世紀の切り替わりは補正せず、夏時間やタイムゾーンの変更も調整しません。プロジェクトで必要なら、スケッチ側で対応する必要があります。
精度は水晶振動子と電池電圧に依存します。DS1302は温度補償モジュールではないため、時間の経過とともに多少のずれが生じることを想定してください。長期的な精度をより厳密に求めるプロジェクトではDS3231が一般的な代替品ですが、多くのホビープロジェクトではDS1302でも十分な精度があり、コストもはるかに安く済みます。
手順: DS1302の配線、給電、設定
- モジュールをArduinoに配線します: VCCを5V(モジュールが対応している場合は3.3V)に、GNDをグランドに、3本の信号ピン(RST、DAT、CLK)を3つのデジタルピンに接続します。よくある間違いはDATとCLKの取り違えです。電源を入れる前にシルク印刷のラベルを再確認してください。 モジュールが応答しない場合は、RSTが実際にコードによってトグルされているか再確認してください。RST線がフローティング状態だと、バスが死んでいるように見えます。
- バックアップ電池を取り付けて確認します: モジュールにホルダーがあり、電池が事前に取り付けられていない場合は、新しいコイン電池を挿入します。頼る前にテスターで電池電圧を測定してください。電池が弱いと、主電源を切ったときに時刻がリセットされます。 モジュールによっては電池が付属していません。電池駆動の製作を計画する前に、箱の中身を確認してください。
- ライブラリを読み込み、時刻を一度設定します: お使いのボード用のDS1302互換ライブラリ(たとえば一般的なArduino RTCライブラリ)を使用し、現在の日時で時刻設定のサンプルを実行します。一度アップロードしたら、起動のたびに時計がリセットされないよう、設定呼び出しをコメントアウトするか削除してください。 設定呼び出しを有効なままにしておくことが、電源を入れ直すたびに同じ誤った時刻が表示される最も一般的な原因です。
- 電源を切って入れ直しても時を刻み続けるか確認します: 時刻を設定した後、主電源を1分間外し、再接続してから再度時刻を読み取ります。経過した時間とほぼ同じだけ進んでいるはずです。デフォルトにリセットされていたら、まずバックアップ電池またはそのホルダーを確認してください。 電源を切るとリセットされる時計は、ほぼ必ずコードではなくバックアップ電池回路が原因です。
- スケッチで2桁の年と夏時間を扱います: コードで2桁の年を完全な年へどう対応付けるかを決め(たとえば00~69を2000~2069として扱う)、夏時間やタイムゾーンのオフセットをソフトウェアで加えます。DS1302はこれを代行しません。 世紀の扱いに関するルールをコメントに書き残し、スケッチを次に読む人が推測しなくて済むようにしてください。
製品情報
-
DS1302 リアルタイムクロックモジュール: DS1302 リアルタイムクロックモジュールは、24時間表示の時計と、年を2桁で保存し月の日数とうるう年を補正するカレンダーを備えた、コンパクトな電池バックアップ付きクロックモジュールです。カレンダー処理が内蔵されているため、日付計算を書く代わりにプロジェクトのロジックに集中でき、コンパクトなサイズなので小さな筐体にもすっきり収まります。
DS1302 リアルタイムクロックモジュール
