I2Cレベル変換で、デバイスの選択肢を増やそう
micro:bitにセンサーなどのデバイスを接続したい時にぶつかるのが「電圧の壁」。世の中には、LCD(液晶表示器)等魅力的な「5V系デバイス」が多数あるのですが、3V系のmicro:bitではつなげない場合があります。
そこで登場するのが「レベル変換装置」。micro:bit(3V系)の入出力信号を、5V系デバイスの信号に変換する装置で、200円ほどで入手可能です。先に紹介した「micro:BreadBoard」に「I2Cレベル変換モジュール」を載せ、5V系I2Cデバイスを接続する方法を紹介します。
これでLCDなどを5V系デバイスをmicro:bitで活用することができるようになります。
I2Cレベル変換モジュールを使い、
micro:bitに5V系デバイスを接続してみよう
(本ページ作成 2021.05.01)
レベル変換とは?
実際の回路を組む前に「レベル変換」について説明します。
コンピューターと電圧
micro:bitをはじめデジタルコンピューターでは、データを電圧が高い状態(High)と低い状態(Low)の組み合わせで扱っていますが、基準となる電圧がシステムによって異なっています。例えばArduinoUNOでは「High」レベルは5Vとなっているのに対し、micro:bitでは「High(=1)」は3Vとなっています。
外部に接続するセンサーなどのデバイスがどちらの電圧の信号にも対応していれば問題なく使えるのですが、やはり以前主力だった「5V系」となっているデバイスが多いようです。電子デバイスのショップや通信販売ページで「Arduino用」となっているものは「5V系」のものが多く、そのままではmicro:bitなどの3V系システムには接続できない場合があります。
レベル変換モジュール
micro:bitに5V系デバイスを接続する場合、まずはmicro:bit用の3V電源と別にデバイス用に5V電源が必要になります。この点は「micro:BreadBoard」のような両電源対応の実験ボードや電源パーツを用意すれば解決します。
入出力信号の電圧レベルの違いは分圧回路などでも変換可能ですが、世の中便利なもので、双方向に対応した「レベル変換IC(集積回路)」が各社から発売されています。また動作に必要な抵抗やコンデンサーなどを一緒に載せた「レベル変換モジュール」も販売されています。
多くの場合、異なった電源電圧のデバイスを結ぶ信号線の間にレベル変換モジュールを挿入するように配線します。さらに変換モジュールに二系統の電源を供給し動作させます。
I2Cバス用変換モジュール
レベル変換モジュールの中でも、I2C通信に特化したのが「I2Cバス用変換モジュール」で、SDA・SCLの2本の信号のレベル変換を行うことができます。双方向に対応し、8ピンと小型で安価なモジュールが販売されています。
I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)
各社から、I2Cバス用レベル変換モジュールが販売されていますが、今回は、秋月電子通商が販売している次の製品を使ってみました。
秋月電子通商製「I2Cバス用双方向電圧レベル変換モジュール(FXMA2102)」
8PinDIPと小型な上に、安価(200円2021年5月現在)ですが、プルアップ抵抗が別付けというのがかえってmicro:bitとの相性がよいようです(理由は後述)。また、秋月電子通商さんの販売なので、通信販売で入手しやすいということもお奨めの理由です。
半田づけ
この変換モジュールは「DIP変換基板」とピンヘッダーのセットで販売されています。使用している変換用IC「FXMA2102」はとても小さな表面実装部品ですが、積層コンデンサーなどと一緒にDIP変換基板に取り付けられているので、取扱が容易です。ブレッドボードに挿して使うには、変換基板にピンヘッダーを半田づけする作業が必要になります。
添付の説明書にも記載がありますが、ブレッドボードなどにピンヘッダーをあらかじめ挿し、その上に基板を置いて半田づけすると、ピンが平行になりきれいに半田づけできます。
回路図
回路例を下記に示します。
micro:bitのI2C関連の信号線は、P19(SCL)とP20(SDA)です。変換モジュールの「A」側に次のように接続します。
VccA - 3.3V電源
A0 - micro:bitのP20(SDA)
A1 - micro:bitのP19(SCL)
I2Cバスには通常プルアップ抵抗を接続するのですが、micro:bitのP19・P20は内部で4.7kΩのプルアップ抵抗が接続されるため、外付けの抵抗は不要です(他社の変換モジュールではモジュール用にプルアップ抵抗があるので、micro:bitと相性がよくないのです)。
変換モジュールの「B」側には5Vデバイス関連の接続をします。
VccB - 5V電源
B0 - デバイスのSDA
B1 - デバイスのSCL
GND -電源・デバイスのGND
5Vデバイス側(B側)のSDA・SCLに接続するプルアップ抵抗については、デバイスの回路構成によって決定します。
変換モジュールのOE(Output Enable Input)は、モジュールの動作を制御するもので、HighレベルでA・B間の変換をし、Lowレベルで高インピーダンス(電気的にI2Cバスから切り離された状態)となります。これは複数のI2Cモジュールを使い切替をおこなうための機能です。今回の回路では変換を行うため、4.7kΩの抵抗を介し3.3V電源に接続します。
micro:BreadBoard上での実装例
上の回路図を元に、I2C変換モジュールをmicro:BreadBoard上に実装してみたところです。変換モジュールの5Vデバイス側(B側)には、プルアップ抵抗(4.7kΩ×2本)とロングピンヘッダー4P分をつけてみました。ブレッドボード上の色付きラインはわかりやすいよう画像処理でつけたものです。
I2Cレベル変換モジュール配線写真その1
I2Cレベル変換モジュール配線写真その2
応用例
多くの文字(16字×2行または20字×4行)を表示することができるLCD(液晶表示器)にI2C化モジュールをつけた製品がAmazonなどで販売されていますが、多くは5V駆動品です。
I2C変換モジュールを用いると、このようなLCDをmicro:bitで制御することが可能になります。