5V--3.3Vレベル変換回路の原理

2024/01/12に公開

マイコンやシングルボードコンピュータのI/O端子は5Vと3.3Vのものが主流です.例えば,Arduino UNO Rev3は5VでRaspberryPiやESP32は3.3Vです. 5Vのシステムと3.3Vのシステムを直接繋ぐと,次のような問題が発生します.

  1. 許容できない大きさの電流が流れるため,3.3V側のマイコンが壊れる.
  2. HIGH-LOWのシグナルの閾値が異なるため通信が行われない.

このような問題を回避するために5V--3.3V間のレベル変換が必要になります.有名な5V--3.3V間の変換回路が以下のものになります. 上側(A)が5V-->3.3V,下側(B)が3.3V-->5Vの変換回路となります. 上側の回路の原理について書かれたサイトは多数ありましたが,下側の回路の原理について説明したサイトは見つからなかったため,ここで紹介します.これらの回路を理解するにはプルアップ抵抗・プルダウン抵抗の知識が必要です.これらは端的に言えば,入力がないときに電圧をHIGHかLOWか決める抵抗です,

A). 5V-->3.3V変換 こちらは単純な分圧回路です.インプット側の電圧を V_i , アウトプット側の電圧をV_o, インプット側からGNDに流れる電流をiとすると,

V_o = iR_1 + iR_2,\ V_i = iR_1

となります. ここからiを消すと,

V_i = \frac{R_1}{R_1+R_2}V_o

と書けます. したがって,

V_i = \frac{3.3\times 10^3}{3.3\times 10^3+2.2\times 10^3}\times 5.0=3.0 [\mathrm{V}]

と変換されます. 3.3VのマイコンのHIGHの閾値はおおよそ2Vなので, 3VはHIGHと認識されます.\frac{R_1}{R_1+R_2}の値を保てば,他の抵抗でも変換は可能です.しかし,抵抗の消費電力V^2/Rを考慮する必要があります. V_i = 0 [V] のときにはプルダウン抵抗によりV_o = 0 [V] となります.

B). 3.3V-->5V 変換 こちらはトランジスタの知識が必要となります.今回使用するのはNPNトランジスタです,重要なのはベース(B)からエミッタ(E)に電流が流れるとコレクタ(C)からベースにも電流が流れるということです.

まず,V_i = 3.3 [V]のときには,ベース--エミッタ間の電圧が等しいため電流が流れません.そのため,コレクタ部分の導線は繋がっていないとみなせるので,プルアップ抵抗により,V_o = 5 [V] となります.

一方で,V_i = 0 [V]のときには,ベース--エミッタ間に電流が流れるため,コレクタを通じて5Vのサプライ(上の矢印)からインプット側の端子に電流が流れます.そのため,コレクタ部分で導線が繋がっていると見なせ,V_o = 0 [V] となります.

レベル変換ICを使うことも1つの手ですが,ICが手元が無いときにこのような回路が役立ちます.

Discussion