
■ TCXO水晶内蔵 SPIバスRTC DS3234Sを制御する ■ |
このICだけで時刻をカウントする、便利なRTC(Real Time Clock)です。
古くからある、TCXOの高精度クリスタルモジュール(秋月電子で販売されていたKTXO-18S等)は、温度変化による水晶の発振周波数のずれをアナログ回路で補正していますが、DS3234Sは、内部に温度偏差のテーブルをデジタル値で持っていて、その値により温度変化に合わせて水晶発振回路のコンデンサー容量を変化させて、周波数の補正を行います。
P3の32.768KHz水晶などと比べて、1桁ほど温度変化による精度が良くなるので、時計としては、かなりの高精度が期待できます。
電波時計の受信状況が悪い環境では、代替えとなる良いデバイスです。
また、水晶を内蔵している上に、停電などで動作電源が切れたときのバックアップ回路も内蔵されており、3Vのボタン電池を接続するだけで時計が動き続けるので、回路も簡単で部品点数を少なくできるのも大きな利点です。
他にも、2つの時刻アラーム、1Hz(変更可)の方形波出力などの機能が付いています。
DS3234Sの日本語マニュアルが見つからないので、私的に翻訳してあります。
個人で使用するために翻訳した物を掲載しておりますので、翻訳間違いや誤字による、
いかなる損害にも責任を負いません。 |
 |
「1.27mmピッチ 20ピンSOパッケージ」なので、テスト用には
2.54mmピッチに変換する変換基板を使用しています。
28ピン用しか販売されていないので、8ピン分は切断してあります。
○ サンハヤト SOP IC変換基板 ICB-010 1.27mmピッチ MAX.28ピン用
○ 秋月電子 SOP28ピン(1.27mm)DIP変換基板
|
DS3234S 時計のテストプログラム |
● 回 路
 |
・当ページに掲載のAVR
&
BASCOM-AVR トレーニング・ボード
を使用して、DS3234Sを制御します。
・もちろん、各種のAVRやポートを選択することもできます。
・マイコンとの接続は、ハードウェアSPIまたはソフトウェアSPIで
行います。
ハードウェアSPI : /SS , SCLK , MOSI , MISO
ソフトウェアSPI : /CS , SCLK , DOUT , DIN
・DS3234Sからは、設定により1Hzの信号も取り出せるので、
表示の更新用に、この信号も使用します。
(オープン・ドレイン出力なので、マイコンの内蔵プルアップを
使用しない場合は、10KΩ程度のプルアップ抵抗が必要です)
・3Vのボタン電池(CR2032)をVBAT端子に接続してバックアップを
行いますので、トレーニング・ボードの電源を切っても、時計は
動作し続けます。
|
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
● プログラム
・マイコンとの通信は、4本の線で行うSPI通信です。 (SPI動作は、モード1とモード3のいずれか)
・通信のフォーマット(書式)が簡単なので、プログラムの難易度は低いと思います。
・BASCOM-AVRには、ハードウェアSPIとソフトウェアSPIの両方の命令が用意されていますので、
回路に合わせて使い分けて下さい。
・マニュアルの「図1.DS3234Sの時刻レジスターとSRAMのアドレス・マップ」に従って、レジスターの
アドレスを指定した後に、データの読み出しまたは書き込みを行います。
(アドレスは自動的に加算(+1)されるので、連続した読み書きも可能です)
・1Hz出力は、初期状態でオフになっているので、「制御レジスター」の「RS2=0,RS1=0(1Hz) ,
INTCN=0(方形波出力)」を設定して出力させます。
・1Hz出力を調べて、[L]から[H]になるタイミングで、DS3234Sから時刻データと温度データを
読み出し、LCDに表示します。 (読み出すタイミングは、特に指定されません)
・曜日は、DS3234Sの「曜日レジスター」を使用せずに、年,月,日からBASCOMの「DAYOFWEEK()」
命令で自動計算して表示します。
・12/24時間制のレジスターも使用せず、DS3234Sは24時間制で動作させて、表示の際にいずれかの
書式に変換しています。
・LCD画面で時刻設定を行った後には、秒を00にしてDS3234Sのレジスターに書き込みます。
・内部の温度計の値も読み出して表示しますが、チップ内部の測定温度なので、室温との誤差は
大きくなります。
(温度の変換は、デフォルトの64秒に1回です)
・SW2[緑]で、時間表示が24時間制と12時間制に切り替わります。
・SW3[黄]とSW4[青]を同時に押すと、時刻設定モードに入ります。
設定項目位置でカーソルが点滅します。
SW2[緑]で、設定値が[−]されます。
SW3[黄]で、設定値が[+]されます。
(1秒以上押し続けると、リピート動作に入ります)
SW4[青]で設定を終え、次の項目に移ります。
(曜日は自動的に計算され、表示されます)
・分の設定が終わると、秒を[00]にして時刻のカウントが再開されます。
注意! 著作権は放棄しておりませんので、販売目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|
● 32KHz信号出力
 |
・DS3234Sには、内蔵しているTCXO水晶発振(32.768KHz)の
出力があります。
・25℃ 4.6Vの環境で簡易測定しましたが、なかなかの精度です。
・電圧による変動も微々たる物でした。
3.3V = 32,767.987Hz -0.013Hz
4.6V = 32,768.000Hz
5.0V = 32,768.006Hz +0.006Hz
・温度差による、簡易の周波数変動も調べて見ました。
・小数点以下2桁目の変動から見ると、秋月のKTXO-18S 12.8MHz
より激しいような気もしますが、長期的な温度変化に対する仕様は
同程度なので、年間を通しての精度はとても良い物です。 |
|

■ TCXO水晶内蔵 I2CバスRTC DS3231を制御する ■ |
上記のDS3234Sと機能は同じで、インターフェイスがI2Cバスのデバイスです。
機能やレジスター構成などは、一部の機能を除いて同じ仕様です。
日本語のデータ・シートは無いので、上記のDS3234Sの日本語マニュアルをI2Cに読み替えてください。
● マニュアルの相違点
・回路構成は、基本的なI2Cバスです。 (クロック周波数は最大400KHz)
・I2Cアドレスは、7ビットアドレスで[1101_000x]です。 (8ビットアドレスでD0H)
・電気的な仕様は、ほぼ同じです。
(VCCの電圧に関係なく、SCL,SDAは最大5.5Vまで使用可能)
・レジスター[0Fh] 制御/ステータスの、BB32kHz, CRATE1, CRATE0 ビットがありません。
・レジスター[0Fh] の[EN32kHz]ビットを[0]に設定した場合、32kHzピンはハイ・インピー
ダンスになります。
・レジスター[13h] 以降の機能はありません。

Amazonで購入したDS3231。
(DS3231 For PI) |
・電源電圧: 2.3V 〜 5.5V
・バッテリー電圧: 2.3V 〜 5.5V
・消費電流: 300μA (動作時)
・時刻保持バッテリー電流: 0.84μA (標準)
・動作温度範囲: 0℃ 〜 +70 ℃ (民生用)
・精度: 0℃ 〜 +40℃で ±2ppm
・精度: -40℃ 〜 +85℃で ±3.5ppm
・温度センサーの精度: ±3℃
・I2Cインターフェイス: 最大400KHz
|
 |
テストはGamebuinoのI2C端子に
DS3231を接続して行いました。 |
DS3231 時計のテストプログラム |
● 回 路
・GamebuinoのI2C端子にDS3231を接続して制御します。
・もちろん、各種のAVRやポートを選択することもできます。 (5V動作可能)
・他のモジュールを使用する場合は、ピン配置の違いに注意してください。
・SCLとSDAのプルアップ抵抗器は、Gamebuinoに内蔵されているので不要です。
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
● プログラム
・電源を初めて入れた時とバッテリーが切れた時には、DS3231が初期化されます。
※「DS3231 For PI」モジュールは、基板にボタン電池がハンダ付けされています。
・[B]ボタンを押しながら電源を入れると、DS3231を強制的に初期化できます。
・Gamebuinoには1秒割り込みの入力ピンが無いので、100mS間隔で時刻を読み出して、
秒が変更された場合にLCDへ表示を行います。
・[A]ボタンを押すと、12時間制と24時間制の表示切り替えを行えます。
・[B]ボタンを押すと、LCDのバックライトがON/OFFします。
・[C」と[Up]ボタンを同時に押すと、時刻の設定モードに入ります。
[Left]と[Right]ボタンで、設定する項目を選択します。
[Up]と[Down]ボタンで、設定値を増減します。
[A]ボタンを押すと設定を終了して、時刻データをDS3231に書き込みます。
・[ofs]水晶のエージング・オフセットは、DS3231内蔵の水晶に付帯するコンデンサーの容量を
増減して、時刻精度の微調整を行います。
+の値は、コンデンサーの容量を増やして、発振周波数を低くします。(時刻を遅らせる)
−の値は、コンデンサーの容量を減らして、発振周波数を高くします。(時刻を進める)
[+0]が初期値です。
・Gamebuino用のコンパイルは、グラフィックLCD (Nokia 5110相当)のライブラリが必要です。
(Gamebuino [Arduino]互換の小型ゲーム基板 ページを参照)
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|

■ DS3231 AT24C32 IIC 基板 ■ |
DS3231の別基板です。
DS3231とEEPROMのAT24C32が搭載されており、基板の裏面にコイン電池のホルダーが付いています。
その分、基板が大きくなっているので、小型の装置への組み込みには不向きです。
INT/SQWと32kHzの出力ピンが出ているので、「DS3231 For PI」より、用途は広がります。
機能や取り扱いの詳細は、上記の「DS3231 For PI」を参照してください。


Amazonで購入したDS3231。
(DS3231 AT24C32 IIC) |
・電源電圧: 2.3V 〜 5.5V
・バッテリー電圧: 2.3V 〜 5.5V
・消費電流: 300μA (動作時)
・時刻保持バッテリー電流: 0.84μA (標準)
・動作温度範囲: 0℃ 〜 +70 ℃ (民生用)
・精度: 0℃ 〜 +40℃で ±2ppm
・精度: -40℃ 〜 +85℃で ±3.5ppm
・温度センサーの精度: ±3℃
・I2Cインターフェイス: 最大400KHz
|

赤丸の200Ωの抵抗器を取り外す。 |
※ 注意
この基板は、バッテリーにコイン型の充電池(二次電池)を
使用する回路になっています。
したがって、コイン形のリチウム電池(一次電池)を使用
すると、充電回路により、リチウム電池に充電電流が
流れてしまい、電池の膨らみや故障が発生します。
リチウム電池を使用する場合は回路図に記載したように、
必ず200Ωの抵抗器を取り外すか、抵抗器とダイオードの
間のパターンをカットしてください。
・ リチウム電池 [CR2032] 3V
|
DS3231 時計のテストプログラム |
● 回 路
・AVR
&
BASCOM-AVR トレーニング・ボードの拡張端子2に、DS3231を接続して制御します。
・もちろん、各種のAVRやポートを選択することもできます。
・SCLとSDAのプルアップ抵抗器は、DS3231基板に内蔵されているので不要です。
・EEPROMのAT24C32は使用していません。
注意!
この図面を使用した、いかなる損害にも責任を負いません。
|
● プログラム
・電源を初めて入れた時とバッテリーが切れた時には、DS3231が初期化されます。
・[SW3]を押しながら電源を入れると、DS3231を強制的に初期化できます。
・DS3231のINT/SQWピンに1Hz(1秒)の方形波信号を出力するように設定し、ポートで信号の
立ち上がりエッジを調べて、毎秒の時刻表示を行います。
・[SW3]を押すと、12時間制と24時間制の表示切り替えを行えます。
・[SW1」と[SW3]を同時に押すと、時刻の設定モードに入ります。
[SW2]と[SW3]で、設定値を増減します。
[SW1]を押すと、次の設定項目に移ります。
LCD右下のエージング・オフセットの設定を終えると、時刻データをDS3231に書き込み
設定モードを終了します。
・水晶のエージング・オフセットは、DS3231内蔵の水晶に付帯するコンデンサーの容量を
増減して、時刻精度の微調整を行います。
+の値は、コンデンサーの容量を増やして、発振周波数を低くします。(時刻を遅らせる)
−の値は、コンデンサーの容量を減らして、発振周波数を高くします。(時刻を進める)
[+0]が初期値です。
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。 (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)
|
|
|