2020年05月23日

電流センサアンプ

今回はコンパレータ内蔵電流センサアンプINA303を紹介します。電流センサアンプはシャント抵抗の微小な電位差を増幅して電圧出力するためのアンプです。電流センサアンプを使用するメリットとしてTIのサイトでも紹介されていますが、下記のようなメリットが挙げられます。

・「小型化、部品点数の削減」
  ディスクリートでシャント抵抗から電流値を電圧に変換するためにはオペアンプや抵抗等の増幅回路が必要です。正負(バイポーラ)で電流検知する場合は正負電源が必要な場合もあります。電流センサアンプを使用するとゲインが固定されている一方でチップ単体で実現できます。また、電流センサアンプは電源電圧範囲を超える入力電圧をシャント抵抗の電圧として入力可能なため、正負電源が不要です。VCC/2を中立の0Aとして、負側の電流もオフセットさせて電圧出力させることができるため、そのままマイコンのADC等で取り込むことが可能です。

・「高精度化」
 オペアンプや抵抗等の増幅回路が削減できるため、部品による差がなくなります。また、電流センサアンプはシャント抵抗の電圧差の増幅に特化しているため、温度ドリフトが少なく、増幅率が高精度に固定されています。

・「設計工数の削減」
 小型化、部品点数の削減により、設計工数の削減が可能です。ハイサイド、ローサイドの電流検知回路によって回路を設計し直す必要もありません。電流センサアンプの多くはハイサイド、ローサイド両方ともそのまま使用することができます。


このように電流センサアンプは非常に便利です。単機能の電流センサアンプはINA181等をよく利用しています。今回、紹介する電流センサアンプINA303はアンプ機能に加えて、コンパレータを内蔵しています。電流を検知する場合、通常の電流変化の他、異常な電流を検知する場合もあります。コンパレータ内蔵の電流センサアンプはそのような場合のニーズを満たすICとなっています。

具体的にはINA303に閾値を入力することで異常な電流(電流センサアンプから見ればシャント抵抗の電圧差)が検知された場合にIOでアラートを出すことができます。また、アラート出力を保持することも可能です。通常、コンパレータを使用しない場合、異常な電流が発生したかどうか、電流センサアンプのアナログ値を高サンプリング周期で監視する必要があります。コンパレータはアナログ回路で構成されているため、高サンプリングな監視と同等です。コンパレータ内蔵電流センサアンプを使用すれば、マイコン側からは高サンプリングで監視する必要がなくなります。異常のアラートIOをマイコンの外部割込みに設定すれば異常があった場合にイベントを走らせることが可能です。サンプリング周期や監視周期を高くできない場合にも異常な電流を取り逃すことなく検知することができます。

コンパレータ内蔵の電流センサアンプはTIから数種類販売されています。中でも2つコンパレータが搭載されているデュアルコンパレータタイプは例えば、正側の過電流、負側の過電流の両方を検出(ウインドウコンパレータ)したり、異常電流と警報電流の2段階で異常を検出(2つの制限超過アラート)のタイプがあります。ウインドウコンパレータと2つの制限超過アラートの違いが分かりづらいと思ったのでINA303のデータシートから違いの図を抜粋してみました。


INA302_INA303_compare.jpg
INA303データシートP.21から抜粋。
左がINA302の2つの制限超過アラートタイプ、右がINA303のウインドウコンパレータタイプです。アラート部分にピンクor赤の色を付けています。

デュアルコンパレータの場合、1つのコンパレータは閾値の超過でアラートを出力しますが、もう片方をどう出力するかで2つのタイプ(制限超過アラートタイプ、ウインドウコンパレータタイプ)があります。正側の電流監視の場合はコンパレータ1つもしくは2つの制限超過アラートタイプが適当です。正負の両側を監視する場合はウインドウコンパレータタイプが適当です。

例えば、DCモータの過電流検知をする場合、正回転、負回転で電流の方向が正負両側の異常電流を検出するため、ウインドウコンパレータタイプが適当です。もし、異常電流だけでなく、警報機能も持たせたい場合はウインドウコンパレータタイプをもう1つ使用して低い閾値を設定することで実現できます。

便利なデュアルコンパレータ搭載の電流センサアンプを評価しやすいように可変抵抗とアラートLED等を実装して電流センサアンプモジュールを設計してみました。

cs.jpg

検証を進めて問題なければ、どこかで販売を開始したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年05月16日

CP2615パラメータ書き換え方法

今回はUSB-I2S変換IC CP2615について紹介します。

Silicon Labs社から販売されているUSBインタフェース関連ICの1つにCP2615があります。CP2615はUSBとI2Sの変換ICで、I2S接続のcodecやadc、dacをUSBに変換することができます。USBをPCに接続するとPCからは標準オーディオデバイスとして認識され、USB接続マイクやスピーカーの開発を容易に行うことができます。また、USBデバイスを開発する際にはVID(Vender ID)やPID(Product ID)をUSB.orgから取得したり、ドライバを開発する必要がありますが、Silicon Labs社のCP2615はSilicon Labs社のVIDやPIDをそのまま最終製品に利用しても構わないと謳っているため、開発の敷居が低くなっています。

CP2615は出荷直後はUSBスピーカデバイスとして認識される設定となっており、使用するcodecやadc、dacに応じて内部のパラメータを変更して使用します。主要なcodecやadc、dacはI2Sでオーディオ信号を送受信する前にI2Cでパラメータ初期化が必要です。CP2615の内部パラメータを変更することでI2Cマスタとしての送受信を合わせて設定することができます。他にCP2615のGPIOでボリューム上げ下げのインタフェース設定等もできます。CP2615とcodec等を組み合わせてUSBスピーカやUSBマイクを簡単に開発できるようになっています。



CP2615のパラメータ変更はSimplicityStudio内のXpress Configuratorで行います。下記のようなイメージでパラメータを変更できます。

CP2615_setting_image.jpg



内部パラメータの書き換えはCP2615単体ではできません。書き込み治具としてCP2112が別途必要です。CP2615とCP2112はI2Cで接続し、CP2112を介してUSBで書き換えを行います。書き込む際には電源を入れる前にCP2615のCFGとRSTをGNDに接続し、電源投入後にRSTをVDDに接続し、CFGモードの状態で書き換えを行います。CP2615をXpress Configuratorから書き換えてみましたが下記の様なエラーが発生しました。

Programming completed,but with errors!
CP2615_SetConfig:HID_SMBUS_DEVICE_NOT_FOUND
CP2615_GetConfig:HID_SMBUS_DEVICE_NOT_FOUND

LogではProgramming completedと出ていますが、CP2615をUSBで接続しても設定が反映されておらず、書き込み失敗していました。原因を調査すると書き込み治具のCP2112のPIDが0xEA93でないと書き込み失敗するようです。CP2112のデフォルトVIDは0x10C4、PIDは0xEA90となっていまずが、CP2615の書き換えをSimplicityStudio内のXpress Configuratorで行うためにはPIDが0xEA93である必要があるようです。CP2615のEvalボードCP2112は出荷時にPIDが変更されているようですが、市販のCP2112を使ったため、書き込みに失敗したようです。

CP2615の書き換えを行う前にCP2112のXpress Configuratorのプロジェクトを作成し、PIDを0xEA93に変更してCP2112のパラメータを書き換えました。残念ながら、CP2112のパラメータ書き換えは1回限りのワンタイムプログラムとなっているため、再度の変更はできません。間違ったパラメータを書き込まないように注意する必要があります。

cp2112_pid.jpg


PIDを変更したCP2112で再度、CP2615の書き換えを行ったところ、正常に書き換えができました。手持ちのCP2112はPIDを0xEA93に変更したため、Xpress Configurator専用の治具になってしまいました。なお、CP2112はワンタイムプログラムですが、CP2615はフラッシュベースのため、CP2112を用いて何度も書き換えできます。CP2615で様々なI2Sデバイスを検証することができます。CP2615を用いてI2S接続のcodecやadcを組み合わせて遊んでみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年04月11日

正負昇圧コンバータ回路

オペアンプやAD変換、オーディオアンプといった回路では正負電源が必要になることが多々あります。そのような場合には方法として、昇圧コンバータ回路を使用する方法、仮想GNDを生成する方法(レールスプリッタ、オペアンプ)が考えられます。

仮想GNDを生成する方法では最大数mA~数10mA程度とあまり電流をとれません。一方、昇圧コンバータ回路を使用する方法では回路によって大電流をとれるものの、昇圧系部品のコストとスイッチングノイズが課題となります。MAU109といった絶縁型の昇圧コンバータは部品を減らして実装できますが、スイッチング周波数が100kHz前後とあまり高くありません。100ksps以上のAD変換用途やハイレゾオーディオ用途ではスイッチングノイズの影響を避けられません。電解コンデンサやインダクタ等のノイズフィルタが別途必要になります。スイッチング周波数を外部のノイズフィルタで除く場合、負荷変動によってノイズフィルタが十分機能しない場合があります。ノイズフィルタの他に昇圧させたあとにリニアレギュレータICでノイズリップルを除去するといった対策を行う場合もあります。

絶縁型ではありませんが、スイッチング周波数が高い2ch以上の昇圧回路を内蔵したスイッチングICを使用(例1例2)して正負電源を生成するとスイッチング周波数によるノイズリップルの影響を低減させることができます。スイッチング周波数が1.2MHz前後と非常に高いため、インダクタ等でノイズ除去も容易です。ただ、問題点として2ch以上の昇圧回路を内蔵したスイッチングICは1個800円~1000円近くするものも多く、コストが課題となります。


そこでいろいろ調査すると1chの昇圧回路で正負の電源を生成する回路例がありました。AD変換ICのADAS3023の電源回路として紹介されており、1chの昇圧スイッチングICとしてADP1613が使用されています。ADP1613であれば200円前後で販売されており、2ch以上の昇圧回路を内蔵したスイッチングICに比べてコストが1/4以下です。当該回路の弱点として正側の電圧しかフィードバックしていないため、正負で偏った負荷を与えると電圧変動してしまう点とカップルインダクタが2つ必要な点があります。オペアンプやAD変換、オーディオアンプ用途であれば正負で偏ることは少なく、カップルインダクタのコストアップもスイッチングICのコストアップに比べれば小さいため、メリットは十分ありそうです。

ADP1613_DualOutput.jpg
AD変換IC ADAS3023データシートから抜粋(左側が正負昇圧回路)


1chの昇圧回路で正負の電源を生成回路を実際に実装してみました。


ADP1613_Board.JPG

カップルインダクタのフットプリントpinアサインを間違えたため、ちょっと残念な実装になってしまいましたが、±15V前後の出力を確認することができました。正負対称電圧なら思いつかなくはないですが、1chの昇圧回路で正負の電源を生成するのはなかなか面白いと思いました。フットプリントpinアサインの修正とインダクタ、コンデンサのパラメータを調整してから基板公開や昇圧モジュールとしての販売を検討したいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年02月01日

Node-Redを用いた赤外線グリッドセンサ制御と可視化

前回紹介したNode-RedからのI2Cデバイス制御する方法に続いて、応用例を紹介します。

Node-Redはノードを結び付けてフローを作成してプログラミングできる他にNode-Red-dashboardを使用することで簡易的にUIを作って可視化することも簡単にできます。

今回はPanasonic製 赤外線グリッドセンサAMG8833とUSB-I2C変換アダプタを使用して取得したデータをNode-Red-dashboardで可視化してみました。Node-Red-dashboardに加えてNode-Red-ui-heatmapを追加しています。

Panasonic製 赤外線グリッドセンサAMG8833は8x8の赤外線アレイセンサです。画素は粗いものの比較的低価格で非接触でサーモカメラを実現できます。

Node-Redのフローは下記のように作成してみました。

Node-Red_AMG8833.png

全体のコードはこちらにアップしています。



指を横向きに近づけると下記のように温度変化を取得することができました。

AMG8833_finger.jpg


赤外線センサなので物の材質によって放射率が異なるため、接触温度計に比べると温度精度は期待できません。ただ、非接触で温度をざっくり測定できるのはやはり面白いセンサだと思いました。

Node-Red-dashboardはチャート(折れ線グラフ)、ゲージなど様々なUIが用意されているため、センサデータの可視化も容易に実現できます。他にもボタンやスイッチといったUIも用意されているので、USB-I2C変換アダプタと組み合わせた応用例を紹介したいと思います。

※追記
USB-I2C変換アダプタで使用しているSC18IM700のFIFOは16byteですが、16byteを超えるデータを要求して受信することができました。順次シリアルでデータを送信する仕様なようです。ただ、通信設定やデバイスによって受信できない場合もあると思われます。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2020年01月25日

Node-RedからのI2Cデバイス制御

今回はNode-RedからのI2Cデバイス制御する方法を紹介します。

Node-Redからセンサ等のI2Cデバイスを制御する場合、SBC(Raspberrypi等)にNode-Redをインストールして専用のノード(BME280VL53L0)でI2Cデバイスにアクセスすることが一般的です。他の方法としてArduinoを経由する方法などもあります。

専用ノードの場合はNode-Redを実行するハードウェアに依存するため、WindowsやMacではそのままのノードが使えません。

先日紹介したUSB-I2C変換アダプタを使用するとハードウェアの依存度を下げることができます。USB-I2C変換アダプタはシリアルCOMポートとして認識されるため、Node-Redのシリアルポートノードを使用することでSBC(Raspberrypi等)の他、WindowsやMacでもそのまま同じノード、フローを使用することができます。

なお、Node-RedのシリアルポートノードをWindowsで使用するためにはオンプレミス版Node-Redを使用する必要があります。こちらの記事を参考にしてください。



USB-I2C変換アダプタを使用してI2C接続タイプのLCDのAQM1602をNode-Redから制御してみました。



Node-Red_AQM1602.jpg

実際のNode-Redフローはこちらで公開しています。


I2CLCD.JPG

任意の文字列が表示できました。


また、I2Cデバイスのアドレスを取得してデバイス検索するコードも作成してみました。I2Cデバイスと通信できない場合にデバイスの動作確認やアドレスの確認として非常に便利です。

Node-Red_I2Cdevicesearch.jpg

実際のNode-Redフローはこちらで公開しています。

USB-I2C変換アダプタの応用例を今後、紹介してみたいと思います。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする