2021年08月28日

RTC RV-3028-C7とRV-8803-C7の注意点

先日、外付けRTCの比較について紹介しました。実際にRV-3028-C7とRV-8803-C7の評価ボードを実際に使ってみた際に思った注意点について紹介したいと思います。

■ RV-3028-C7の注意点
RV-3028-C7は電源切替機能付きのRTCです。出荷時に25℃環境で1ppmに入るように調整されています。なお、温度補正機能はついていません。電源切替機能付きのため、電池端子とメイン電源端子の2つの端子を備えています。

電池端子とメイン電源端子の2つの端子を備えているものの、デフォルトでは電源切替が無効となっているため、メイン電源をOFFにすると時刻を喪失します。電源切替を有効にするためにはEEPROM Backupレジスタ0x37のBSMビットを01に設定して電源切替を有効化する必要があります。それを知らずに時刻が喪失されるため、電池が切れているのか評価ボードが破損しているのかと色々考えてしまいました。

■RV-8803-C7の注意点
RV-8803-C7は温度補正機能付きのRTCです。電源切替機能はないものの、環境温度の影響を受けずに高精度な時刻を保持することができます。

DS1307やDS3231、RV-3028-C7では、曜日情報は下位3ビットを使用します。具体的には0:日曜、1:月曜、2:火曜、3:水曜、4:木曜、5:金曜、6:土曜のように1つずつインクリメントされます。一方、RV-8803-C7は下位6ビットを使用します。1つずつ値がインクリメントされずに曜日ごとに各ビットがONします。具体的には1:日曜、2:月曜、4:火曜、8:水曜、16:木曜、32:金曜、64:土曜となります。他のRTCに慣れていると曜日設定の考え方が異なるため、実装に際しては注意が必要です。

他にも注意点等が見つかった際には紹介したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2021年08月21日

PIC32MX2XX RB14ポート注意点

以前に紹介したRB5ポート注意点に続いて、RB14ポートについても同じような設定ミスによって意図した動作をしないという現象に遭遇したため、紹介したいと思います。

今回はRB14をSPIマスタのSCKに設定しました。CSやデータは出力されているものの、RB14ポートからクロック信号が出ないという現象に遭遇しました。また、USB初期化関数内のPLIB_USB_Enableを実行する前はクロックが出るものの、当該関数の実行後はクロックが出なくなることからUSB関連の設定に問題があることが分かりました。

VBUS_Setting.jpg

RB14ポートのUSB関連設定を確認すると案の定、RB14にVBUSONポートの機能があることが分かりました。VBUS関連の設定を調べるとDeviceConfig3のVBUSONが有効(ON)となっていることが分かりました。VBUS機能は使用していないため、OFFにするとUSB初期化関数内のPLIB_USB_Enable実行後でもSPIのクロックが出るようになりました。USBの初期化によってSPIのクロック出力設定がVBUSに上書きされていたようです。

VBUS_OFF.jpg

RB14をSPIとして機能割り当てしているにも関わらず、DeviceConfig3のVBUSON設定が残っていたため、うまく動かなかったようです。以前も自らに忠告しておきながら、また、USB関連の設定を見落としてデバッグに時間を要してしまいました。特にUSBやJTAG系の設定はGPIO設定とは設定項目が異なるため、見落としがちなので注意が必要です。Harmony ConfiguratorはGUI上で簡単に設定できるものの、各設定の矛盾まではチェックしてくれないのでこのような不具合が発生する可能性があります。
posted by Crescent at 00:00| Comment(0) | 組込ソフト | このブログの読者になる | 更新情報をチェックする

2021年08月14日

外付けRTC比較

今回は外付けのRTC(リアルタイムクロック)について調査を行なったのでその結果を踏まえて紹介したいと思います。リアルタイムクロックはマイコンやPC等で日付、時刻を機能として使用する場合に利用します。マイコンやPC等のメイン電源が切れている場合にも電池等から電源をRTCに気供給することで日付や時刻を進めて正しい日付や時刻を保持することができます。また、アラーム機能を利用することで予め設定した時刻で信号を出してマイコンの外部割込みイベントを発生させるといった使い方もできます。

STM32マイコンの多くは電池接続用のVBAT端子とRTC機能を備えているため、外付けでRTCを接続しなくとも時刻を保持することができますが、時刻の保持精度を考慮すると外付けの方が有利です。時刻の保持精度が高いと時刻合わせした数か月後や数年後にも時刻の大きな遅れや進みなく利用できることになります。

一般的な水晶発振子の精度は30ppm程度のため、1か月で80秒前後、1年で15分前後のずれが生じる可能性があります。3ppmの場合は1か月で8秒前後、1年で1分半前後のずれが生じる可能性があります。詳細についてはこちらでは述べませんが実際は水晶発振子の仕様が30ppmであっても負荷容量にの影響で更に精度が悪い場合もあります。仕様通りの精度を出すためには水晶発振子内蔵のRTCがお勧めです。水晶発振子内蔵の場合、多くは工場出荷時に調整されており、外付けの水晶発振子に比べて精度が高くなります。環境温度が25℃付近で常に使用する場合は温度補正機能がない場合でもある程度の精度が出ますが、通常、環境温度は昼夜、季節や設置場所で大きく変化します。そのため、精度の高い温度補正機能付きのRTCがお勧めです。環境温度が変化する場合でも精度を高く維持することができます。

入手しやすい外付けRTCを調査、比較してみました。

rtc_list.jpg

広く使用され有名なRTCとしてDS1307があります。シングルボードコンピュータ等でもドライバが配布されており、非常に便利ですが静電気に弱く、電池を外している状態では特に破損しやすいRTCです。気づくと時刻が読めない、I2Cデバイスとして動作しないということが多々あります。そのため、DS1307を使用するのであれば、アドレスと主要なレジスタの互換のあるDS3231やM41T00がお勧めです。同じドライバやソフトでそのまま使用することができます。特に実用を考えると温度補正があるDS3231がお勧めです。

ただ、DS3231はコストが高く、ICパッケージが大きいため、小型なデバイスに組み込む場合やコスト削減をする場合はRV-8803-C7がお勧めです。温度補正付で超小型パッケージで350円前後と低コストです。RV-8803-C7の1つ欠点というならば、電源端子が1つのみで電池電源ピンがないため、ダイオードで外部電源と電池の切り替え回路が別途必要となる点です。RTCでは長時間電池を駆動させるため、漏れ電流が無視できません。漏れ電流が数10nA以下の非常に小さなBAS70-05やBAV170Q等の低漏洩ダイオードを使用する必要があります。


rv-8803-c7.jpg

実際にRV-8803-C7の評価基板を購入して使ってみました。USBシリアルI2C変換基板を使ってNode-RedからRTCの時刻の読み書きをするフローを実装してみました。アドレスは異なるものの、DS1307や他のRTC同様に簡単に使用することができました。今後、RV-8803-C7を使ったデバイスを開発したいと思います。

posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2021年08月07日

実効値変換アナログIC

今回は痒い所に手が届くアナログICを紹介します。

交流の電流や電力を計算する場合、一般的には実効値が用いられます。平均値はコンデンサ等で安定化させることで容易に得ることができますが、実効値は容易に得ることができません。波形が正弦波の場合であれば平均値から換算することも可能ですが、実際の電流波形は綺麗な正弦波であることは少なく、歪みがあるため、換算は容易ではありません。

そのため、一般的には高速でサンプリングしてから定義に従って離散値から実効値を求めます。この場合、サンプリング速度が測定したい信号に対して十分に速い必要があります。このような場合に便利なのが今回紹介するRMS-DCコンバータです。

RMS-DCコンバータの代表的なものとしてAnalogDevicesのLTC1966があります。入力信号に対してRMSに応じたDC出力を得ることができます。ワンチップでRMS値を得られるため、ADコンバータのサンプリング周波数や換算等を考慮する必要がないため、非常に便利です。

LTC1966.jpg

写真はAliexpressで購入したLTC1966の変換基板です。

LTC1966の場合、50Hz~1kHzで0.25%の誤差、2.7~5.5Vの単電源、もしくは±5.5Vまでの両電源で使用できます。ただし、注意点として入力できる信号は最大1Vppの電圧となるため、超えないように注意が必要です。

今後はRMS-DCコンバータを使った応用回路について紹介したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする