組み込み設計に効率的なリアルタイムクロック/カレンダ機能を迅速に実装

著者 Steve Leibson氏

Digi-Keyの北米担当編集者 の提供

多くの組み込みアプリケーションは、特定の日時に特定のタスクを実行する時間、またはイベントにタイムスタンプを付ける時間、あるいはその両方を知っておく必要があります。この機能を実行するRTCC(リアルタイムクロックおよびカレンダ)チップは何十年間も利用可能ですが、設計者は、消費電力と設計時間を最小限に抑えながら、コンポーネント数とフットプリントを減らすことに挑戦しています。

統合RTCCデバイスおよび革新的なモジュールがこれらの課題に対処しています。

この記事では、スペースと消費電力を最小限に抑えながら、RTCCチップを選択してそれを組み込みシステムに迅速に設計する方法について説明します。RTCCを内蔵したMCU、および面実装RTCやその他のコンポーネントを使用したプロトタイピングを支援するための、入手可能なRTCCモジュールの使用についても説明します。

モジュールに組み込まれているRTCCチップは、通常、ArduinoライブラリおよびRaspberry Pi Raspbianドライバオーバーレイによってサポートされているため、これらのデバイスを使用した組み込み実験やプロトタイピングが容易になります。

RTCCの役割

多くの組み込みアプリケーションは、他のタスク用にメインプロセッサを解放しながら、最小限の消費電力で実世界と比較して時間を追跡する必要があります。

しかし、RTCCチップは、それ自体では大きな働きをするわけではありません。タイムキーピング用の正確な水晶振動子(おそらく非常に正確なタイムキーピング用の温度補償水晶振動子)およびバックアップバッテリ電源が必要です。これにより、組み込みシステムの電源を切っても時間を追跡できます。これらの補助コンポーネントは、次の2つの主なタスクを実行するRTCCの機能を定義します。

  1. すべての条件において正確な日時を一貫して保つ
  2. 残りの組み込みシステムの電源が切れているときに最小限の電力を利用する

RTCCを内蔵した一部のマイクロコントローラ

Microchip Technologyの32ビットPIC32MZ2064DAA288マイクロコントローラなどの一部のマイクロコントローラは、内部RTCCブロックを内蔵しています。特にPIC32MZ2064DAA288マイクロコントローラは、デバイスに電力を供給する、マイクロコントローラの通常の電源ピン(VDDCOREおよびVDDIO)に十分な電圧がない場合、内部電源を自動的にバッテリ入力ピン(VBAT)に切り替えるため、正確なタイムキーピングを必要とするシステムの設計にこのようなデバイスを使用するのは素晴らしいアイデアだと思われます。

ただし、そのようなデバイスには、前述のRTCCの2つの重要なタスクに直接関連するいくつかの追加の課題があります。正確なタイムキーピングおよび低電力動作です。

まず、PIC32MZ2064DAA288マイクロコントローラのRTCCブロックには、マイクロコントローラの電源が切れている間に正確な時間を維持するために、2つの二次発振器ピンに接続された32768ヘルツ(Hz)の水晶振動子が必要です。マイクロコントローラのメインクロック発振器を使用してRTCCブロックを動作させることは可能ですが、マイクロコントローラがディープスリープモードになると、その発振器は動作を停止します。

オンチップRTCCには較正レジスタが組み込まれており、Microchipは、水晶発振器の周波数がオフになった場合のタイムキーピングエラーを毎月0.66秒にして、260ppmまで低減できる較正手順を提供しています。ただし、固定較正では温度変動が考慮されていないため、発振器の周波数にも影響を与え、そのためタイムキーピング精度にも影響を与えます。

第二に、マイクロコントローラは、RTCCブロックを除いて、バッテリ電源に切り替えたときに完全には電源が切れません。マイクロコントローラ内の他のブロックは、ソフトウェアによって制御されるように、バッテリ動作中に有効にすることもしないこともできます。ここで発生した課題は、バッテリの消耗と寿命がソフトウェアに依存するようになることです。

この課題は、PIC32MZ2064DAA288マイクロコントローラに固有のものではありません。RTCCブロックを組み込んだすべてのマイクロコントローラで発生します。別のRTCCチップを使用すると、タイムキーピング機能をマイクロコントローラから明確に分離することで問題を解決できます。また、マイクロコントローラにRTCCがない場合は、これが設計上の唯一の選択肢となります。

RTCCチップおよびモジュール

設計エンジニアは、数十年にわたって、さまざまな組み込みおよびコンピューティングアプリケーションで時間を維持するために、別々のRTCCチップを使用してきました。現在、いくつかのICベンダがこのようなチップを提供していますが、表面実装技術(SMT)はRTCCチップの評価を複雑にしています。デバイスを容易に手ではんだ付けしたりソケット化することができないためです。

優れたソリューションは、これらのRTCCチップに基づいた低コストのモジュールを使用することです。これにより、小型の表面実装ICに関連するプロトタイピングの課題が解消されます。これらのモジュールには、メインシステムの電源が切れている間も電力を維持するために、バッテリ(通常はコイン電池)を内蔵しています。

そのようなモジュールの良い例は、Adafruit255 Chronodotです(図1)。このようなモジュールは、RTCCチップの評価、ブレッドボーディングやプロトタイピング、さらに、多くの場合は大量生産にも便利です。

Adafruitの255 Chronodotの画像

図1:Adafruitの255 Chronodotは、RTCCチップとバッテリをスルーホールモジュールに組み込んでいます。(画像提供:Adafruit)

表1に、2つのICベンダの3つの異なるRTCCチップに基づく6つの異なるRTCCモジュールを示します。

RTCCモジュール RTCCチップ インターフェース バッテリ バッテリ寿命Min(Typ)
DFRobot DFR0151 Maxim DS1307 I²C CR1225 9(17)年
SparkFun BOB-12708 Maxim DS1307 I²C CR1225 9(17)年
Adafruit 3103 Maxim DS3231 I²C CR1220 NA
Adafruit 255 Chronodot Maxim DS3231 I²C CR1632 8年
Maxim DS3231MPMB1# Maxim DS3231 I²C CR1025 NA
STM STEVAL-FET001V1 STMicro M41T62 I²C 外付け NA

表1:6つのRTCCモジュールは、幅広い可用性とさまざまなRTCCモジュールを示します。(データ提供:Digi-Key Electronics)

表1に記載されている6つのようなRTCCモジュールによって、プロトタイプシステムへのタイムキーピングの追加を容易にします。これらのモジュールがどのように設計されているかを詳しく調べると、基になるRTCCチップを組み込んだボードを開発する際に役立つ情報が明らかになります。

表1で最初に注意することは、これらすべてのRTCCモジュールが1つの共通点、I2Cインターフェースを共有していることです。1970年代初期のRTCCチップは、パラレルアドレスとデータバスを使用して小型のSRAMをエミュレートしました。それは、並列マイクロプロセッサバスが一般的になり、オンボードシリアルプロトコルがまだ普及していなかった時代でした。

現在、チップ間のシリアルプロトコル、特にI2Cは、比較的帯域幅を必要としない周辺機器に最適なインターフェースです。RTCCチップは、日付と時刻の情報を転送するのに必要なバイト数が非常に少ないため、確実に適しています。

表1に示す最初の2つのRTCCモジュール、DFRobotDFR0151およびSparkFunBOB-12708は、どちらもMaxim IntegratedDS1307 RTCCチップ(8ピンデバイス)が基になっています。その高い評判のため、このチップに基づいたモジュールで利用可能なArduinoライブラリおよびRaspberry Pi Raspbianドライバオーバーレイがあります。

DS1307 RTCCには電源レールとバッテリ用に別々のピンがあり、システムの電源が故障したときに組み込みシステムの電源レールとバックアップバッテリ間を自動的に切り替えることができます(図2)。

Maxim IntegratedのDS1307 RTCCチップの図

図2:Maxim IntegratedのDS1307 RTCCチップは、VCCピンの電圧が約4.5Vを下回ると、自動的にVCCからVBATに切り替わります。(画像提供:Maxim Integrated)

図2は、DS1307 RTCCチップと水晶振動子の間の接続も示しています。RTCCチップの場合、この水晶振動子は、たいていIQD Frequency ProductsWATCH-2X6のような低コストな32768Hzの時計水晶振動子です。この水晶振動子は、RTCCチップを使用して設計する際に考慮すべき2つの新しい要素を導入しています。

第1の要素は、温度に対する水晶振動子の安定性です。ほとんどのRTCCは、本来は腕時計用に設計された「音叉型」水晶振動子を使用しています。これらの水晶振動子は温度によって定格周波数から外れます(図3)。

32768Hzの水晶振動子の共振周波数のグラフ

図3:32768Hzの水晶振動子の共振周波数は温度によって変化するため、RTCCのタイムキーピング精度に影響します。(画像提供:IQD Frequency Products)

IQD WATCH-2X6水晶振動子の共振周波数は温度によって変化し、それにより発振器の周波数が変化してタイムキーピングエラーが発生します。発振器の周波数が20ppm変化すると、月あたり約1分のタイムキーピングエラーが発生することに注意してください。

第2の要素は、図2の水晶振動子とRTCCチップ間の接続が単純化されすぎていることによって隠されています。RTCCチップの水晶振動子入力ピンは、通常、非常に高いインピーダンスを持っているため、時計水晶振動子のリードとプリント基板のトレースは、アンテナのように機能します。この「アンテナ」は、システムの残りの部分の高周波信号とノイズをRTCCの内部水晶発振器に結合することができます。

時計水晶振動子とRTCCチップの間のトレースを介してノイズが結合すると、RTCCチップの発振回路に余分な遷移が発生し、クロックの実行が高速になる可能性があります。ソリューションは、慎重なプリント基板レイアウトです。これには、RTCCチップの発振器ピンのできるだけ近くに水晶振動子を配置すること、および水晶振動子入力ピンおよび時計水晶振動子の本体全体の下にグランドプレーンを配置することが含まれます(図4)。

RTCCパッケージの下にあるクロスハッチキープアウト領域の図

図4:グランドプレーン上の慎重なプリント基板レイアウトによって、不要なノイズがRTCCチップのタイムキーピング精度に影響を与えることを防ぎます。(画像提供:Maxim Integrated)

また、図4は、狭い間隔で配置されたトレースがノイズをRTCCチップの水晶振動子入力ピンに結合することを防ぐための、RTCCパッケージの下にあるクロスハッチキープアウト領域を示しています。可能であれば、水晶振動子とRTCCチップの水晶振動子入力ピンを囲むプリント基板の部品層にガードリングを追加して、ノイズがタイムキーピング精度に影響を与えないようにします。

プリント基板からチップへの時計水晶振動子の取り付け

外部水晶振動子のプリント基板レイアウトに関連するいくつかの課題を回避するには、STMicroelectronicsの内蔵水晶振動子付きM41T62 RTCCを選択してください。このRTCCチップは、24ピンDIPのフットプリントを持つSTMicroelectronicsのSTEVAL-FET001V1評価ボードで利用できます。この基板の回路図を図5に示します。M41T62で利用可能なArduinoライブラリおよびRaspberry Pi Raspbianドライバオーバーレイがあります。

STMicroelectronics M41T62 RTCCチップの図

図5:STMicroelectronics M41T62 RTCCチップ(中央)は、24ピンDIPとしてパッケージ化されたSTEVAL-FET001V1評価ボードで利用可能です。(画像提供:STMicroelectronics)

回路図が示すように、M41T62にはVCCピンしかありません。デバイスは1.5 x 3.2mmしかなく、ウェアラブルデバイスやデジタルカメラで使用するように設計されているため、主電源レールが故障したときに切り替えるための独立したVBATピンはありません。これらの組み込みアプリケーションでは、バッテリが通常唯一の電源であり、スペースは貴重です。

M41T62の電源としてスーパーキャパシタを使用することもできます。組み込みシステムでは、システム電源または充電器をブロッキングダイオードD1を介してM41T62のVCCピンに接続することができます(図6)。

残りのシステムの電源が切れているときにスーパーキャパシタがシステムの電源を介して放電しないように、ダイオードは上の図5に示す1N4148WSのような低リークタイプである必要があります。

M41T62 RTCCチップに電力を供給する充電式スーパーキャパシタの図

図6:充電式スーパーキャパシタを使用して、M41T62 RTCCチップに電力を供給することができます。(画像提供:STMicroelectronics)

水晶振動子を制御する温度補償

表1に記載されている3つのRTCCモジュール(Adafruit 3013、Adafruit 255 Chronodot、およびMaxim DS3231MPMB1#)は、MaximのDS3231 RTCCチップが基になっています(図7)。統合水晶振動子に加えて、デバイスには温度センサが含まれています。これは、デバイスの正式名称「Extremely Accurate I²C-Integrated RTC/TCXO/Crystal」を説明しています。

Maxim DS3231 RTCCチップの図

図7:DS3231 RTCCチップは、32768Hzの時計水晶振動子、温度センサ、およびスイッチドキャパシタアレイを統合して、デバイスのタイムキーピング精度を1年あたり±2分以内に維持します。(画像提供:Maxim Integrated)

ブロック図に示すように、DS3231の温度補償水晶発振器(TCXO)は、内部水晶振動子、温度センサ、およびスイッチドキャパシタアレイで構成されています。DS1307 RTCCと同様に、DS3231も主電源(VCC)とバックアップバッテリ(VBAT)に別々のピンを備えています。

STMicroelectronics M41T62 RTCCチップと同様に、DS3231 RTCCチップは外部水晶振動子のレイアウトの課題を解消します。そのTCXOは、温度変化によるタイムキーピング精度のばらつきを低減します。DS3231の内部TCXOは、-40°C~+85°Cの非常に広い動作温度範囲にわたって、デバイスのタイムキーピング精度を1年あたり±2分以内に維持します。

その高い評判のため、DS3231 RTCCチップに基づいたモジュールで利用可能なArduinoライブラリおよびRaspberry Pi Raspbianドライバオーバーレイがいくつかあります。

バッテリの寿命

バッテリは永久に続くことはないメンテナンスアイテムです。RTCCを組み込み設計に追加する際には、RTCCチップがバックアップバッテリのサイズを適切に設定するために必要なバッテリ電流に注意することが重要です。

RTCCアプリケーションのバッテリ寿命は、時間を維持している間のRTCCチップの電流ドレイン、RTCCチップに必要な最小動作電圧、および出力電圧がその最小動作電圧を下回る前に必要な電流をバッテリが供給できる時間によって決まります(表2)。

RTCCチップ バッテリ電流(ナノアンペア)Typ(Max)
Maxim DS1307 300(500)
Maxim DS3231 840(3000)
STMicro M41T62 5000(7000)

表2:RTCCチップのバッテリ供給電流定格は、適切なバックアップバッテリのサイズを設定するのに役立ちます。(データ提供:Digi-Key Electronics)

表1に示されたRTCCモジュールの場合、バックアップバッテリはすでに選択されています。一部のモジュールベンダは、表1にも示されているように、モジュールのデータシートにバッテリ寿命の番号を記載しています。現在、これらのモジュールに最適なバッテリタイプはリチウムコイン電池です。その直径は、10、12、および16mmで変化します。確かに、バッテリ容量が大きいほど、スペースと重量が増える傾向にありますが、明確な利点は、一定の電流ドローに対してバッテリ寿命が長くなることです。

結論

RTCCデバイスの選択時、正確な動作を保証するための補助の水晶振動子とバッテリの選択時、およびプリント基板のレイアウト時には、注意が必要です。または、RTCCチップに基づいた利用可能なモジュールは、ブレッドボーディングとプロトタイピングのショートカットを提供し、開発時間を大幅に短縮します。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

著者について

Steve Leibson氏

Steve Leibson氏は、HPとCadnetixでシステムエンジニアを務め、EDNとMicroprocessor Reportで編集長として活躍し、XilinxとCadenceなどの企業では技術ブロガーを担当しました。また、同氏は、「The Next Wave with Leonard Nimoy」の2つのエピソードで技術専門家を務めました。同氏は、33年間にわたって、高速でかつ信頼性の高い優れたシステムを設計技術者が開発することを支援しています。

出版者について

Digi-Keyの北米担当編集者