P-ch MOSFETによる自動電源選択回路

Featured image of the post

目次

はじめに

最近Raspberry Pi Pico(RP2040)を使ってロボット用基板を何枚か作りました。

Raspberry Pi Picoのデータシートに載っているP-ch MOSFETを使った自動電源選択回路が便利だったので、動作確認に使った回路シミュレータごと共有しようと思います。

マイコンへの電源供給方法

Raspberry Pi Picoは、USB経由のVBUS(5V)またはVSYSピン(1.8V~5.5V)からの外部供給で動作します。

USB接続時はその5Vで動作するので良いのですが、ロボット基板でバッテリー駆動時はDCDCで降圧した電圧を外部電源として供給します。このとき、単純に電源を並列にしてしまうと、一方から他方への逆流を引き起こします。USBも外部電源も逆流されると困ります。特にUSBはPCを破壊しかねないので本当に不味いです。

最も簡易的な逆流防止策は、各電源ラインにショットキーバリアダイオード(SBD)を挿入する「ダイオードOR接続」です。しかし、この方法では、常にダイオードの順方向電圧降下VFV_Fが発生し、

Ploss=VF×IloadP_{loss} = V_F \times I_{load}

で表される電力損失が発生します。これは、バッテリー駆動時のロスが増えるだけでなく、本来なら使える電圧でも電圧降下分があるために、バッテリーのエネルギーを最後まで使い切ることができない、といった事が起こります。

こちらの記事では、SBDとP-ch MOSFETで外部給電の比較を行い、SBDでは供給1.8V(VSYS1.51V)が下限なのに対し、MOSFETでは供給1.53V(VSYS1.47V)まで動作可能であることが試されていました。

また、ダイオードOR接続では電圧が高いほうから給電されるため、USBを接続しているのにバッテリーから給電されるような勿体ない事象が発生する可能性もあります。

MOSFETによる電源選択回路

Raspberry Pi Picoのデータシート の4.5. Powering Pico に外部電源用の回路の例が載っています。

Image in a image block

これはP-ch MOSFETを変な繋ぎ方で使うものです。G, S, Dの繋ぎ方を間違えやすいです。機能としては、VBUS(USB電源)を優先して選択する電源選択回路です。

Power MultiplexerやPower ORing Circuit、Ideal Diode-ORなどと呼ばれるようです。

下がシミュレータで再現したものになります。

ページ上から実際に動かせます。

USB電源側のスイッチを押すとそちらが優先されます。これで、USB接続時はUSBから電源を優先的に供給する(のでバッテリーのエネルギーを浪費しない)という回路を組むことができます。

また、どちらの電源に対しても逆流しません。

MOSFETの選定

公式が推奨していたDMG2305UX はJLCPCBのExtended Partsだったので、前作ったときはPreferred Extended Parts(Promotional Extended Partsに名前が変わった?)のHL6042 を採用しました。Pch MOSFETを片っ端から確認して、ON抵抗が低いものを探した覚えがあります。

Image in a image block

上記ブログにて紹介されているMOSFETの選び方としては、①ON抵抗が小さく、②電流の容量に余裕があり、③ゲートスレッショルド電圧が低いものです。

①ON抵抗 RDS(on)R_{DS(on)}

  • ゲート電圧VGSV_{GS} -4.5V ドレイン電流IDI_D -4.0A の場合: 最大 43mΩ
  • ゲート電圧VGSV_{GS} -2.5V ドレイン電流IDI_D -4.0A の場合: 最大 55mΩ
  • ゲート電圧VGSV_{GS} -1.8V ドレイン電流IDI_D -2.0A の場合: 最大 75mΩ
  • ゲート電圧VGSV_{GS} -1.5V ドレイン電流IDI_D -1.0A の場合: 最大 100mΩ

とかなり小さめです。

②ドレイン電流 IDI_D は25℃で定常-5.0A、70℃でも定常-4.0Aなので十分です。

③ゲートスレッショルド電圧 VGS(th)V_{GS(th)} は-0.3V~-0.9Vです。

DMG2305UX よりも全体的に性能が良さそうです。

他の事例として、ラズパイのコミュニティでAO3401を使う例 がありました。

使用例

メインマイコンのRaspberry Pi Pico Wと、モーター制御用サブマイコンのRP2040-Zeroが1枚の基板に載ったものを作りました。

MOSFETによる電流スイッチはEasyEDAの回路図記号が間違っていることに気づかなかったため、電源をオフにできないというヤバいロボット基板になってます。

Image in a image block

右下にある2つのMOSFETが電源選択回路です。マイコン2つにそれぞれUSBがついていて、バッテリーからDCDCで5Vを生成しているので、少し複雑になっています。

それぞれの電源がある場合とない場合を一覧にしたものが下の表です。これに合うようにしました。

DCDC5V Pico W USB Zero USB 状態
電源が無いので動作しない
Pico WのVSYSにDC5Vを供給
ZeroはVSYSからP-MOSを介して供給
Pico WのVSYSにVBUS 5Vが供給
ZeroはVSYSからP-MOSを介して供給
Zeroの5VにVBUS 5Vが供給
Pico Wは起動しない
P-MOSがDC5Vを遮断してPico WのVSYSにVBUS 5Vが供給
ZeroはVSYSからP-MOSを介して供給
Pico WのVSYSにVBUS 5Vが供給
P-MOSがPico WのVSYSを遮断してZeroにVBUS 5Vが供給
Pico WのVSYSにDC5Vを供給
P-MOSがPico WのVSYSを遮断してZeroにVBUS 5Vが供給
P-MOSがDC5Vを遮断してPico WのVSYSにVBUS 5Vが供給
P-MOSがPico WのVSYSを遮断してZeroにVBUS 5Vが供給

これがシミュレーションです。各電源の条件と一致していると思います。

RP2040-ZeroはUSBのVBUSと5Vピンがダイオードも何もなく直結なので、USBの電圧が低いときにバッテリーから給電すると逆流する可能性があります。(USB2本刺しのときは同じ電源なので大丈夫なのと、P-MOSを介して少しは電圧降下してるはずなのでやっぱり大丈夫なはず)USBの電圧よりも低い電圧で供給する以外に方法を思いつかなかったので、USBアイソレータを常に使うことにして考えないことにしました。

あとがき

この記事を書くためにCircuit Simulator Applet をastro-notion-blogに埋め込むためのコンポーネントを作りました。

この回路もCircuit Simulator Appletも便利なのでオススメです。

あとUSBアイソレータ、最強です。