【電子工作】USBデバイスの保護回路設計覚え書き

昨今、格安PCB製造サービスの普及でプリント基板製作の難易度が大幅に下がり、電子工作趣味人のレベルアップに大きく寄与するようになった。クレカ払いで基板サイズ 100x100mm以内かつ 5枚までなら、送料コミ $2.98 という[PCB製造サービス](https://jlcpcb.jp)もある。いくら円高でも配送目安10日、500円以内で済むのは結構衝撃だ。国内部品通販サイトでも配送料500円は普通に取られるので、ブレッドボードやユニバーサル基板を通販で買うより、専門業者でプリント基板を作ってしまった方が安上がりなのである。一般家庭では廃棄処理困難な有害薬剤に塗れてエッチング作業したり、リューターで銅箔を削ったりするより専門業者任せの方が環境負荷にだって優しい。

オリジナルのプリント基板を容易に作れるようになると、ブレッドボードやユニバーサル基板で泣かされがちだった特殊コネクタ類の実装が、特に恩恵を受けることに気付く。従来数十〜数百円していたピッチ変換基板の調達や煩雑な配線が不要になるし、高周波部品の安定性も増すので、これだけでも格安PCB製造サービスを使う価値がある。

身近で使用頻度が高い特殊コネクタといえば USB接続周辺が代表的だ。電子回路への電源供給や、シリアル通信路の確保にも USB接続は欠かせない。出来合いの USB変換基板を盛り付けるの手軽だが、CH340N のような実売数十円で少ピン少部品のICなら、回路全体を工作するのも難しくない。表面実装部品とはいえハンダゴテが当たらない理不尽な形状でもないため、最近の電子工作ではかなり難易度が低い方だ。

そういうわけで、ここでは USB Type-C コネクタと CH340N（USB-シリアル変換IC）での例をあげて USB接続回路まわりはどう設計したら良いかを語る。

## 1. ほとんど直結

![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201392/afbc577c-2186-9eb4-f9b9-03b28fa32eed.png)

一番単純な回路図では _Figure.1_ のようになる。USBコネクタの VBUS端子と GND端子は、そのまま電子回路への給電（5V±5%）と、信号接地（ゼロ基準電位）に使われる。

USB Type-Cコネクタでかつ USB 2.0 規格準拠の場合、0.5mmピッチで12本の表面実装端子と、4本の基板固定ピンが生えたパーツが一般的だ。外観は多少違えど多数のメーカーから同一フットプリントの製品が並行発売されている。

> 稀に普通ではないピン配列や、異種サイズのものが存在するので設計前に使用部材のデータシートはよく確認しよう。なお USB3.0用コネクタは基板設計も手ハンダ作業も難易度が高い上、そもそも電子工作趣味に適した（手ハンダ作業ができるような）対応デバイスが少ないので手を出す価値に乏しい。潔く USB 2.0 で妥協すべきだ。

表面実装USBコネクタの手ハンダ付けは、コツを掴めばそう難しくはない。基板側パッド面に軽く置きハンダをしておき、一度冷まして新しいフラックスを塗り、C型やD型チップかつ適正温度のハンダゴテでフラックスが活性化する数秒間、端子先端（リード切断面）に触れていればすんなり繋がる。

CC1/CC2端子は、5.1kΩ抵抗を介して GNDに繋ぐ。これは __USB Power Delivery__ (USB PD) 規格から要請されるもので、5V/0.5A〜3.0Aの電力給電を許可する。これがないと正しく電力給電されない ACアダプタ、モバイルバッテリー、ホストPCや USBハブが存在するため必須である。

もう一つ忘れてならないのは、VBUSと VCC間のヒューズ（ポリスイッチ）だ。これは接続機器自体の保護目的よりもむしろ、プラグイン時の突入電流を緩和してホスト側機器に過大な容量負荷を掛けないために必要なものだ。USB 2.0 規格では __バスパワー機器が VBUS に直結して良い容量性負荷は最大 10uF__ （50uC以下）と規定されている。それ以上の負荷やコンデンサを直接 VBUS に繋ぐのは、ホスト側機器に不可逆的な故障を招く可能性が高くなる。だが 10uF という値は決して十分なものではない。一般的なワンボードマイコンは 33uF以上の電解コンデンサ複数を当たり前に積んでいるし、サーボ搭載機器や WiFi無線デバイスなどは数百uFの容量負荷を普通に持っているが、これとの接続を許すには VBUSの入口に適切な抵抗成分を挿入して、突入電流を制限目標（5V/100mA/10uF/100ms）に収めるべきだ。

選択するポリスイッチの定格値は、実際に使用する電力値の2倍を目安にする。USB PDを考えないなら 5V/0.5A が想定される最大電力なので、6V/1A 辺りを選ぶことになる。これは平時は数十〜数百mΩの抵抗値だが、短絡などで設定値（絶対定格の半分程度）を超える電力が流れると発熱により抵抗値が高まって通過する電力を下げようとする。普通の溶断ヒューズだとそれで切れて要交換になってしまうが、ポリスイッチは平熱に戻れば導通が回復するので、頻繁に短絡させる可能性のある電子工作目的では、ポリスイッチを選ぶのが好適だ。

> ポリスイッチが手元にない場合、33uFの負荷が繋がる想定なら 1.0〜4.7Ω/2W程度のカーボン抵抗で代用できなくもないが、当然ながら無価値な電圧降下が発生するし、安全性にもあまり寄与しないのでおすすめはしない。

## 2. 信号接地とシールド接地を分離する

![Figure_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201392/0d3632b4-f9d5-7a3c-172a-27253bdf7dfe.png)


_Figure.1_ の回路設計は単純すぎて、静電気故障対策が全くない。最初に考えるべきは剥き出しのコネクタや信号端子に人体が触れた時の影響だ。人体は 1MΩの負荷と、1F の容量を持つ回路に相当するといわれている。これは数千Vに達する電力を静電気として蓄えるには十分だ。現代の MOSFET技術を中心とした電子回路は絶対定格を超える電圧が掛かると瞬時に絶縁被膜（原子数個分の厚さしかない）が破壊されるので、人体が触れることによる電子回路を故障から守るためにも、そして人体が感電することを避けるためにも、静電気／短絡電流を安全に逃す「アース」を設ける必要がある。

USBコネクタのハウジング金属部は、GND信号線とは直結していない。同様によほど粗悪でない限り一般的なUSBケーブルなら、GND信号線と編組シールドは直結しておらず電気的にそれぞれ別の開回路になっている。これを安易に 信号接地（GND）と直結して閉じてしまうのは人体との接触に無防備だ。そこで _Figure.2_ では、1MΩの抵抗と、4700pF のセラミックコンデンサをシールド接地と信号接地間に並列挿入するよう修正している。簡易な保護回路だが、オームの法則に従って数千Vの静電気を電流と熱に変換するには十分役立つ。この回路例は ATMEL AVR関連の公式文書で言及されているほか、近年の Arduino製品での採用例が見られる。（UNOを含む過去の製品には実装されていなかった）

- [Atmel AVR1017: XMEGA - USB Hardware Design Recommendations](https://ww1.microchip.com/downloads/en/Appnotes/doc8388.pdf)

シールド接地と信号接地はこのアース保護（ESI）で、一点接続されるのが理想だ。USBケーブルの他方端は開放であるのが望ましいが、短絡していても、同様の保護回路が挿入されていても、実害は一方か双方にアース保護が入っていれば軽減される。両端のどちらもが短絡している場合が最悪で、グラウンドループ閉回路を形成することになる。その場合大電力家電＝電子レンジ／洗濯機／冷蔵庫／エアコン室外機の近くに置いたりすると、過剰な電磁波による漏洩電力をまともに信号接地が拾ってしまう可能性が生じる。これは粗悪なUSBハブを用いた場合に顕在化しやすい。

> 金属筐体に収める基板の外周メッキやマウントホールと信号接地との間にもこのアース保護は応用できる。

その他、USB差動データ線対には、30Ω相当のフェライトビーズを挿入した例を示している。通常の厚膜抵抗器で代用するなら 22Ωを使うのが一般的だ。ただし、CH34xシリーズの場合は同等の終端抵抗を内蔵しているので必ずしも必須ではない。一方で FTDIの各シリーズには終端抵抗が内蔵されていないので、最低限、22Ω抵抗器を挿入するようデータシートで言及されている。

> 差動データ線対のインピーダンスは相互90Ω、GNDに対して45Ωなので、IC内部損失を加味した終端抵抗値はこの値が目標になる。

## 3. TVSダイオードを追加する

![Figure_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201392/461c4394-f63e-8045-64f4-0edd1222a7bb.png)

_Figure.3_ は、USBデータ線に対して USBデバイス機器専用の TVSダイオードを挿入する修正を施した例だ。__USBLC6-2SC6__ という SOT-23-6型パッケージの小さな6端子部品は、複数のメーカーから同等品が供給されており、廉価なこともあって多数の製品で実際に（STM Nucleoシリーズなどで）使われている定番部品だ。内部には _Figure.3.1_ で示すように4個のショットキー＝バリアダイオードとひとつのツェナーダイオードが封入されており、USBデータ線ペアへの過電圧／逆電圧を VBUS に逃すことができる他、VBUSへの過電圧／逆電圧にも一括して対処できる。

![Figure_3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201392/31b8062e-7093-a13d-b335-4a91becc787c.png)

このようなTVSダイオードを採用する場合はデータ線へのフェライトビーズや抵抗器の挿入は（インピーダンス整合目的を除けば）必須ではない。オームの法則で直接過電圧を減衰するわけではないからだ。一方で VBUS/GND に逃がされた過電圧を熱として消費するために、接続先に注意を払う。VBUS側はポリスイッチの（受電側）後方に、GND側は信号接地ではなくシールド接地（SG）に繋ぐのである。_Figure.2_ で追加した 1MΩ抵抗がホスト側／デバイス側どちらの電源短絡でも（ツェナーダイオードを介した）熱消費素子として働くことに注意されたい。ケーブルを伝ってくる高周波／電磁波ノイズについてもまた、4700pFコンデンサとポリスイッチを介して減衰される。

## 配線パターン

この記事では（長くなってしまうので）プリント基板上での具体的なアートワークについてまでは言及しない。__USBコネクタから IC までの配線長が 30mm以内なら、__ 思ったより雑なアートワークでも実用上の障害は発生しないからだ。それにこれ以上長く配線を引き回して問題が生じた場合、高価な専用測定機器がなければ性能／障害解析も覚束なくなるし、基板設計にも等長配線やマイクロストリップラインの概念を持ち込まなければならなくなって敷居が上がってしまう。とにかくコネクタからICまでのデータ配線長をできるだけ短く、ビアで基板裏に回したりせず一方だけで直結にするのであれば（そもそも配線が間違ってなければ）特に問題を起こさずに使えるはずだ。

> USBコネクタのハウジングと基板が触れる面には、配線パターンを引いてはいけない。薄いレジスト被膜を隔てただけでシールド接地と隣接するためだ。やむなくパターンを引く場合はベタシルクも重ねるのが多少マシである。

USB 2.0 の 480Mhz信号は、波長で言えば 624mm（光速÷4億8千万）だ。等長配線の経路差については 0.25%精度が目標＝1.5mm以内でなければならない。普通の両面基板での貫通ビアはひとつに付き 1.6mm長増加なので、差動データ線対それぞれの経過ビア数が異なると容易に経路差が 0.25%精度を逸脱してしまう。

> 差動データ線対は、1.6mm両面基板で裏面全面GND、特性インピーダンス90Ωのマイクロストリップラインとして設計した場合、線幅1.3mm、線間ギャップ0.17mm、周囲ベタGNDとのギャップは2.6mm以上が近似値となる。しかしコネクタや表面実装ICの端子や間隔はこれよりずっと小さいので、この設計を持ち込むと不釣り合いな配線レイアウトになってしまう。経路長30mm（波長の5%）程度以内だったら無視してしまう方が実際的だ。周囲ギャップが線幅の2〜3倍あれば足りると割り切るのが良い。

## Copyright and Contact

Twitter(X): [@askn37](https://twitter.com/askn37) \
BlueSky Social: [@multix.jp](https://bsky.app/profile/multix.jp) \
GitHub: [https://github.com/askn37/](https://github.com/askn37/) \
Product: [https://askn37.github.io/](https://askn37.github.io/)

Copyright (c) askn (K.Sato) multix.jp \
Released under the MIT license \
[https://opensource.org/licenses/mit-license.php](https://opensource.org/licenses/mit-license.php) \
[https://www.oshwa.org/](https://www.oshwa.org/)