MENU

High-Speed対応の小型USB切替器を作ってみた

f:id:moutakusan:20210825230907p:plain:w400



最近はテレワークでの仕事が多くなり、家のデスクトップ環境の隣に会社のノートPCを置いて仕事をしております。
そうなると、家のPCで使っているキーボードを会社のノートPCにもつないで使いたくなるわけですが、意外と面倒なのがUSBの差し替えです。
一回一回は大した作業ではないのですが、毎回となると結構なストレスなんですよね。
これを何とかしようということで、今回はUSB切替器を自作してみることにしました。

この記事ではUSB切替器の制作過程を順を追って紹介します。

お知らせ

こちらの記事で紹介している基板は製品化して、スイッチサイエンスで頒布しています。

www.switch-science.com

興味を持っていただいた方はご覧ください。


では本編です。

こんな感じの仕様で作ります

今回は2入力1出力のUSB切替器を作ろうと思います。
PCからの入力が2ポート、デバイス側への出力が1ポートついていて、スイッチでUSBデバイスの接続先PCを切り替えられるようなイメージです。

f:id:moutakusan:20210813161316p:plain
USB切替器イメージ

出力側はせっかくならUSBハブが使えると便利なので、USB2.0 High Speed(480Mbps)の信号を通せることを目指します。
USB2.0って中々に高速なので、適当なスイッチや配線じゃダメだったりするんですよね。なので、USB切替専用のICを使うことにしました。

あと何気に考える必要があるのは、デバイス側への電源供給をどうするかです。
PCを切り替えるたびに、電源供給元も切り替えた側のPCに一緒に切り替えるのが自然な動作だと思うので、そのようにします。
こういう動作をさせるときに怖いのは電流の逆流です。ちゃんと回路を組まないと、片方のPCからもう一方のPCに電流が逆流したりするので危険です。

市販の機器でも電流が逆流してくるものがごくたまにあるので、機器を選ぶ際は気をつけましょう。

回路図を描いてみます

USB切替器の全体回路図はこういう感じにしました。

f:id:moutakusan:20210825224426p:plain
USB切替器回路図
pdfもあります↓
https://drive.google.com/file/d/1PDiqCJw0ZSpBnHbXeTuMrltwRQDd_-Q_/view?usp=sharing

次からはブロックごとに説明していきます。

USB信号切替回路

回路図左上のUSB信号切替回路の説明です。

f:id:moutakusan:20210813164351p:plain
USB信号切替回路

左側のJ101,J102がPC側のUSBポート、右側のJ103がデバイス側USBポートで、IC103がUSB信号切り替え用のICです。

ここでは、IC103はUSB2.0に対応した専用IC(TS3USB30E)を使用しています。
下図はデータシートからの引用で、左上がICを通してないとき、右上がICの一方のパスを、下がICのもう一方のパスを通した時のUSBの信号波形です。
(どっちがどっちのパスかはよくわかりません…。それぞれNC=Normally Close, NO=Normally Openとは記載ありますが、NormallyがHighとLowのどっちを指してるのか不明なので。)

f:id:moutakusan:20210813170016p:plain
USBの信号波形

いずれのパスを通った時でも、USB信号がほとんど劣化してないことがわかると思います。
なので、このICを使ってうまく設計してやればUSB2.0対応は行けるはずです。

回路図の上のほうに書いてあるSEL_Nは、物理スイッチSW101につながっています。
ユーザーが物理スイッチを切り替えるとIC103が連動して信号の接続を切り替えてくれるようになっています。

3.3V出力のリニアレギュレーター回路

回路図右上は3.3V出力のリニアレギュレーター回路です。

f:id:moutakusan:20210813221234p:plain
3.3V出力リニアレギュレーター回路

PCから供給される5Vから、IC103(USBスイッチIC)の電源を作っています。
IC103が高速信号扱ってるし、一応きれいな電源いるのかなぁということで、リニアレギュレーターを使いました。

USB電源切り替え回路

回路図左下はUSB電源切り替え回路です。

f:id:moutakusan:20210813221438p:plain
USB電源切り替え回路

PCから供給される電源が物理スイッチSW101に連動して切り替わるようになっています。
物理スイッチにはトグルスイッチを使いました。かっこいいので。

ここの回路の動作の説明は長くなるので、別の記事で紹介できたらなと思います。
LTSpiceを用いたシミュレーションにて動作も確認したので、それも一緒に紹介できたらいいな。

ということで、ここでは簡単な説明だけ。
それぞれのPCからの供給電源に対してPch-MOSFETが二個ずつ入っており、物理スイッチを介してFETをLowに引っ張ることで供給元の電源ラインが出力側に導通します。
トグルスイッチの構造上、上側の二つのFETと下側の二つのFETが同時にLowに引っ張られることはなく、二つの電源ラインは排他動作をします。

ちなみに、1ライン当たりFETを1個じゃなくて2個使用してるのは逆流防止のためです。
Pch-MOSFETはドレイン→ソースの中に寄生ダイオードがあり、電流は流れてしまいます。
今回のように電源ラインを2つくっつけてスイッチングする場合は、一方の電源から他方の電源へドレイン→ソース間を通っての逆流を防ぐために、ソースを背中合わせにしてFETを2つ配置します。

f:id:moutakusan:20210813230525p:plain
逆流防止のためにFETは2個配置
さらにFETはLowに引っ張られてないときは常にHighで固定したいので、抵抗を介してソース側の電源ラインにプルアップします。
その抵抗を介して電源が逆流したら困るのでダイオードも配置してあります。
 

回路の説明は以上です。

アートワークを描いてみます

今回は専用基板を起こすためにアートワークを描きます。
で、描いたアートワークがこちらです。

f:id:moutakusan:20210816224305p:plain
USB切替器アートワーク (表面)

f:id:moutakusan:20210816224357p:plain
USB切替器アートワーク (裏面)

基板を3Dビューアで見るとこんな感じです。

f:id:moutakusan:20210816225449p:plain
3Dビュー (表面)

手前の灰色の箱二つがUSB Type-B (PC側)、奥の箱がUSB Type-A(デバイス側)、左側の箱がトグルスイッチです。
PC側のUSBポート二つとトグルスイッチの両サイドにはそれぞれシルクで名前が書いてあって、トグルスイッチで倒した方のUSBポートが有効になるような感じで描きました。

机の上において使うときに邪魔にならないように、サイズは5cm x 5cmと、かなり小型にしました。

裏面はこんな感じ。

f:id:moutakusan:20210816230042p:plain
3Dビュー (裏面)

USBコネクタの足からUSBスイッチIC(IC101)のラインが太くなっているとこはポイントの一つです。
ここはUSBの信号線(D+/D-)で、差動インピーダンスをUSBの規格値である90ohmに近づけるようにラインを引いています。
インピーダンスの計算はこちらのサイトを使いました。

インピーダンス計算 - 基板クイック試作 - PCBWay

基板の製作と部品実装、そして完成!

今回はFusionPCBで基板を製作しました。

www.fusionpcb.jp

FusionPCBへの基板の発注方法については、また別の記事で紹介できたらと思います。

発注してからおよそ二週間で基板が手元に届きました。
それがこちらです。

f:id:moutakusan:20210825225354p:plain
きれいな青色の基板が届きました

青色の基板にしました。
きれいな青色です。

今回は4枚に面付けしました。
割るとこんな感じです。

f:id:moutakusan:20210825225758p:plain
USB切替器の生基板

5cm x 5cmしかないので、実際に触ってみるとめちゃくちゃ小さいです。

早速、部品を基板に実装しました。

f:id:moutakusan:20210826213034p:plain
表面
f:id:moutakusan:20210826213112p:plain
裏面

全部手ではんだ付けしたんですが、部品が小さくて難易度が高く、全部つけるのに1時間くらいかかりました。
USB切り替え用のIC(TS3USB30E)のピンなんて0.5mmピッチでしたからね。
かなり大変でした。

[追記]その後の成長↓

最後に周辺の4つの穴にスペーサーをつけて完成です!

f:id:moutakusan:20210825230815p:plain

f:id:moutakusan:20210825230907p:plain

作業机に置くとこんな感じ。 f:id:moutakusan:20210825231013p:plain

いい感じです!

お次は肝心の動作確認です。

動作確認してみます

キーボードをつないで動作確認

まずは、キーボードをつないでデスクトップPCとノートPCを切り替えられるか確認しました。
その様子がこちらです。

f:id:moutakusan:20210825234740g:plain
USB切替器にキーボードを接続して動作確認

ちゃんとトグルスイッチを切り替えることで、キーボードの接続先のPCを変えることができました!

キータイプ時の遅延というのも一切感じないです。
USB切替用のICには、信号の切替のみを行うパッシブタイプと信号を一度受けて叩き直すリドライバタイプがありますが、今回使用しているICは前者のため、より遅延が少ないっていうのもあるかもしれないです。
というか、パッシブタイプの場合は切り替えのみなので遅延は0のはずです。

HDDをつないで動作確認

今回はUSB2.0 High-Speed信号を通せるUSB切替器の自作を目指しました。
USB2.0が達成できているかの確認のために、外付けUSB HDDをUSB切替器あり/なしでPCに接続したときの通信速度の変化を調査しました。
通信速度の測定にはCrystalDiskMarkを使用しました。

crystalmark.info

その結果がこちらです。
f:id:moutakusan:20210826221341p:plain USB切替器あり/なしともに通信速度は約40MB/s(=320Mbps)出ており、USB2.0High-Speedで通信を行っていそうです。
ということで、USB2.0 High Speedモードでの通信が達成できていました!

スイッチサイエンスマーケットプレイスに委託

スイッチサイエンスには同人ハードウェアを委託頒布してくれるマーケットプレイスという仕組みがあります。
今回作ったUSB切替器も委託頒布してもらうことにしました。
方法は簡単で、まずはこちらのページを参考にメールを送るだけでOKです。
あとは担当者とやり取りしながら進めていくと、こういう風に製品ページを作ってくれて委託頒布してもらえるようになりました。
www.switch-science.com
これで私も同人作家の仲間入りです。

おわりに

今回はUSB2.0 High Speed対応の小型USB切替器を作りました。
自分で回路から設計したものが、基板になって、さらに実際に動いてというのはすごく感動しますね。
今回作ったUSB切替器はかなり実用的で、まだ使い始めて数日ですが、すでに手放せない予感です。

長い記事を最後までお読みいただきありがとうございました。
読んでくれた人の参考になってくれればうれしいです。

今回はこれで終わります。



おしまい。