ラズベリーパイ用の24V降圧電源HAT基板を作って、安定した電源供給ができるようにしてみた

# 今回設計する基板
DC24VをDC5Vに降圧し、ラズベリーパイへGPIO経由で電力供給する基板です。
![IMG_1413.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/db4cfc15-17cb-8bbb-781c-dae31ddb269c.jpeg)
> RaspberryPi用　24V降圧電源基板(https://raspikoubou.theshop.jp/items/93380493)

# ラズベリーパイって安定して起動しないこと...あるよね？
今まで仕事でラズベリーパイ３、４、５を使ったことがありますが、電源に関しては下記の**印象**です。
ラズベリーパイ３：適当に拾ってきたUSB電源ACアダプタでも起動する
ラズベリーパイ４：電源によっては起動しない時がある
ラズベリーパイ５：しっかり電源選定しないと起動しない

試しに自宅で適当な電源を選んでラズベリーパイ５を繰り返し起動してみたのですが、思ってたより起動に失敗しないですね。

ひと昔前にiPhoneの充電に使っていたUSB電源ACアダプタ(定格5V1A)のようなラズベリーパイ５の最低要件の5V3Aより大きく下回る電源を使うと、ほとんど起動に失敗しました。

仕事で使っているラズベリーパイ５、しっかりした電源でも起動しないことがあるのに…
それなりに負荷の高いプログラムを起動時に実行する設定にしているからでしょうか…？

<br>

# 高負荷時のラズベリーパイ５の電源電圧変動を確認してみた
ラズベリーパイ５で負荷時と無負荷時でどの程度電源電圧が変動するのか確認してみます。
電源はたまたま机にあったUSB電源を使います。
![IMG_1406.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/cfb893b8-0230-ea0e-4e4d-4fc5673e4ec5.jpeg)
> たまたま机にあったUSB電源(ちなみに海外旅行で使うやつです)

<br>

電源電圧変動はGPIOの2番ピンの5Vをマルチメーターで測定します。
まずは無負荷時です。起動した後のデスクトップ画面で何もしていない状態の電源電圧を測定した様子が下図です。
ラズベリーパイ５のGPIOの5V端子とGND端子にワニ口クリップを挟み、それをマルチメーターに繋いでいます。
電源電圧は**5.064V**でした。5Vより少し高めの電圧を出力しているんですね、このUSB電源。

![IMG_1401.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/dd3758a0-4a75-4295-46f7-84b5e58fdf11.jpeg)
> 無負荷時の5V電圧(USB-C供給)

<br>

次に、負荷をかけた時の5V電圧を測定します。
下記の方法でCPU使用率を100%にして負荷をかけ、測定します。
```
sudo apt-get install stress
stress --cpu 4
```

測定した結果が下図です。
デスクトップ画面の右上のタスクバーに「C:100」(CPU使用率100%)と表示されています。
電源電圧は**4.953V**でした。
無負荷時と比較すると、5.064V - 4.960V = **0.104V** 下がっていることが分かります。
マルチメータでの測定であくまで平均値ですで、瞬間的にはもっと下がっているかもしれません。
これは流れる電流が大きくなることで、USBケーブルやラズパイ基板上の抵抗で電圧降下している、または5Vを供給している電源側がラズパイから要求されている電流を供給できていないのが原因と思われます。

それだけ電圧が下がってもラズベリーパイが固まって動作しなくなるなんてことはなく、私のwindowsPCからのリモートデスクトップも問題なく繋がりました。

現在ラズベリーパイ５の回路図が公開されていないので分かりませんが、ラズベリーパイ４と同様なら、USBの5VがそのままラズパイのCPUで使われているわけではなく、3.3Vや1.8Vに変圧して使用しているので、多少電圧が下がっても問題ないのでしょう。

ですが、ちょっとした電圧降下でもラズパイ内部の電圧レギュレーターがそれに追いつけず、CPUなどに供給される電圧が下がり、悪影響が出ることもあるかと思われます。
![IMG_1403.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/0c402310-2ca4-68f1-9330-39b941d90f16.jpeg)
> CPU使用率100%時の電源電圧

<br>

蛇足ですが、webブラウザでyoutube見てるときはどのくらい下がるんだろうと思い、測定してみました。
4つのタブでyoutubeを4つ開き、4個の動画を同時に再生しています。普段そんなことしないですが。
結果は**4.972V**でした。
無負荷時と比較すると、5.064V - 4.972V = **0.092V** 下がりました。
さすがにCPU使用率100%と比較すると電圧降下は小さいですね。
![IMG_1402.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/e06b9520-b306-ef92-0981-2545070635bb.jpeg)

<br>

今回の実験の感じですと、高負荷で電源電圧が下がっても問題なく動作しそうでした。
とはいえ、電子工作なら問題ないでしょうが、長期間動作をさせるには不安があります。

前述の通り、電圧降下はUSBケーブルや電源側の出力能力不足と思われますので、ラズベリーパイの直近であるHAT基板上に電源回路を作成し、電圧変動の小さくしてみます。

<br>

# (余談)制御盤ではUSB-C電源は用意しにくい
電源電圧変動が小さい電源HAT基板を作る、というのとは別にもう一つ目的があります。USB-Cではなく、DC24V電源でラズパイを起動できるようにすることです。
工場でロボットやコンベアを動かす制御盤では、コンセントにACアダプタを挿してUSB-Cで電源供給、なんてことはあまり行いません。(私の仕事ではですが)
基本的には下図のようにケーブルの被覆を向いて、端子を圧着して、機器にねじ止めするというのが一般的です。
電圧もAC200Vを引っ張ってきてDC24Vに変圧して使うことが多く、DC5Vなんて低い電圧はほとんど使いません。

つまり何が言いたいかと言いますと、民間向けのラズベリーパイは制御盤で扱いにくいんですね。DC24V電源で起動できるようになればラズベリーパイのためだけに5V電源設置したり、AC100Vコンセント用意してUSB-C電源ACアダプタを挿すなんてことしなくて済むんですね。
![制御盤.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/b8313fbc-3970-e239-4f69-87fcb065452b.jpeg)
> 制御盤.com(https://www.seigyobann.com/dictionary/seigyobann-about/)

<br>


# 同期整流バックコンバーター
直流を降圧する方法はいくつかありますが、今回はスイッチング方式の同期整流バックコンバーターという降圧回路を作成します。
バックコンバーターについては、下記の村田製作所さんのサイトが分かりやすかったのでご覧ください。
https://www.murata.com/ja-jp/products/power/nonisolated-dc-dc-converter/overview/basic/operating-principle

<br>

# 電源ICには主に２種類あります
DC変圧回路を作るための電源ICには大きく2種類ああります。(※私見)
設計が面倒だが自由度が高いもの、自由度が低いが設計にかかる手間が少ないものです。

下図は今回選定した、自由度が低いが設計にかかる手間が少ない電源IC、AP64501の標準例です。
赤枠が電源ICです。つまり**赤枠以外の部品を選定、配置する必要**があります。
後述する電源ICよりMOSFETなど選定する部品が少ない、つまりそれらがIC内部に内蔵されています。**内蔵されているということは、変更することができません**。
希望より電流定格が小さいから、大きくしようなんてことできないんですね。
![簡単降圧IC.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/1014ad11-ccb8-93a8-e1c5-3cefd7657229.jpeg)
> 今回選定した、自由度が低いが設計にかかる手間が少ない降圧電源IC

<br>

今回は使用していませんが、下図が設計が面倒(失礼)だが自由度が高い電源ICの標準回路例です。
同じく赤枠以外の部品を選定、配置する必要があります。
先ほどのICの場合と違い、スイッチング素子のMOSFETなど**選定しなければならない部品が増えて**います。
ですが、自分で選定できるということは、**好きな電流/電圧定格の部品を選定できる**ということですね。

また、この回路図では分かりにくいのですが、先ほどのICですと、入力電源がIC内部を通るので、そこで過電流保護や過電圧保護機能がついています(全てのICについているとは限りません)が、このICですとそのような機能を持たせることが回路構成的にできないので、必要な場合はヒューズやダイオードを追加する必要があります。
![面倒電源IC.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/6ce19caa-ec33-4cac-07b7-5819d71b70a3.jpeg)

<br>

# 電源ICの選定
電源ICに限らず、私が電子部品を選定する時はいつもDigi-Keyを使用しています。
Digi-Key https://www.digikey.jp/
選定したい部品のジャンル、電流定格、入力電圧定格…などを条件設定すると下図のように一覧で情報が出てきてくれます。
そこから入手性や価格、パッケージなどから良さそうな物を見つけ、データシートも見ていきます。

今回は下記のスペックで電源ICを探しました。
・24V以上の入力電圧に対応している
・5V**5A**以上を出力できる
・過電流保護など安全対策がしっかりしている
ラズベリーパイ５で推奨している5Aまで供給できるICを探しました

また、スペック以外にも下記も基準に探しました。
・設計の手間が少なそうな電源IC
・入手性もそれなりに良さそう(在庫が多い)
・データシートが分かりやすい
・手実装も可能な電源IC

既に紹介しましたが、Diodes社製の「AP64501」を選定しました。詳しくは下記サイトからデータシートをご覧ください。
https://www.mouser.jp/new/diodes-inc/diodes-inc-ap64500-ap64501-converters/?srsltid=AfmBOorLxIFVabb6T7tJwpIhryejgJT2pLtJfJN4Ro9ULTM5ShGuGqjV
Diodes社の製品、スペック高くて安価でデータシートも分かりやすくて大好きなんですよね。誰か共感してくれませんか？


![digikey.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/66349444-f07e-d576-bf35-e4ad437b3fcc.jpeg)
> digi-keyでスペックでソートして電源ICを選定しているイメージ

<br>

# データシートはちゃんと読みましょう
回路図設計前に、データシートをしっかり読みましょう。定格やピンのそれぞれの役割、ICの制御についてなど多くの情報が記載されています。大事な記載を見落として設計をやり直すハメになるかもしれません。
大事だと思う記載はマーキングしておいて、後で設計する時に見直しやすくするのが良いかと思います。
今回は海外の会社のICを選定したため、がっつり英語ですが、英語が苦手な場合はpdfを丸ごと翻訳してくれるようなサイトもあるので、それらを活用しましょう。

![ピン役割.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/d87d67ab-3899-904b-6269-eab85317da38.jpeg)
![色々説明.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/7387bb1e-6944-3409-9f8b-e9b9af6a3a88.jpeg)
> Diodes社製 AP64501 データシート(https://www.diodes.com/assets/Datasheets/AP64501.pdf)

<br>

# 回路図の設計
では、回路図を設計していきます。
とはいえ、今回選定した電源ICはとても親切なので、設計らしいことはあまりしません。
なんと、何の定数の部品を選べばいいか全て記載してあります。この定数の部品を探してくればよいのです。今回は5V出力にしたいので、下図の下から2行目の定数の部品を選定することになります。

ですが、定数が同じであればすべてOKというわけではありません。例えば、L(uH)はインダクタのことですが、インタグタンスが一致していても電流定格が100mAだとすぐに焦げてしまうでしょう。
部品を選定する前に、そもそもバックコンバーターとはどういう理屈で変圧するものなのか、説明できるくらい理解しておくことをオススメします。そうすれば、それぞれの部品がどんな役割で、どの程度の電流/電圧がかかるのかが自然と分かりますので、そういった定格の選定ミスが無くなるでしょう。
(変圧回路について良くわかっていないまま設計したら電源投入した瞬間に煙が出た苦い記憶が蘇る...)
![推奨部品.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/4a9cb3b6-2305-43c2-63aa-edf3dec1251f.jpeg)
> データシート記載の推奨部品

![インダクタ電流定格.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/af8e161a-7422-6148-b71f-87a1d1d44420.jpeg)
> データシートに少なくとも最大電流より35%高い電流定格のインダクタを選定した方がよいと記載されています。

<br>

###### 出力コンデンサの選定
全ての部品の選定について細かく説明するとキリがないので、自分用のメモも兼ねて、出力コンデンサの選定については説明したいと思います。
安直に考えると、データシートの推奨定数の記載通り、22uFのセラミックコンデンサを3つ選定したい所です。
ですが、セラミックコンデンサにはDCバイアス特性という残念な特性があります。下図がその特性の例です。今回ですと5Vが出力コンデンサに印加されますので、このグラフの通りですと約-40%になってしまいます。22uFのコンデンサを使っていると思いきや、実は13.2uFになっているということです。その現象を見越して多めに並列接続する必要があります。

![DCバイアス特性.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/425e03e5-b9af-8506-4e74-0c2ee9f44fbd.jpeg)
> https://www.murata.com/ja-jp/support/faqs/capacitor/ceramiccapacitor/char/0005

では、DCバイアス特性が無いアルミ電解コンデンサにすれば万事解決かとなると、そうでもありません。
アルミ電解コンデンサはセラミックコンデンサと比較すると、ESR、つまり抵抗値が大きいためです。出力コンデンサは変圧中に高速で充放電が繰り返されるため、ESRが大きい電解コンデンサですと発熱が起こり、最悪、コンデンサが定格以上に発熱して破損してしまいます。
今回の場合は、手計算してみると、実効値でおよそ1Aのリップル電流が流れることが分かりました(5V5A出力想定)。大体のアルミ電解コンデンサのリップル定格は数百mAの物が多いですので、オーバーしてしまいます。リップルを分割するため、多めに並列接続する必要があります。

そこで、今回は電解コンデンサなのにESRが小さい、導電性高分子コンデンサ、ルビコン社製の「25PFV100M6.3X8」を選定しました。リップル定格が1.4Aもあります。
セラミックコンデンサ/アルミ電解コンデンサと比較するとコストが高いですが、セラミックコンデンサ/アルミ電解コンデンサですと、DCバイアス特性/リップル定格が原因で複数のコンデンサを並列接続する必要がありますが、この導電性高分子コンデンサなら一つで済みますので、結果安くなりました。

欲を言えば、導電性高分子コンデンサは高周波でのインピーダンスがセラミックコンデンサに比べて高いので、高周波ノイズ低減のためにセラミックコンデンサを追加で並列接続するのが良いでしょう。

![コンデンサの種類と特徴.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/35d73646-583f-f182-8062-ae5f2a0e65de.jpeg)
> パナソニック コンデンサの種類と特徴(https://industrial.panasonic.com/jp/ss/technical/b3)

>(参考)ROHM 降圧コンバータICのコンデンサ計算
>https://fscdn.rohm.com/jp/products/databook/applinote/ic/power/switching_regulator/capacitor_calculation_appli-j.pdf

<br>

# 完成した回路図
完成した電源回路が下図になります。
基本的には電源ICの推奨通りに作成しています。
うっかり入力の電源を逆接続した場合に破損するのを防ぐために、入力部分にダイオードをいれています。2並列にしているのは、入手性が良くかつ希望の電流定格を持つダイオードが無かったため、入手性が良いが電流定格が一つでは不十分なダイオードを２並列にしたためです。

また、47kΩの抵抗を直列にしたり並列にしたり多用していますが、これは部品種類を増やしたく無かったためです。部品点数が増えて実装の手間が増えますが、それよりも部品種類が増えてそれを管理するのが嫌でした。

また、電源ICが機能していることが分かるように、電源ICの5V出力に白色LEDを繋ぎました。

![ミニ回路図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/ae5af18c-74db-11ea-8375-5de0db6a1b90.jpeg)
> 完成した電源周りの回路図
> 回路図全体はらずぱい工房HPで公開しています(https://raspikoubou.theshop.jp/items/93380493)

<br>

# 基板のパターン設計
次に基板のパターン設計です。
なんと、この電源ICのデータシート、パターン設計についても推奨の記載があります。至れり尽くせりですね。
どこの設計に注意すべきか、どんな形で設計すべきかが書いてあります。

一部抜粋しますと、
2, 入力コンデンサを電源ICの近くに設置すること
3, インダクタを電源ICのSWピンにできるだけ近づけて配置すること
4, 出力コンデンサをできるだけGNDに近づけること
7, 放熱のため、GNDにできるだけビアを配置すること
等々、記載してくれています。

![パターンデータシート.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/94cff9f2-e6ea-3d49-002c-a69a6508197c.jpeg)
> Diodes社製 AP64501 データシート(https://www.diodes.com/assets/Datasheets/AP64501.pdf)

<br>

私が設計したパターンが下図になります。
コネクタ等の配置の都合がありますので、データシートの推奨通りの形ではありませんが、推奨通りの設計をしたつもりです。
左にギュッと部品が詰まっていて、右がスカスカなのが寂しいですが、仕方ありません...

![基板パターン図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/97c828d0-1523-df2f-6e2f-a4df6f86d900.jpeg)
> 私が設計したパターン図

<br>

# 完成した基板
完成した基板が下図になります。
やっぱり右側のスカスカが悲しいですね、仕方ないんですが...
では、この基板を使って実際にラズベリーパイ５を起動してみます。
![IMG_1408.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/75e652f1-b126-4815-7fc0-59a6d34fa3f6.jpeg)
> 完成した基板

<br>

# 後悔したこと
ラズベリーパイ５を起動していて気付いたのですが、後悔したことが２点ありました。

### LEDが明るすぎる
下図が電源投入時の写真です。
写真では伝わらないのですが、白色LEDがめっちゃ眩しいです。
ハイビームを切り忘れている対向車くらい眩しいです。近くで見てしまうと残像が残ります。

よくLEDの明るさ設計間違えるんですよね...
LEDのデータシートに明るさのmcd(ミリカンデラ)が載っているのですが、mcdで言われてもパッとしないんですよね...

LEDの電流制限抵抗を300Ωから3kΩに変更したら程よい明るさになりました。

![IMG_1413.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/b5317a08-daff-b931-bac8-143a6a6048c7.jpeg)
> 電源投入時

<br>

### 低電圧リセットの警告が出る。
下図がラズベリーパイ５起動時に出てしまう警告です。
一番下の「この電源は～」の警告は5V5A対応のUSB-PDで起動しない限り出てしまうそうなので、仕方ありません。

![警告.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/f66ed435-56af-5170-a92a-58e799209ffa.jpeg)
> ラズベリーパイ５起動時の警告

ちなみに、ターミナルで
```
sudo rpi-eeprom-config -e
```
とすると出てくる設定ファイルに
```
PSU_MAX_CURRENT=5000
```
と1行追加すればこの警告は非表示にできます。

<br>

問題は、1行目の「低電力イベント～」の方です。
電源投入時の起動時にこの警告が出て、電源投入を継続したままラズベリーパイを再起動すると警告が出ないため、恐らく、突入電流防止のための電源ICのソフトスタートか、出力コンデンサを0Vから5Vに充電するのに時間がかかるため、この警告が出てしまっていると思われます。

なのですが、ターミナルで
```
vcgencmd get_throttled
```
と打つと電源の異常状態を確認できるのですが、
```
throttled=0x0
```
と、正常状態が出力されるんですよね。動作には問題ないのでしょう。

ちなみに、この表示もタスクバーを右クリックすると表示される「プラグインの追加/削除」で「電源」を取り除けば非表示にできます。

<br>

# 目的の電源電圧降下を測定してみた
HAT基板をラズベリーパイ５に接続し、電源端子から24Vを供給してから、記事冒頭でやった方法と同じ方法で電源電圧降下を測定してみました。
まずは、無負荷時です。**4.967V**でした。
5V出力で設計していますが、フィードバック抵抗のばらつきで出力電圧がばらつき、5Vピッタリにはなりません。
![IMG_1415.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/fe2e4c9e-ec46-e49d-ab2d-d35cb57fb43c.jpeg)
> 無負荷時の電源電圧

<br>

次に、CPU負荷100%時の電源電圧です。
**4.953V**でした。
つまり、電圧降下は、4.967V - 4.953V = **0.014V** となりました。
USB-C給電時は**0.104V**でしたので、**約1/10に抑えることができました！**
![IMG_1405.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3909178/40dca49f-00e2-08bb-8079-006313d9be77.jpeg)
> CPU使用率100%時の電源電圧

<br>

# 最後に
長々と記事を書いてしまいましたが、ご覧いただきありがとうございました。
今回設計した基板はらずぱい工房HPで販売しております。興味がありましたらそちらもご覧ください。
https://raspikoubou.theshop.jp/items/93380493