レベル変換 (11) I2C その6 ADuM2251ARWZ
ここで利用するアナログ・デバイセズのADuM2251ARWZは、I2Cアイソレータと呼ばれています。RSコンポーネンツで入手し、変換基板にはんだ付けしました。双方向の絶縁されたバッファが一組、1方向の絶縁されたバッファが一組入っています。双方向の絶縁されたバッファが2組入っているのがADuM2250です。
1側と2側では別々の電源を利用できるので、レベル変換に利用できます。
●ADuM2251ARWZのおもな特徴
- 電源電圧 1側、2側;3.0~5.5V
- 入力スレッショルド 1側SDA/SCLは0.7V(max)、2側SDA/SCLは0.3*Vdd2(max)
- 動作速度 最大1MHz
信号の入力は5Vトレラントではありません。NCはNo Connectの省略形で、通常何もつなぎません。
変換ボードは裏側にも不要なパターンがあるので、アイソレータとしては絶縁電圧はまったくカタログ通りにはなりません。DC的に分離できていると考えて利用しました。
●I2C信号の電圧
I2CのHIGH/LOWの電圧です。
規定 | 電源5V | 電源3.3V | |
---|---|---|---|
LOW Vil | 0.3*Vdd以下 | 1.5V | 0.99V |
HIGH Vih | 0.7*Vdd以上 | 3.5V | 2.31V |
I2Cの信号は電源電圧へプルアップして利用します。5Vのマイコンでは5Vへ、3.3Vのセンサでは3.3Vです。したがって、2本の信号がつながるデバイスの電源電圧が異なる場合は、途中にレベル変換回路が必須です。
●信号の方向
I2CをArduino UNOで利用するときは、マスタの役割をします。センサなどはスレーブです。クロックSCLはマスタがスレーブに対して送ります(一方向)。双方向であっても不都合はありません。
データのSDAはマスタとスレーブで双方向の伝送が行われます。したがって、5Vと3.3Vのレベル変換では、双方向対応の回路を選びます。
英語のRev.Dのマニュアルでは正しいですが、日本語のマニュアルの「表10. ADuM2251のピン機能」の説明は間違っています。ADuM2250の表9をコピペしています。6番ピンは「クロック出力、サイド1」、11番ピンは「クロック入力、サイド2」です。また、表9、表10とも電源の14番ピンの電圧が間違っていて、3.0~5.5Vが正しいです。
●接続
3.3Vで動作するBME280は温度、湿度、気圧が測れるセンサで、秋月電子通商からボードを入手しました。
BME280ボードのジャンパJ1、J2はプルアップ抵抗(4.7kΩ)を有効にするにはショートします。前の実験でショートしていたのでそのまま使いました。
J3はショートするとVddとつながり、I2Cインターフェースが有効になります。SDOはI2Cのスレーブ・アドレスの設定端子で、デフォルトの0x76にするためにGNDへつなぎます。Vddへつなぐと0x77になります。
SDIはI2CのSDA信号を、SCKはI2CのクロックSCLをつなぎます。
1側をArduino UNOへ、2側をBME280へ接続しました。Arduino UNO側には10kΩのプルアップ抵抗を入れました。BME280はボード上で4.7kΩが入っています。
アイソレーションはしないのでGNDは共通です。アイソレーションを行うためには、2次側の電源を別途用意します。アイソレーション電源が内蔵されたデバイスも販売されています。
●スケッチ
BME280は、ライブラリを利用します。ライブラリの導入は「レベル変換 (6) I2C その1 MOSFET 」を参照してください。スケッチも同様に、bme280_exampleを読み込んで動かしました。このライブラリは、スレーブ・アドレス0x76で通信します。
実行結果です。
Analog Discovery2を使って、これらの実験中の波形を示します。画面の上側ブロックがアナログ信号です。オレンジ色がArduino UNOのクロックSCL波形で、青色がレベル変換したデータSDAの波形です。
下側のブロックはI2Cのデータをデコードして表示する画面です。オシロスコープのチャネル1(オレンジ色)にDIO2ピンを、オシロスコープのチャネル2(青色)にDIO1ピンをつないでいます。
Arduino UNOのSCLはLOWが0V、HIGHが3.8Vです。BME280側のLOWは0.2V、HIGH3.5Vです。問題なく通信できています。
●入出力を入れ替える?
ADuM2250であれば、2次側をArduino UNOに、1次側をBME280に入れ替えて同じ実験ができます。ADuM2251ではSCLが逆方向になるので、信号がやり取りできません。
●アイソレーションをする
3.3V側の電源を、絶縁型のDC-DCコンバータIK0503SAを利用して用意しました。
波形です。
Analog Discovery2のプローブ1とプローブ2のグラウンドは、1側と2側のGNDへそれぞれ分離して接続しています(差動入力タイプ)。測定時はGNDを共通にしています。ディジタル・ピンのGNDはプローブ1のGNDにつないでいます。問題なく通信できています。
DC-DCコンバータの絶縁耐圧は1000Vです。ADuM2251ARWZの絶縁耐圧は5000Vです。たとえば、DC-DCコンバータ内蔵のLTM2883などを利用すれば、全体の耐圧が上がり、コンパクトに実装できます。
ノイズが多い環境などでは、アイソレーションは欠かせませんが、電子工作ではほとんど使われないと思います。