fumiLab

fumimakerが作ったもの、やったことについて書いていきます。

Raspberry Piの電源は2.5A以上も必要なのか?

f:id:fumimaker:20191101203359j:plain

みんな大好きRaspi
 

https://www.amazon.co.jp/RASPBERRY-PI-TSI-PI018-Clear-Raspberry-Pi3-Model/dp/B01D1FR29M

今日の目次

っていうかそんなにパワフルな電源必要なの?

最近Raspiをよく使います。名刺サイズでLinuxが動き、GPIOも操作できて電子工作的なことも簡単にできてしまうとても便利なアイテムです。

Raspiを使う上で重要なのが電源問題。電源のせいでまともに起動しない、動作が不安定になることもしばしばあります。このため、2.5A以上供給できる電源を使うことが公式に推奨されています。

www.raspberrypi.org

実際に公式が販売しているRaspiセットに同梱されている電源アダプタも5V2.5A(?)のものです。

 

ここで、果たしてそんなに電源必要なのか疑問に思います。身の回りにUSB-MicroB 2.5Aなんて供給できる電源なんてそうそうありません。本当に必要であれば手軽にラズパイを動かすこともままならないかもしれません。

この記事ではRaspi3において、Stressコマンドを用いてCPUに負荷を与えた際に流れる電流を測定することで必要な電源の考察を行います。

 

 

そもそもUSBは電源を供給するものじゃない

 このブログを読んでいる人ならご存知かと思いますが、そもそもUSBは電源を供給するものではなく、通信をするための規格です。ユニバーサルシリアルバスの略でUSBです。だからたくさん電流を流すようにできてないんですね。

http://sdphca.ucsd.edu/lab_equip_manuals/usb_20.pdf

USBはエゴネーションをすることによって5V500mAの電流を供給することができます。実はVDDとGND繋げば電源が取れるという単純なものではないです。(この仕組みを無視して使って言う場合がさいきんではほとんどなわけです...)

USBの規格を使って、2007年に画策されて以来現在でもバリバリ使われているBatteryCharge、9V,12Vの電圧をかけて電力を稼いだQuick chargeや、最大100Wも供給できるPowerDeliveryなども最近は搭載されているデバイスも多いですね。

話は逸れましたが、USB-Cによって物理形状と規格が一致しないというケースがぐんぐん増えました。全部USB-Cって便利なように見えますが、一体どんな規格を使って何をしているのか理解しなければ思い通りに動かないケースが増えトラブルの原因になるのではないかと個人的に思っています。

さて、話を戻すとRaspiはMicroBコネクタで給電しています。回路図を見た限り、ただ電源供給のコネクタとしてUSBの形状を使っているだけでエゴネーションなどの正しい手続きは踏まれていないように見えます。(そもそも正しいことやってたら2.5Aも出ないはずなんですが..)

 

Raspiの回路

電源事情を語る上で欠かせないのがRaspiの回路図。どんな回路で電源を供給するのかみてみました。

https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_3b_1p2_reduced.pdf

これを見てみるとヒューズがまず入っていて、DCDCで降圧して...なるほどこれは勉強になります。Arduinoなどもそうですが、オープンハードウェアのデバイスの回路をみることは非常に勉強になります。

実験

前置きが長くなりましたが、いよいよ実験していきます。Raspi3B+において、Stressコマンドを用いてCPUに負荷を与えた際に流れる電流を測定します。

Stressコマンドをインストールします。

sudo apt-get install stress

ストレスコマンドを実行するには以下を実行します。

sudo stress --cpu 4

測定には電流電圧チェッカーを用いました。一目で必要な情報が見えれて非常に便利です。ちょっと気になった時に使えるので一つ持ってて損ないですよ!

 また、電源供給には2種類のUSBChargerで検証しました。

1つ目の充電器はAppleの5W充電器です。皆さんも家に転がっていますね?1A給電ですがこれでも耐えれるのか検証します。

www.apple.com

 

2つ目の充電器はAnkerのPowerPort4です。2A出力が謳われている製品ですね。

 結果をいかに示します。

f:id:fumimaker:20191101135224p:plain

実験結果

Apple 5W USB充電器

平常時は0.2-0.3A、負荷時は0.5-0.7A、負荷+外部デバイス(バスパワーHDD)の場合は0.8A-1.0Aでした。(瞬間的に1Aを超えることもあった)

Appleはバッチリ電圧が5Vに張り付いており安定感抜群です。さすがAppleです。1Aしっかり出し切れているのはすごいです。大体のUSB充電器は表記されている電流出し切れないですので...ただし、1A出力時の出力電圧は4.9Vと約0.1Vの電圧降下が見られました。
定常時、負荷時では低電圧警告もなく全く問題ありませんでしたがHDD接続の突入電流で電圧が4.7V程度まで下がりましたが直ぐに回復しました。HDD接続時も低電圧警告は出ませんでした。

Anker Powerport4

Ankerは最初から電圧少し高めでいきなり5.1V出ていました。電流もしっかり吐き出せており、負荷時でも安定していました。HDD接続時では瞬間的に1.2A超えてきたこともありました。また、1A程度電流が流れていた際は電圧が5.2V程度となり若干のオーバーシュートが見られました。0.2Vであればギリギリ許容範囲内ですかね。

エクストラ実験

エクストラ実験としてバスパワーHDDとセルフパワーHDDを繋いでみました。

繋いだ瞬間、Appleの場合は低電圧警告が出て電流が1.1A, 電圧が4.3Vとなっていました。明らかにパワー不足ですね。

Ankerの場合は低電圧警告も出ず問題なく動作しました。電流は1.5A程度流れていました。負荷時と同様電圧は若干オーバーシュート気味でした。

 

考察

今回の実験では1A内しか観測できませんでしたが、Ankerについては瞬間的には2A近く行っていることも考えられます。HDDを繋いだ際には瞬間的に大電流が求められるため電圧が低下したと考えられます。シャント抵抗など使ってオシロでしっかり電流の監視をしたい。

また、ケーブルの抵抗値がバカにならないです。もし200mohrmあったら1A*0.2=0.2Vも電圧降下します。やっぱりUSBケーブルは粗悪なものや規格に沿わないものも存在するのでちゃんとパフォーマンスを求める、もしくは信頼性を求めるような場合はGPIOに直接電源を供給する方が良いと考えます。

今回はCPUと外部デバイスのみの検証でしたが、GPUを使うとさらに電流が増える可能性もあるのでGPUを使う場合は1A以上の電源が安心だと思います。

ただの簡易USBテスター使っての検証だったの測定誤差などあるかもしれません。少し適当な検証になってしまって反省。(深夜の1時くらいに突然思いついて実験やり始めたので許して)

結論

普通に使う場合はAppleの5W充電器でも十分だが、外部デバイスGPUを使う場合は2A以上供給する方が安心。また、USBは当たり外れが多いのでパフォーマンスをより求めるにはGPIOに直接電流を供給する方が良い。

 

今日はそんな感じです。