2012年4月19日木曜日

リアルタイムクロック(RTC)を使ってみる

RTC-8564NBを使った秋月のリアルタイムクロックモジュールを使ってみました。
I2Cで通信し、動作電圧は1.8~5.5V、計時電圧は1.0~5.5V。

参考:
■ AVR + RTC-8564モジュール デジタル時計の製作 ■
リアルタイムクロック(RTC)との接続
Arduinoで遊ぼう - リアルタイムクロック
RTC-8564NBモジュール(2)
Arduinoとリアルタイムクロック -1: 定周期タイマー割り込み & スリープ
Arduinoでミリ秒まで出力出来るRTC8564のライブラリ



RTCのバックアップにはボタン電池を使いました。ボタン電池のマイナスとRTCのGNDと接続、ボタン電池のプラスからダイオードを通してRTCのVCCへ。
(Arduinoからの電流が流れ込まないように)
Arduinoからの5Vをダイオードを通してRTCのVCCへ。
(Arduino停止時、ボタン電池からの電流が流れ込まないように)
RTCモジュール上でSCL、SDAのプルアップ、LEDを使うためのショートはしていません。

RTCのINTをプルアップ。

ダイオードはショットキーバリアダイオードがいいようですが今手持ちがないので、スペック不明のダイオードで仮配線。

ライブラリは最下段のサイトから拝借。
ミリセカンドの算出にArduinoの外部割込みを使うのでRTCのINTからD2へ接続。




今のところ次の事ができます。
◆ボタン電池によるRTCバックアップ
◆前回の投稿に載せたSDカードシールドに重ねて、SDカードへ日時と共にセンサー等のデータを保存
◆シリアル通信で日付、時刻の設定
◆D3をLOWでRTCの初期化、D9のLOWでアバウトな0秒合わせ、D4をLOWにするとSDカードへの記録を停止、記録の再開
◆LEDにより、電源投入時SDカードがない時のエラー、書き込み中、ポーズ中がわかる


スケッチ汚いので載せるのやめときます。

上記サイトのスケッチ、ライブラリでコンパイルエラーが出たときは、以下のように変更すると動くかもしれません。
#include <WConstants.h> → #include <Arduino.h>

Wire.send → Wire.write

Wire.recieve → Wire.read

環境:ArduinoUnoR3、Arduino1.0






0 件のコメント:

コメントを投稿