USB充電器から複数の電圧を取り出すモジュールをゼロから自作してみた話

# はじめに
最近はPDに対応するUSB充電器も増えてきました。PDとはUSB-C端子の給電規格です。通常は5Vが給電されますが、PDに対応したデバイスを接続すると給電側と受電側で通信し、電圧を適切に切り替えることで急速充電が可能となります。この規格を利用し、複数の電圧を取り出せるようにするデバイスが今回自作したUSBトリガーモジュールです。USBデコイとも呼ばれます。受電側で降圧、昇圧する必要がなく非常に便利なデバイスですが、国内だとあまり流通していないので自作に挑戦してみました。独学なので至らない点も多々あるかと思いますが、何らかの参考になれば幸いです。
![picture.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/fa0d2dcf-c5ad-1d96-4747-1706126c8f05.jpeg)
# 方針
自作するが故に設計の自由度は高いですが、以下の点を主に重視しました。
* 小型であること
* 安価であること
* 組み立てる手間が少ないこと
# USB Power Delivery
USB-C端子のピン配置は以下の通りです。画像は[**こちら**](https://ja.wikipedia.org/wiki/USB_Type-C)より引用しました。
![usb-c](https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/USB_Type-C_Receptacle_Pinout.svg/560px-USB_Type-C_Receptacle_Pinout.svg.png)
給電側と受電側との通信には表裏の判定などにも利用されているCCラインが流用されます。通信速度は比較的遅いため、差動方式ではなくシングルエンド方式が採用されているようです。
# 設計
プリント基板の設計にはKiCadを利用しました。
## 回路図
WCH製のCH224という受電側コントローラを使います。[**データシート**](https://akizukidenshi.com/goodsaffix/CH224.pdf)に載っている回路図を参考にしました。電圧を設定する方法としては2種類が用意されており、CFG1ピンに抵抗器を接続して設定する方法もありますが、今回はCFG1、CFG2、CFG3ピンの電圧レベルを切り替えて設定する方法です。3回路のDIPスイッチで設定します。要求した電圧と出力電圧が合致するとPGピンはLレベルになるのでLEDが点灯します。出力電圧についてはVBUSピンで監視しています。また、CFG2、CFG3ピンには3.7V以上を入力できないため、電圧レベルはVDDピンと合わせます。VDDピンは内蔵シャントレギュレータによって約3.3Vを維持するからです。
![schematic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/9291f2bd-2cc5-0f1d-99d7-c620db8b0676.jpeg)
## レイアウト
プリント基板に流せる電流は配線幅やビアのサイズ、銅箔の厚さに依存します。[**こちら**](https://ana-dig.com/pattern_width/)に詳しく解説されていたので参考にしました。なお、CH224はeMarkerにも対応しているので最大100Wまで引き出せるみたいですが、そこまで酷使するようなことは想定していません。
![rendering_front.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/0de724b2-d592-8a78-3dd8-23d0ae4069aa.png)
![rendering_back.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/9d6d0f57-9e86-b231-7a80-771c12f45f04.png)
ガーバーファイルは[**こちら**](https://drive.google.com/file/d/1NmbFwuGpMKTuNOyfaPwUR6sm-g-T4Wvj/view?usp=sharing)からダウンロードできます。
## 部品表
後述するように今回はJLCPCBで発注するため、KiCadには専用のプラグインを導入しています。導入方法は[**こちら**](https://nararoboconproject.wordpress.com/2023/06/27/i/)が参考になります。在庫量や価格などがリアルタイムに反映されるため、部品の割り当てがプラグインだけで完結し、非常に効率的です。また、ガーバーファイルに加えてBOMファイルやCPLファイルも同時に出力できるので楽です。
| リファレンス番号 | 型番 | LCSC | 個数 | 価格 |
|:-:|:-:|:-:|:-:|:-:|
| C1 | CL10A105KB8NNNC | C15849 | 5個 | 3.4882円 |
| R3 | 0603WAF1001T5E | C21190 | 5個 | 0.5937円 |
| R2, R4, R5, R6 | 0603WAF1002T5E | C25804 | 20個 | 2.6718円 |
| J1 | GT-USB-7010ASV | C2988369 | 7個 | 76.9938円 |
| D1 | 19-217/BHC-ZL1M2RY/3T | C72041 | 5個 | 12.6911円 |
| U1 | CH224K | C970725 | 5個 | 358.4729円 |

価格は5枚のプリント基板に必要な個数で計算しています。USB-C端子にはU262-161N-4BVC11用のフットプリントを割り当てましたが、なるべく安い部品を探し、同じフットプリントが使えそうなGT-USB-7010ASVを選びました。ピン数は16本です。特に問題なく実装できていたので良かったです。なお、JLCPCBが取り扱う部品はBasic部品とExtended部品との2種類に分類されており、Extended部品を選ぶと1種類当たり3ドルもの手数料が追加されてしまうため、なるべくBasic部品の中から選びつつ、手数料も含めて他と比較していけば安く済みます。今回は残りのチップ抵抗器、DIPスイッチ、端子台を秋月電子通商で購入し、別途はんだ付けしました。
| リファレンス番号 | 型番 | 販売コード | 個数 | 価格 |
|:-:|:-:|:-:|:-:|:-:|
| SW1 | KSD32 | 109992 | 5個 | 400円 |
| J2 | APF-142 | 108367 | 5個 | 100円 |
| R1 | RPS2512F1K | 109461 | 5個 | 35円 |
# 製造
プリント基板の製造にはJLCPCBを利用しました。
## PCBA
CH224Kでは裏面から放熱パッドを兼ねたGNDピンが出ています。手実装は難しそうなのでPCBAを利用しました。折角なのでチップ抵抗器やチップコンデンサ、チップLEDのサイズは1608Mで揃えています。注意点としては部品の向きが設計と異なる場合もあるため、発注時によく確認して修正する必要があります。発注画面から修正できます。基準となる向きがKiCadとJLCPCBとの間で異なることに起因しているみたいです。
## 価格
ほとんどの部品は黒色に揃えたのでレジストも黒色を選びました。実物を見るとマットな感じでした。どの色でも同じ価格です。また、配送業者は`OCS Express`を選びました。送料は約2ドルです。届くまでに10日間くらい待つ必要はありますが、細かく追跡できるので安心です。今回は9ドルのクーポンを適用し、合計で約2200円となりました。発注量は5枚です。
# 実装
チップ抵抗器のはんだ付けに少し苦戦してしまいました。発注してから気が付きましたが、KiCadのフットプリントは部品によって機械実装用と手実装用との2種類が用意されている場合もあるみたいです。手実装用の方は機械実装用よりもランドが大きく、はんだ付けしやすいようになっていますが、これを知らずに機械実装用を選んでいました。はんだ吸い取り線で修正しつつ、なんとか完成しました。
![pcb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/b21cbcc6-9bad-c5e3-0cf9-0f3dc51da1d7.jpeg)
# 動作確認
電圧はDIPスイッチで設定します。プルアップされているため、CFG1、CFG2、CFG3ピンの電圧レベルはオンでLレベル、オフでHレベルとなります。
| 電圧 | CFG1 | CFG2 | CFG3 |
|:-:|:-:|:-:|:-:|
| 5V | H | - | - |
| 9V | L | L | L |
| 12V | L | L | H |
| 15V | L | H | H |
| 20V | L | H | L |

以下の表に測定結果をまとめました。また、設計の途中で赤色LEDから青色LEDに変更したものの、電流制限抵抗器の値だけ変更し忘れていたので修正が必要かと考えていましたが、なんとか点灯しました。
| 電圧 | 測定 | 設定 |
|:-:|:-:|:-:|
| 5V | ![picture_5v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/4be4e16d-4a66-bf3b-ed6e-c21e6772d5f2.jpeg) | ![settings_5v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/5528235a-fbd9-8410-798f-421ae9175bb1.jpeg) |
| 9V | ![picture_9v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/7616abe7-c143-9b26-c06d-750472d9083b.jpeg) | ![settings_9v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/c7327270-a9a6-df1a-2bb2-86c3d62285ab.jpeg) |
| 12V | ![picture_12v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/564facef-5168-ef78-2826-56c09dcfecf2.jpeg) | ![settings_12v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/0ed592ae-fff0-6962-0275-385a6eb0213b.jpeg) |
| 15V | ![picture_15v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/8c482b71-b9b6-52fa-6ea5-7459e7606fe2.jpeg) | ![settings_15v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/7090e3ef-edca-5b79-116c-b77fead78d6c.jpeg) |
| 20V | ![picture_20v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/e02fe482-98c3-1cf3-1cd9-7ed0ca22dfef.jpeg) | ![settings_20v.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/b04b22c2-8876-ba59-1086-a3636c36b2f3.jpeg) |

USB充電器の仕様は以下の通りです。12Vは出力できないため、12Vを要求されても9Vを出力し、PGピンに接続したLEDは点灯していません。挙動としては正しいようです。
![charger.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2951963/1713482e-d1bf-7310-ad4a-a1d2f1d550ab.jpeg)
# おわりに
特に問題なく動いたので良かったです。また、身の周りにあるUSB充電器から様々な電圧を取り出せるようになり、簡単な電子工作では役に立ちそうです。これから活用していきたいと思います。