1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

USB切断スイッチ

1
Last updated at Posted at 2026-04-27

UIAPduino Pro Micro CH32V003 V1.4 にプログラムを書き込むには、公式ページで説明されている次の操作で行います。

リセットボタンを押しながらボードをPCのUSBポートへ接続し、リセットボタンをすぐに離します。ボードは書き込みを待機します。

『ボードをPCのUSBポートへ接続し』の部分を、USBスイッチOFFONで代用できると考えていたが、何度やっても「書き込みモード」に移行してくれない。
このUSBスイッチVBUSだけをOFF/ONしていると思われ、D+/D-信号はつながったままであることが原因ではないかと推測した。

それを確認すべく、VBUSおよびD+/D-を切断できる USBスイッチ を、次の3通り設計した。

USB切断スイッチの設計

左のUSBが入力側、右のUSBが出力側。中央が切断機構。いずれもマイコンは未使用。

  1. 小型リレー方式
    オムロン製小型リレー(2回路C接点)941H-2C-5D を 2つ使った方式
    ・ リレーの駆動は押しボタンスイッチで行う
    ・ リレーの電源はUSBバスパワーを利用(することは問題なし)
    small-rellay-version.png
  2. 4PDTスイッチ方式
    物理スイッチ方式は、部品点数が少なく済み回路は簡単ではあるが、4PDTスイッチは種類が少なく、高価な物が多い。例えば、
    TE Connectivity製(4回路C接点スライドスイッチ)ASE4204は上記小型リレーの10個分より値段が高い。
    slide-switch-version.png
    ALPSALPINE製SSSU042100ならリレー3個分程度のようだが、入手性が悪い。
  3. 半導体スイッチ方式
    物理スイッチを半導体スイッチに置き換えた方式。USBのD+/D-を切り替えるICは、いくつか存在する。ただし、VBUSの切り替えまではできないため、CH217を併用してVBUSの切断を行う。半導体方式はPCBをスマートに仕上げることができるが、反面、周辺の抵抗やコンデンサを多く必要とし、部品点数が増え 価格面で最安にならない。
    solid-switch.png

USB切断スイッチの製作

上記3方式で 一番安価な 小型リレー方式を、72mm x 47mm のユニバーサル基板に実装した。

回路図2.png
  • 入出力のUSBソケットは、タイプCに加えてタイプAも並列に接続(使用できるのは、どちらか一方のみ)
  • 上図はおもてから見た配線図であるが、一部は裏面で配線
  • リレーのサイズに誤りがあり、上図は8x4穴分であるが、実際は8x3穴分
  • 実装の都合上、下側リレーの電源の向きを逆にした
  • 抵抗内蔵LEDを使用することで、外付けの制限抵抗を省略した
  • 出力側USB-CのGND横の印は、入力VBUSラインにかかっているので、手前で配線を切断することを意味する

検証結果

このUSBスイッチは VBUSだけをOFF/ONしていると思われ、D+/D-信号はつながったままであることが原因ではないかと推測した。

1. USBスイッチ

テスターを使って、ON/OFF状態を調べた結果、下表の通りであった。
凡例 ○:接続、×:切断

信号 ON状態 OFF状態
VBUS ×
GND × 想定外
D+
D-

2. 本USBスイッチを使ったUIAPduinoの書き込みモードへの移行

手持ちに53KΩ抵抗が無かったので、51KΩと2KΩ抵抗を直列に接続して代用した。

rellay.pngrellay.png

問題なく、『書き込みモードへの移行』できました。狙い通りです。

・ 考察

当初は、D+/D-信号とGND間の電位により、マイコンにわずかでも電流が流れていることが原因と考えていた。

しかし、冒頭のUSBスイッチがGNDも切断している事実を考えると、D+/D-信号間の電位が原因ということになる。

今回作成した USBスイッチは、GND以外の VBUS/D+/D- を切断するため、マイコンには一切の電流が流れない。このため、『USBポートから抜いた』状態が再現できている結果、問題なく『書き込みモードへの移行』できたということだろう。

・ 結論

もし、前項の『考察』が外れていたとしても、『書き込みモードへの移行』ができているので、結果的に問題はない。

リセットボタンを押しながらボードをPCのUSBポートへ接続し、リセットボタンをすぐに離します。ボードは書き込みを待機します。

この USBスイッチは、手に握って指でスライドスイッチを操作する必要があり、これと、UIAPduinoのリセットボタンを押す操作を同時に行うことは、考えているほど簡単ではない。(UIAPduinoのリセットボタンが『押しにくいタイプ』のタクトスイッチであることも一因。)

一方、今回作成した USBスイッチは、作業机に置いた状態で タクトスイッチを押す操作で行うため、UIAPduinoのリセットボタンを押す操作と同時に行うことが簡単になった。


自分は、作業机にあるUSBハブを使用しており、USBケーブルをUSBハブに挿す操作を行うときは、USBハブを支えていないと動いてしまってケーブルを挿すことができない。これと同時にUIAPduinoのリセットボタンを押す操作を行うことは、至難の業であった。
(左手で USBハブを支えながらUSBケーブルを挿す操作を行い、右手でUIAPduinoを支えながらリセットボタンを押す操作を行っている。)

今回作成した USBスイッチは 支える必要はなく、タクトスイッチをまっすぐ押し込むだけのため、『書き込みモードへの移行』が楽に行えることが、最大のメリットである。

注意事項

本USBスイッチは USB 1.0 / 1.1 / 2.0 のみ使用できます。




以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?