Amazonにて、「双方向ロジックレベル変換モジュール」というものを買ってみました。
これは、ロジック信号を双方向にレベル変換(3.3V⇔5Vとか)できる代物で、安くてお手軽に4chを変換できるので便利です。SPI通信やI2C通信などで、電圧の違うICを接続するときなどに活躍します。秋月やsparkfunなどにも似たものがあります。
(PR)今回は、この「双方向ロジックレベル変換モジュール」の中身や使い方などについて、やっていきます。
双方向レベル変換モジュールとは、どういうものか?
双方向レベル変換モジュールは、デジタル(ロジック)信号の電圧を変えるものです。信号を入れたら、逆側から電圧レベルを変更された信号が出力されます。
"双方向"なので、逆向きもOKです。
今回のモジュールでは、チャンネルごとに自由に方向を決められます。特に設定とかはなく、途中で向きを切り替えることもOKです。
双方向レベル変換モジュールの使い方(接続方法)
実際の、双方向レベル変換モジュールの接続方法はこんな感じです(一例)。
この例では、信号の向きをチャンネル1~3は3.3V→5V、チャンネル4は5V→3.3Vとしています。
双方向レベル変換モジュールの内部回路
さて、このモジュールの中身はどうなっているのか?というと、こんな感じになっています。
MOSFETと10k抵抗が2つで1チャンネルとなっていて、これが4チャンネル分ある、という構成になっています。MOSFETはゲートしきい値が1V程度のものが使用されているようです。
双方向レベル変換モジュールの動作原理
上記の回路から、1チャンネル分だけ切り出すと、こうなります。
これを見ながら、双方向レベル変換回路の動作を見ていきます。
3.3V→5V
"0"のとき
LV信号に"0"を入力すると、MOSFETのVgsに3.3VがかかるためMOSFETがONとなります。すると、MOSFETのD-S間が導通するため、HV信号とLV信号の電位が同じになります。つまり、HV信号はLV信号と同じ0Vとなるので、HV信号に"0"が出力されます。
"1"のとき
LV信号に"1"を入力すると、MOSFETのVgsは0V(電位差なし)となるのでMOSFETはOFFです。そのため、HV信号は抵抗によるプルアップで5Vです。よって、論理"1"がHV信号に出力されます。
5V→3.3V
"0"のとき
HV信号に"0"を入力した時を考えます。まず、LV信号は入力なのでHighインピーダンスと考えて、抵抗RLによってMOSFETのソースも3.3Vとなり、Vgs=0V、MOSFETはOFFとなります。すると、MOSFETのソース(3.3V)からドレイン(0V)へボディダイオードを通じて電流が流れます。
ボディダイオードが導通すると、ソースの電位がVFとなるため、Vgs=3.3-VFとなり、MOSFETがONになります。MOSFETがONとなると、HV信号とLV信号は同電位になるので、LV信号に"0"が出力されます。
"1"のとき
HV信号に"1"を入力すると、Vgs=0VとなるのでMOSFETはOFFとなります。ソースの電位(3.3V)<ドレインの電位(5V)なので、ボディダイオードは導通しません。そのため、MOSFETはOFFのままとなり、LV信号は抵抗RLでプルアップされた3.3Vが入るので、論理"1"がLV信号に出力されます。
実際に動作させてみた
ファンクション・ジェネレータで矩形波(Duty50%、0-5V or 0-3.3V)を出力させて、入出力の波形をオシロスコープで観測してみました。
3.3V→5V
実験回路はこんなイメージ(ファンクション・ジェネレータとオシロのプローブのGNDは省略)。観測波形はそれぞれこんな感じになりました。
3.3V→5V(1kHz) CH1:入力(3.3V) CH2:出力(5V)
3.3V→5V(10kHz) CH1:入力(3.3V) CH2:出力(5V)
3.3V→5V(100kHz) CH1:入力(3.3V) CH2:出力(5V) 立ち上がりの遅れ(波形のなまり)が目立ってきます。
3.3V→5V(200kHz) CH1:入力(3.3V) CH2:出力(5V)
3.3V→5V(500kHz) CH1:入力(3.3V) CH2:出力(5V)
5V→3.3V
実験回路はこんなイメージ。観測波形はそれぞれこんな感じになりました。
5V→3.3V(1kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V(10kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V(100kHz) CH1:入力(5V) CH2:出力(3.3V) 立ち上がりの遅れ(波形のなまり)が目立ってきます。
5V→3.3V(200kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V(500kHz) CH1:入力(5V) CH2:出力(3.3V)
双方向レベル変換モジュールを高速化するには?
上記の実験結果から、3.3V→5Vのときも、5V→3.3Vのときも100kHzあたりから、立ち上がりがなまりだします。500kHzはもとより、200kHzでも実用は厳しい印象です。しかし、200kHzや500kHzは、SPI通信やI2C通信で使用する領域です。
このレベル変換回路を高速化するには、抵抗値を小さくするという方法があります。この場合、信号出力側の抵抗を小さくすることになります。
この回路図でいえば、抵抗RHを小さくすると3.3V→5Vが高速化され、抵抗RLを小さくすると5V→3.3Vが高速化されます。
ところが、これらの抵抗は(今回のモジュールだと)実装済みのチップ抵抗です。チップ抵抗の貼り替えは、正直やりたくない!のが本音です(私だけ?)。そんな場合は、(このモジュールなら)抵抗を外付けすることで対応できます。
外付けの抵抗と実装済みのチップ抵抗で、合成抵抗とすることで抵抗値を下げます。外付けする抵抗値を1kΩとすると、合成抵抗は(10kΩ×1kΩ)/(10kΩ+1kΩ)=0.9kΩになります。
実際のモジュールでの接続例はこんな感じです。
抵抗を外付けして、動作させてみた
上記のように1kΩの抵抗を外付けしたときに、どれくらい変化があるか、試してみました。試験方法はさきほどと同様です。
3.3V→5V
3.3V→5V(100kHz) CH1:入力(5V) CH2:出力(3.3V)
3.3V→5V(200kHz) CH1:入力(5V) CH2:出力(3.3V)
3.3V→5V(500kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V
5V→3.3V(100kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V(200kHz) CH1:入力(5V) CH2:出力(3.3V)
5V→3.3V(500kHz) CH1:入力(5V) CH2:出力(3.3V)
3.3V→5V、5V→3.3Vともに500kHzで多少なまる程度まで改善されました。これならこのあたりの周波数でも使えそうです。
今回は、双方向ロジックレベル変換モジュールについて、内部回路・動作原理・動作波形などやってきました。今回はこれで終了です。参考になれば幸いです。
0 件のコメント:
コメントを投稿