0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

手持ちのUSB-PD電源でラズベリーパイ5に給電したい!15V→5V/5A変換基板を作って試してみた

0
Posted at

今回設計した基板

IMG_6441-decoded.jpg

USB-PD電源の15Vを5.1Vに降圧して、Raspberry Pi 5のUSB-C電源端子に直接給電する基板を作りました。

一般的に売っているUSB-PD使えはするのですが、最大5V/3Aになってしまいます。ラズベリーパイにUSBカメラ繋いで何か監視させるなど、負荷が高いことをするとしょっちゅう電源電圧が低いですってエラーが出ちゃいます。

ノートPC用の充電器やモバイルバッテリーなど、手持ちのUSB-PD電源をラズパイ5にも使いたい!というのが今回の目的です。

WEBショップで販売しています!
販売ページ:https://raspikoubou.theshop.jp/items/164532657

ラズパイ5の電源、選ぶのが難しい

ラズパイ5は、USB機器を含めて余裕を持って使う場合、5V/5Aの電源が推奨されています。公式の27W電源なら5.1V/5Aを供給できます。

Raspberry Pi公式27W USB-C電源

画像・仕様の出典:Raspberry Pi公式27W USB-C電源

でも、手元にあるノートPC用のUSB-PD充電器を見ると、高出力なのに5Vでは3Aまで、というものがあります。「100Wも出せるのにラズパイには5V/3Aまでなの?」となりますよね。

USB-PDと5V/5Aの話

USB-PDは、電源(充電器)と機器が通信して、使う電圧・電流を決める仕組みです。電源側は「この電圧なら何Aまで出せます」という候補を一覧で機器に伝えます。この候補ひとつひとつをPDO(Power Data Object)と呼びます。

機器はその一覧の中から使いたいものを1つ選んで要求し、電源が出力をその電圧へ切り替える、という流れです。

PDOには必須と任意がある

USB-PDにはPower Ruleという決まりがあり、充電器の定格電力に応じて、最低限対応すべき電圧と電流が決まっています。

充電器の定格 必須となる出力仕様
15W 5V/3A
27W 5V/3A、9V/3A
45W 5V/3A、9V/3A、15V/3A
60W 5V/3A、9V/3A、15V/3A、20V/3A
100W 5V/3A、9V/3A、15V/3A、20V/5A※

※20V/5Aの利用には5A対応ケーブルが必要です。

このように、充電器の定格電力が大きくなると高い電圧への対応が求められますが、5V/5Aは何Wの充電器でも必須ではありません。

そのため、100Wの高出力充電器でも、5Vでは3Aまでという製品が多いのです。

参考:ルネサス USB-PDのPower Rule解説 / USB-IF USB Power Delivery 規格文書一覧 / Raspberry Pi公式 USB Power Delivery on Raspberry Pi 5 / USB-IF USB Type-C仕様 Release 2.0

ラズパイ5は高い電圧を直接使えない

ラズパイ5がUSB-PDで要求するのは5VのPDOだけです。9V・15V・20VのPDOは使いません。

そのため、100WのUSB-PD充電器をラズパイ5に直結しても、使われるのは5VのPDOだけです。前の節のとおり5Vは3Aまでの充電器が多いので、結果は5V/3A(15W)止まりになります。充電器に15V/3Aや20V/5Aがあってもその電力を使えません。

参考:Raspberry Pi公式 USB Power Delivery on Raspberry Pi 5

じゃあ15Vをもらって5Vに下げればいい

そこで今回は、USB-PD電源から15Vの供給を受け、基板上で5.1Vに降圧してラズパイ5へ給電する方式にしました。

15V/3Aなら45Wあるので、5.1V/5A(約25.5W)を作るには変換ロスを考えても十分な余裕があります。入力側のケーブルに流れる電流も3A以下に収まるので、5Aケーブルを用意する必要もありません。

20Vではなく15Vを選んだ理由は2つあります。

  • 変換効率:15Vの方がMOSFETのスイッチング損失を抑えやすい
  • 対応する充電器の多さ:USB-PD規格では15V/3Aは45W以上、20V/3Aは60W以上の電源で必須となるため、15Vの方が幅広い充電器で利用できる

この基板は15Vだけを要求するので、15V/3Aを供給できない充電器では使えません。

降圧の基板は以前、24V入力の降圧HATも作っているので、よければそちらも見てみてください。

IC選定と回路

回路図

基板の構成の概要は次のとおりです。実線は電力の流れを、点線は制御信号を表しています。

順番に説明します。

CH224DでUSB-PDの15Vを要求する

USB-PDの通信は、シンク側のPDトリガーICとしてCH224Dを使いました。CFGピンの抵抗で要求電圧を設定できるICで、CFG1に56kΩを接続して15Vを要求しています。

マイコンを載せずに抵抗だけで電圧を決められるので、部品点数が少なく済むのがいいところです。

15Vが来たときだけ降圧を動かす

ここが今回ちょっと工夫したところです。

CH224Dには、要求した電圧になったことを知らせるPG(Power Good)出力がありません。PD交渉が失敗したり、15Vに対応していない充電器をつないだりすると、入力は5Vのままだったり、9Vや12Vになったりします。その状態で降圧ICが動くのは避けたいです。

そこで、CJ431(シャントレギュレータ)とS8550(PNPトランジスタ)でヒステリシス付きの電圧検出回路を作り、降圧ICのEN端子を制御しています。設計上の閾値は次のとおりです。

  • 13.6V以上でON
  • 13.2V以下でOFF

これで5V/9V/12Vのときは出力しない設計にしています。ヒステリシスを設けているのは、閾値付近で入力電圧が揺れたときにON/OFFが頻繁に切り替わるのを防ぐためです。

20Vはどうなるの?

閾値は「約13.6V以上でON」なので、15Vも20Vもどちらも閾値を超えます。もし何かの理由で20Vが入力された場合も、ENはONになります。降圧ICのTPS56A37は入力電圧範囲がデータシート上4.5〜28Vなので、20Vでも定格の範囲内です。

降圧はTPS56A37

降圧ICにはTIのTPS56A37RPARを使いました。5A出力に対応した同期整流の降圧コンバータです。

  • スイッチング周波数:500kHz
  • インダクタ:3.3µH
  • 出力電圧:FB抵抗で5.100Vを目標値として設定

ラズパイ公式電源と同じく、5.0Vではなく5.1Vを目標値にしています。後段のeFuseやコネクタ、ラズパイ内部での電圧降下を考えると、少し高めにしておきたいからです。

出力にはeFuseのTPS259470

出力側には、eFuseのTPS259470を搭載しています。役割は、大きく分けて次の3つです。

  • 過電流制限:約5.95A
  • 過電圧遮断(OVLO):約6.03V
  • 逆流防止

降圧ICに異常が発生して出力電圧が上昇した場合でも、ラズパイへ6V以上の電圧が印加されないようにするため、搭載しています。ラズパイ側から電流が逆流するのも防ぎます。

ただし、eFuseを搭載するとその分の電圧降下があり、5A流すと計算上約0.14V下がります。このぶんも、出力を5.1Vに設定している理由のひとつです。

ラズパイがつながっているときだけ出力する

出力側のUSB-Cでは、ラズパイ(シンク)が接続されたときだけ出力をONにするようにしています。何も接続されていないUSB-C端子に、常時5Vが出力される状態を避けるためです。
触れちゃいけないところに触れてバチッ!なんて嫌ですからね。

USB-CのCCピンのしくみ

USB-Cには、電気を出す側(ソース:充電器など)と、電気を受け取る側(シンク:ラズパイなど)があります。

USB-CのCCピンには、機器の接続を検出する役割があります。

  • ソース側:CCピンを抵抗(Rp)でプルアップする
  • シンク側:CCピンを抵抗(Rd)でプルダウンする
  • 接続時:RpとRdによってCCピンの電圧が下がり、ソース側はシンクが接続されたことを検出できる

USB-CのCCピンのしくみ

さらに、CCピンには電源が供給できる電流を知らせる役割もあります。

先ほど説明したUSB-PDでは通信によって電圧や電流を決めますが、USB Type-Cには、PD通信を使わずに電流を通知する仕組みもあります。

その方法はシンプルで、ソース側のプルアップ抵抗(Rp)の値によって、供給可能な電流を知らせます。

Rpの抵抗値(5Vプルアップ) 通知する電流
56kΩ USB標準電流
22kΩ 1.5A
10kΩ 3A

今回の基板では、これらの仕組みを次のように利用しています。

  • 接続検出:ラズパイ5が接続されるとCCピンの電圧が下がり、eFuseをONにして5.1Vを出力する。未接続時はeFuseがOFFになり、出力側USB-Cプラグには電圧が出ない
  • 電流通知:CCピンを10kΩでプルアップし、ラズパイ5に3A対応の電源として通知する

つまり、この基板は5Aを供給できる設計ですが、CCピンによる通知だけではラズパイ5に5A電源として認識されません。

出力側ではUSB-PDによる5V/5Aの交渉を行わないため、USB周辺機器への電流制限を解除するには、後述するラズパイ側の設定が必要です。

参考:ルネサス USB Type-CとCCの解説

なお、この部分はラズパイ5へ接続することを前提とした設計で、USB Type-Cの仕様に完全準拠したソースではありません。ラズパイ5以外の機器はつながないでください。


完成した基板

基板の表面 基板の裏面

基板サイズは62×14mmの細長い形で、2層基板です。

LEDは2つ載せています。

  • 白LED:PD IN(入力側に電圧が供給されている)
  • 緑LED:5V OUT(降圧して出力している)

3Dプリントケース

ケースも作りました。スナップフィットで、ネジなしでパチッとはまります。


使い方

1. ラズパイ5につなぐ

基板の出力側USB-Cを、ラズパイ5の電源用USB-C端子に挿します。

2. USB-PD電源をつなぐ

15V/3Aに対応したUSB-PD充電器を、基板の入力側USB-Cにつなぎます。白LED → 緑LEDの順に点灯すれば正常です。

接続した様子

3. config.txtを設定する

先ほど書いたとおり、ラズパイ5はこの基板を5A電源として自動認識しません。問題なく動くのですがラズパイに繋いでいるUSB周辺機器への電流が制限されます。
USB周辺機器へ最大1.6Aまで供給できるようにするには、/boot/firmware/config.txt に次の1行を追加します。

/boot/firmware/config.txt
usb_max_current_enable=1

追加したら再起動してください。

EEPROMの設定で指定する方法もあります。

sudo rpi-eeprom-config --edit
PSU_MAX_CURRENT=5000

いずれもUSB周辺機器へ最大1.6Aまで供給できるようにするための設定ですが、動作が少し異なります。

  • usb_max_current_enable=1:USB周辺機器への電流制限を600mAから1.6Aに変更する
  • PSU_MAX_CURRENT=5000:USB-PDのネゴシエーションを省略し、5A電源が接続されていると仮定する

どちらの設定も、電源が実際に供給できる電力を増やすものではありません。


測定してみた

ここからは実際にラズパイ5を動かして測定した結果です。
測定に使った電源とケーブルは次のとおりです。

  • 充電器:Anker Charger (140W, 4 Ports)
  • ケーブル:Anker PowerLine III Flow USB-C & USB-C ケーブル 1.8m

PD直結と比べてみる

まず、同じ充電器をラズパイ5に直結した場合(5V/3A)と、この基板を通した場合で、GPIOの5Vピンの電圧を比べました。

負荷条件はどちらも同じです。CPUを2.8GHzにオーバークロックし、ファンを最大回転数にして、5分間高負荷をかけました。

給電方法 GPIO 5V
PD充電器に直結 4.73V
この基板経由 4.90V

基板経由のほうが170mV高い結果になりました。

直結した場合は、1.8mのケーブルに大きな電流が流れるため、その分だけ電圧降下も大きくなります。一方、この基板を使う場合は15Vで給電するためケーブルに流れる電流が少なく、さらにラズパイの近くで5.1Vへ降圧できることが、電圧の改善に寄与していると考えています。

このときの基板の出力電圧は5.070〜5.075Vで安定していました。

image.png


6時間耐久テスト

短時間の負荷試験では電圧の改善を確認できましたが、長時間使い続けても安定して動作するのでしょうか?

そこで、ラズパイ5に高い負荷をかけながら、6時間の連続運転テストを行いました。

試験内容

使用した機器は次のとおりです。

  • Raspberry Pi 5(4GB)/Raspberry Pi OS Bookworm
  • Anker 140W充電器+USB-Cケーブル(1.8m)
  • USBカメラ(1920×1080、30fps)
  • Transcend製USB SSD
  • CPU:2.4GHz(オーバークロックなし)
  • usb_max_current_enable=1 を設定

CPU・GPUに負荷をかけながら、USBカメラで映像を取り込み、SSDへの読み書きとデータ検証を繰り返しました。

6時間のうち、4時間40分はこれらを同時に動かし続ける高負荷状態にしています。

結果

image.png

測定結果

電源電圧の推移

Raspberry Pi 5の内部電圧センサー(EXT5V)を約1秒間隔で監視しました。

測定項目 結果
アイドル時 約5.03V
高負荷時の平均 4.96V
高負荷時の最小 4.92V
高負荷時の最大 4.99V

4時間40分の連続高負荷試験では、EXT5V電圧は4.92〜4.99Vの範囲で推移しました。

Raspberry Pi 5の動作状況

電源電圧とあわせて、CPUクロック、SoC温度、スロットリングの発生状況も記録しました。

監視項目 結果
CPUクロック 高負荷時も2.4GHzを維持
SoC最高温度 70.8℃
get_throttled 全21,600サンプルで0x0
再起動 なし

試験中、低電圧や温度上昇によるスロットリングは検出されず、再起動も発生しませんでした。

USB機器の動作確認

USBカメラによる映像取得と、SSDへのデータ書き込み・読み出し検証を並行して実施しました。

検証項目 結果
USBカメラ 約30fpsで映像取得を継続
SSDの書き込み・CRC検証 1,078回成功
SSDの検証読み出し量 約539GiB
USB切断・リセット 検出なし

USBカメラとSSDを同時に使用した状態でも、接続の切断やデータ検証エラーは検出されませんでした。

耐久試験のまとめ

今回の試験環境では、約6時間の運転中に電源の低電圧、スロットリング、再起動、USB機器の切断は検出されませんでした。


最後に

手持ちのUSB-PD充電器でラズパイ5に給電したい!という思いつきから作った基板でしたが、PD直結よりGPIOの電圧が170mV高くなり、6時間の耐久テストでも問題なく動いてくれました。

ノートPCの充電器でラズパイ5を動かしたい方は、よければ使ってみてください!

WEBショップで販売しています!
販売ページ:https://raspikoubou.theshop.jp/items/164532657

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?