ちょっと Tea Time!? 絶縁型I2C通信を考える。 2020.9.17

LM3886をパラで使ったアンプを検討していて、その電源に比較的容量の大きなスイッチング電源を購入したけれど、
折角なら汎用の電源装置として使いたいと考えています。そうなると、電圧や電流の表示が必要になります。

電圧だけでいいのなら、超簡単に電圧計をつけるだけです。
下図のような2線式の電圧計が安価に手にはいります。これは自分自身に供給されている電圧を
表示するだけのものですので、負電圧の表示も可能です。もっともマイナスの表示はできませんが、
なくても困りません。この電圧計をつかって簡単な実験用電源(正負15V、正5V)を作っています。


2線式の電圧計が安価に入手できます。およそ3Vから30Vまで使えます。


電圧計をふんだんにつかった実験用の電源装置です。

やっぱり電流も表示したい!

電圧表示だけなら簡単ですが、やはり長くつかうことを考えると電流も表示できるようにしたいものです。
色々と調べてみると、INA226なるICが見つかりました。これは、シャント抵抗の両端の電圧と電源電圧の両方が測れるものです。
さらに、測定結果がI2C通信できることと、16Bitと分解能が高いです。電圧なら1.2mVの分解能が得られます。
値段も400円程度と、割とお手ごろです。


電源モニター用として便利なICがでています。INA226という素子です。

便利なことに、シャント抵抗の位置は負荷の下流ならびに上流のどちらにも設置することができます。
通常はHigh-Sideにおくのでしょうね。



シャント抵抗の電圧と電源電圧が両方計れます。

負電圧側も測りたい!

INA226を使えば簡単に電流・電圧が測定できそうですが、使えるのは正電圧側だけです。
やっぱり測定するなら正電圧だけでなく、負電圧側についても測定したいものです。
そのためには、負側で得られる電圧等をOPアンプをつかって正側に反転させることが考えられますが、
OPアンプをつかうとなると、その電源を準備しないといけないのと、OP周辺の抵抗値の管理が大変です。
というのも、一般の金属皮膜の抵抗は1%精度しかありません。またOPアンプのオフセットも発生しますので、
とくに発生電圧の小さいシャント抵抗電圧の変換は気をつかいます。そのあたりの精度が必要なところは、専用のICに任せてしまうのが吉です。

ということで、あんちょこな方法として下図のようにINA226を負側にもつかうことを考えます。
正側、負側のINA226についてはそれぞれの電源ラインから7805あたりを使って5Vを供給すればいいのですが、
上下のINA226のGND電位はまったく異なりますから、当然のことながら両者の出力をまとめて直接MPUに接続することはできません。
負側のINA226には絶縁型のI2Cラインのアイソレータが必要です。



INA226を上下2で2個使えばいいでしょう。ただし、上下でINA226のGND電位が全然違うので、I2C通信は絶縁型のアイソレータが必要です。

絶縁型のI2Cアイソレータはどうする?

これについては、色々とあります。比較的安価なものは、探せば500円程度であります。
例えばTIの下図のISO1541などです。勿論、アナログデバイセスからもいくつかでています。
簡単に作るなら、これらのアイソレータを使うことの一択でしょう。


絶縁型のI2Cアイソレータの1つのISO1541です。


ISO1541はとてもシンプルな構成で使えます。

でも、手元にも色々と部品があるので工夫すれば絶縁型のI2Cアイソレータが作れるかもしれません。
手間はかかりますが、出費は抑えられるはずです。

フォトカップラの使用を検討してみよう!

このTea TIme!?の本当の目的は、フォトカップラでI2Cのアイソレータができなかな?というところから始まっています。
というのも、手元にフォトカップラが大量にあります。これは、秋月電子の年末恒例の福袋を買ったときに、入っていました。
そのときは、使い道もあまり思いつかなかったので捨てようかと思っていましたが、とりあえずもったいないので取っておきました。
いったい何個あるのか数えてみたら約88個ありました。勿論数えるのは、1個づつではなく重さから判断しています。


秋月の福袋に入っていたフォトカップラです。全部で88個ありました。

LTV817を調べてみよう!

改めて、フォトカップラの型版をみてみると”817C"とあります。これを頼りにネットで調べてみると、
どうやらLTV817というフォトカップラのようです。

なお、このフォトカプラですが、製造メーカはことなりますがまだ秋月から売られている現行品です。1個15円です。
ということは88個で1320円分ですから、やっぱり福袋はお得だなあ〜。でもお得になるのは、それなりの数を使えばですが・・・・。
まあ、福袋って買って、中に何がはいっているかを見るのが楽しいのですよね〜。


型版はうっすらと”817C”とあります。これからネットで探して
おそらくLTV817と思われます。



ピン配置は他のフォトカップラと同じです。


動作速度は4uSなので、結構速い部類のフォトカプラのようです。

LTV817を動かしてみましょう!
 カタログでは動作速度は4uSとなっていますが、トランジスタの負荷抵抗が100Ωと極めて低い場合の値です。
100Ωだと、トランジスタがONしたときに50mA(@5V時)も流れてしまい、素子の絶対定格ギリギリです。
それに、全体の消費電流もあがりますからもうちょっと高い抵抗での速度を調べてみることにしました。

まずはコレクター抵抗を1kΩで試してみました。ON時の応答は約3uSですが、OFF時の応答は7usと
すこしのんびりしています。

LTV817の動作です。フォトカップラのトランジスタのコレクタの負荷抵抗は1kΩ。
下側が入力(LED駆動@1kΩ)で、上側がトランジスタのコレクタ電圧。
OFF時の応答時間はおよそ7usです。


次に、もう少し抵抗を下げて470Ωにしました。この場合の入力の立下りの応答は
約3uSに改善しました。ただし、問題として入力がON時のコレクタ電圧が2Vにあがっています。
これだと、ロジックレベルのLOWレベルを満足できるか心配になってしまいます。

LTV817の動作です。フォトカップラのトランジスタのコレクタの負荷抵抗は470Ω。
下側が入力(LED駆動@1kΩ)で、上側がトランジスタのコレクタ電圧。
OFF時の応答時間はおよそ3usですが、ON時のコレクタ電位が2Vありますので、
ロジックレベルのLOWを満足できるか心配です。


上記の結果から、応答速度のみを見れば470Ωがいいのですが、動作の安定性を考えると
1kΩ(あるいはそれ以上)にした方が無難でしょう。

立ち上がり速度は大丈夫?

フォトカップラなのでゆっくりと動くのは仕方ないですが、I2C通信側のデバイスによっては、信号の立ち上がりあるいは立下りの時間の最大値が
決まっているものがあります。下図はIOエクステンダーのMCP23017の例ですが、クロックの立ち上がり、立下りの時間は最大でも2usとなっています。
フォトカプラの出力をそのままI2Cデバイスに接続するのは、ちょっと動作の面では怖いかもしれません。
一旦、シュミットトリガーのロジックICで受けたほうがいいでしょう。


MCP23017のクロックの立ち上がり、立下り時間はあまり遅くてもだめです。

回路を考えてみましょう!

手持ちの部品をつかって、I2C信号のアイソレータを考えてみました。
I2C信号のSCL(クロック)とSDA(データ)は、本来両方とも双方向通信になるのですが、MPU(マイコン)をマスターに固定するなら
SCLは出力のみで扱えます。
 まずはこんな形で考えてみました(下図)。

手持ちの部品だけでI2Cのアイソレータ回路を考えてみました。

う〜ん、しばらく回路図を眺めてみてシュミットトリガーと一般のロジックの入力をフォトカプラから直接入れると、
動作に時間差が生じるかもしれません。ということで、すこし見直しました。


すこし見直しました。

萎えてきた〜

手持ちの部品をつかって、なんとか回路図にしてみましたが案外、複雑になってしまいました。
テストをしてみようかと思いましたが、ちょっと萎えてきました(笑。

まあ、時間のあるときにまずはブレッドボードで組んでみましょう。

でも、専用のアイソレータのICが500円程度で買えるなら、そっちのほうがいいかな〜・・・・と優柔不断な私でした。

まあ、実現しなくても頭の体操になったかな。


折角なので・・・・ 2020.9.24


回路図まで書いたので、本当に動くかどうかを試してみたくなり、ブレッドボードで組んでみました。
マスター側とスレーブ側は別電源にできますが、そうしてしまうと入出力の信号をオシロで同時に観察できなくなってしまう
ので、まずは電源は共通にしてテストです。

ブレッドボードに組んでみました。まずは電源はマスターとスレーブは共通にしています。
青枠内が両者の電源ジャンパーです。

遅すぎる・・・・

フォトカップラのトランジスタのコレクター抵抗ですが、最初は1kΩにして実験してみましたが、
OFFの応答が悪いです。およそ14usもかかってしまいます。
先の実験では1/2Vccを越える時間が7usでしたが、入力にシュミットトリガーの74HC14を使ったので、
Highレベルとなる電圧が上昇しているので、応答がさらに遅くなったようです。
それにしても14usだと、ちょっと遅すぎです。I2Cの通信速度は20kくらいになってしまいそうです。

抵抗値1klΩの場合。下が入力、上が出力。周波数10kHz。10us/div

抵抗を1kΩから470Ωに

速度向上を狙って、抵抗値を1kΩから470Ωに変更しました。
そうすると応答時間は3.8usに大幅に改善です。1/2Vccの時間は先の実験では3usでしたので
それに近い値になりました。
 もっと早くなるかな〜と思って、さらに抵抗値を240Ω程度に下げたら、今度は動かなくなってしまいました。
どうやらLOWレベルが下がりきらない問題にぶち当たったようです。470Ωあたりがギリギリなんでしょう。
といか470ΩでのLOWレベルは2Vしか下がらないので、たまたま動いた程度かもしれません。
というのも、データシートでは標準では1V以下になることが要求されていますから。


抵抗値470Ωの場合。下が入力、上が出力。周波数100kHz。2us/div

動かしてみましょう!

とりあえずI2C通信ができているか、I2Cで動くLCDを接続して動作させてみました。
I2Cのクロックパルス幅は遅めの5uSにしています。いつもは1usで動かしていますが、流石にそれでは動きませんでした。
で、パルス幅5usでは問題なく動作しましたが、心なしかLCDの表示が鈍いです。そりゃ、データの転送速度が1/5程度に
おちていますからね〜。
 一応、今回の目標である電源を分離した場合でもテストを行いましたが、それも無事動きました。そりゃ当然ですね。

まずはマスターとスレーブで電源を共通で動作させています。


次はマスターとスレーブの電源を分離しています。スレーブ側はACアダプタをつかった電源を使用しています。

さらに、ついでに・・・

基板に組み込んでみることにしました。手元に小さい基板があるのでこれに実装してみましょう。
しかし、これだけの部品が乗っかるかな〜。
色々試行しましたが、なんとか乗りそうです。ほぼ余裕ゼロでした。

小さい基板に必要な部品を組み込んでみましょう。どうやって配置すればいいかな?


ひやあ〜なんとか納まりそうですが、キチキチです。

やめときゃよかった・・・・

で、実際にワイヤリングペンをつかって組み立てだしましたが、すぐに放り出したくなってしまいました(笑。
なんせ、配線に余裕がないし、それに基板が小さいからすぐに動くし・・・・。一番の敗因は部品の配置の不味さでした。
配線のクロスが多くて、線がこんがらがってしまいます。
うううう、忍耐だあ〜・・・。


なんとか組みあがりましたが、途中なんども挫折しかけました。

そうこうしている間に・・・・

DIGIKEYで注文しているI2Cのアイソレータが届きました。
やっまりコレをつかったほうがいいな〜。動作も速いし、なによりも小さいですからね。


そうこうしている間にI2Cアイソレータの専用のチップが届きました。

まとめ
 一応、フォトカプラーをつかったI2Cアイソレータが動くことまでは確認できましたが、やはり動作速度は遅かったです。
 フォトカプラの抵抗値も470Ωくらいに下げる必要があり、それでもOFF時の遅延は3.8usあります。
 やっぱり、専用のICをつかった方がスマートでしょう。

(おしまい)