2021年09月11日

I2C Bus Accelarator検証

以前に紹介したGrove等で使用されるI2Cを延長する方法について、実際に少し検証してみました。

一般的にI2Cはマイコン周辺の機器との通信を想定しているため、数メートルといった距離の通信を想定していません。Grove規格ではハブやケーブルを接続して、数mまでケーブルを延長すると波形が鈍って通信エラーが多発します。このような場合にI2CバスバッファICで差動信号に変換して、延長先で再度、差動信号をI2Cに変換する方法があります。数10m以上延長する場合に非常に有効な方法ですが、数m程度の延長で変換アダプタを使用するのは少し大がかりです。その際に便利な部品、バスアクセラレータLTC4311を紹介します。


バスアクセラレータLTC4311は、400pFのI2C仕様を上回るバス負荷条件で
データ伝送速度と信頼性を向上させるアクティブ・プルアップです。

• I2Cバス立ち上がり遷移時間を改善
• I2Cバス上に複数のデバイスを接続する場合にデータの完全性を保証
• 広い電源電圧範囲:1.6V〜5.5V
• “L”状態のノイズマージンを改善
• 最大400kHz動作

簡単に言えば、配線が長くなってクロックや信号が鈍ってしまうところをHigh、Lowをバシッと決めてくれるデバイスです。

通信ケーブル1m、波形の鈍りが分かりやすいように意図的に大きなプルアップ抵抗20kΩを接続し、HS3001温度湿度センサをI2Cデバイスとして使用した場合の波形を比べてみました。


LTC4311_3.jpg
100kHzクロックでLTC4311未使用の場合です。赤線がデータ、黄線がクロックです。1mなので通信できますが、立ち上がりが少し鈍っています。

LTC4311_4.jpg
100kHzクロックでLTC4311使用の場合です。赤線がデータ、黄線がクロックです。I2CバスラインにLTC4311を挿入するだけで立ち上がりの鈍りが解消されています。

ケーブルが長い場合やケーブルの種類によっては通常、波形の鈍りが大きくなり、正常に0と1を送信できなくなり、通信エラーが多発します。アクティブ・プルアップによって波形の鈍りを解消することでより長いケーブルでの伝送ができるようになります。今回は検証していませんが、I2C駆動電流を大きく流せないようなデバイスやマイコンの場合に波形が鈍って通信できない場合にも有効だと思います。

部品単体では効果を確認できたため、I2Cバスアクセラレータ基板の設計をしてみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2021年09月04日

CTセンサアンプ基板

今回は先日、紹介した実効値変換アナログICを応用したCTセンサアンプ基板ついて紹介します。

一般的にはCTセンサをマイコンで取り込む場合、抵抗で中立点の仮想GNDにシャント抵抗とCTセンサを接続した電圧をAD変換器で取り込む回路を実装することが多いです。ただ、ノイズ除去処理、RMS値の計算処理やある程度速いAD変換サンプリングが必要です。また、振幅が小さい場合やAD変換器の入力インピーダンスが大きい場合は増幅回路が必要となり、回路が多くなるため、CTセンサの取り込みはなかなか厄介です。

そこで便利なのが開発中のCTセンサアンプ基板です。CTセンサアンプ基板は交流電流を測定するためのCTセンサの出力を増幅、RMS値に変換する基板です。基板上に選択可能なシャント抵抗があり、交流の電流に応じてRMS値を直流に変換した値を得ることができます。シャント抵抗、RMS値の演算含めて基板に実装しているため、交流負荷の電流や電力を直流値として簡単に得ることが可能です。


csa1.jpg

csa2.jpg

シャント抵抗は49.9Ω、10Ω、1Ω、0.3Ωの4種類から選択できます。ユーザー側でCTセンサを用いて測定したい電流範囲に応じてジャンパーさせることが可能です。電源は3.3V、5Vに対応していますが、5V電源の方がより多くの電流を測定できます。INA181A1によるゲイン20倍、出力段アンプゲイン3倍で60倍の増幅率です。

VOUT=(IxGainxR)/(CT比)=(Ix60x49.9)/3000


目安として、1:3000のCTセンサを用いた場合の各シャント抵抗における最小電流と最大電流をまとめました。最大電流は増幅アンプ飽和電圧です。一方、最小電流は回路内部のオフセット電圧が数10mV生じるため、オフセットの影響を無視できる範囲として設定しました。


 電源3.3V電源5.0V
シャント抵抗最小電流最大電流最小電流最大電流
49.90.130.16
10.00.5150.523
1.051505230
0.31034010500


なお、電流ゼロの場合でも、使用するAD変換器の入力インピーダンスや回路内のオフセット電圧等の影響で数10mV程度オフセット電圧が生じます。そのため、0.1A以下の微小な電流測定には向いていません。また、50Hz/60Hzの商用電源の電流をCTセンサで測定する用途を想定しているため、歪みの大きな電流やインバータ出力電流等では正しく電流実効値を測定できない場合があります。回路上のローパスフィルタで高周波をカットオフしているため、数百Hz以上の電流変化は測定できません。

シャント抵抗が小さい方が大電流を測定できる一方で小さな電流では出力電圧が小さすぎて、出力オフセットやAD変換分解能の影響で測定誤差が大きくなります。測定したい対象の最大電流に応じて、シャント抵抗を選択します。試作基板を製作して問題なく動作を確認することができたため、量産版の製造を開始をしたいと思います。
posted by Crescent at 00:00| Comment(3) | 電子部品 | このブログの読者になる | 更新情報をチェックする

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月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) | 電子部品 | このブログの読者になる | 更新情報をチェックする