11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【電子工作 / 自作基板】4ポートのハブ機能が付いたUSB電源保護ボード『4Port USB Power Toggle』の製作!

USBの電源ラインをスイッチ操作により手動でON/OFFしたり、過電流や短絡、過熱を監視しそれらが検出されると強制的に電源ラインを遮断することが出来る自作基板『USB Power Toggle』を先日製作しました。

マイコンやセンサーといったものの初期化の際にUSBケーブルを抜き差しすることなく手元のスイッチ操作で電源のON/OFFが行えるので便利です。

また短絡や過電流を検知すると強制的に電源ラインを遮断することも出来るので、例えば自作基板製作でパーツ実装後の短絡チェックを行う際にも便利に使えます。

上記ボードが電子工作用途で便利に使えたことからいくつか作ったのですが、複数のポートを同時に制御出来るものもあれば便利かな?
ということで、これをベースにしてハブ機能を持たせ同様に複数ポートの電源ラインをそれぞれ手動操作したり、各ポートを個別で監視し過電流等が発生した場合にそのポートのみ強制的に遮断することが出来るボードも製作してみました。

4ポートのハブ機能が付いたUSB電源保護ボード『4Port USB Power Toggle』の製作!

以前製作した単ポートバージョンのUSB電源保護ボード(USB Power Toggle)は、 USB電源ライン保護用のUSBスイッチICとしてCH217Kを使い、それをATtiny202で制御するという構成で製作しました。

【電子工作 / 自作基板】CH217Kを使ったUSB電源保護ボード『USB Power Toggle』の製作!

CH217Kは秋月電子さんでも入手することが出来る安価で便利なUSBスイッチICだったので、今回の4ポートに拡張したボードでも使用することにしました。

【電子工作】USB電源ライン保護のスイッチIC『CH217K』を使ってみる!

そしてハブ機能を持たせるために、CH334やCH335といったハブコントローラー用のチップをいくつか使い試作回路を組みテストしてみたのですが、チップの入手性やシンプルな回路構成でUSBハブ機能が使えるSL2.1Aという4ポートUSBハブコントローラーチップを組み合わせて製作することにしました。

【電子工作 / 自作基板】4ポートUSBハブコントローラーチップSL2.1Aを使ったブレークアウトボードの製作!

全体の構成としては、各ポート(デバイス側)にそれぞれCH217Kを設置し独立させて電源ラインを監視、そしてCH217KのFLAGピンの状態をマイコンで読み取り過電流や短絡といった異常を検知した際にそのポートの電源を強制的に遮断(CH217KのENピンをHIGH)するといったものとなります。

これらを制御するためのマイコンは必要なGPIOピンの数などからいくつか候補があったのですが、ホスト側のUSB端子から制御用のプログラムを直接書き込めるようにUSB機能が付いたCH552Tを使うことにしました。

CADのイメージ & サイズ確認

ブレッドボードでの動作テストでは問題なさそうだったので、これを回路に起こしボードのイメージやサイズを決めました。

おそらく製作後電子工作用途で常用しようと思っているので、極力シンプルな形状、そして使いやすいサイズ感になるように3D CADでボードサイズやスイッチの位置を考え、3Dプリンタで何度か試作をしてボード形状やサイズ、配置などを決めました。

3Dプリンタでの試作段階でメイン基板単体での使用ではおそらく使いにくそうだったので、PCB製のトッププレートを付けることにしました。

メイン基板とトッププレートの間にM3×5mmスペーサーを挟み全体の厚みを約8mmとし、各ポート操作用のタクトスイッチはそれに合う高さのものを使う予定です。

基板設計の際にサイズは微調整する必要があるかもしれませんが、薄くてコンパクトなボードとなり使い勝手も良さそうなサイズ感のものになりそうです。
このイメージで基板設計に移りました!

回路構成

各ポートに対応したスイッチを押すことにより個別でそのポートの電源をON/OFFしたり、またスイッチを長押しすることにより全ポートをONまたはOFFに出来るようなプログラムをCH552Tに書き込み動作させる予定です。

また各ダウンストリームポート側にはそれぞれCH217Kを配置し個別で電源管理を行い、電源ラインの状態異常(過電流/短絡/過熱)を検知するとCH552Tがそのポートだけ強制的に電源を遮断するようにします。

これにUSBのデータラインにハブチップとなるSL2.1Aを組み合わせたシンプルな構成となりました
こちらが全体の回路構成です。

そして想定している上記動作をさせるための制御プログラムをCH552Tに書き込む必要があるのですが、セルフプログラムさせる際のUSBデータラインをどのように接続しようか?

ホスト側のデータライン(D+ / D-)を通常使用時にはハブチップSL2.1A側に接続し、セルフプログラミングの際はCH552T側に接続するというものをスイッチ切り替えで考えていたのですが、スイッチ自体の抵抗値(インピーダンス)の問題からジャンパーパッドを使うことにしました。

通常使用時とセルフプログラミング時とではんだでパッドの短絡位置を変える必要があり少し面倒なんですが、一度制御用のプログラムを書き込んでしまえばセルフプログラミングモードにすることはほぼ無いと思うので問題ないかなと。(電子的に切り替える方法も考えていたのですが・・・)

あと各デバイス側Type-C端子のCCピンは56kΩでプルアップさせておいた方がいいのかな?

・・・など、今後の検証なども兼ねて今回製作したボードはV1.0としています。

注意
趣味で製作している素人設計、そしてUSBの電源を扱う基板のため自己判断で参考にして頂ければと思います!

基板設計

3Dプリンタでの試作で使いやすいサイズ感としてボードサイズは80mm×45mmを想定して基板設計に移りました。

上記回路構成では問題なくこの基板サイズ内にパーツを収めることが出来ました。

ただ、使用する容量&サイズの電解コンデンサの高さが約5.5mmあることからトッププレートとの間に挟むスペーサーは想定していたものから1mm増やした6mmとし、全体の厚みを9.2mmにすることにしました。

トッププレートを付けても厚みを10mm以内に収めることが出来たので、全体的にコンパクト感が増すかと思います。
これに合わせタクトスイッチは10mm高のものを使うことにしました。

最終的にメイン基板とトッププレートはこのようになりました。

JLCPCBに基板を発注

基板の発注はJLCPCBを使いました。

このサイズの基板であれば面付けしても料金的にほぼ変わらないので、メイン基板とトッププレートは個別基板としています。
個別基板として発注した方がカット面も綺麗に仕上がり、送料を入れても10ドルかからないと思います。

基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
興味ある方は製作してみて下さい。

JLCPCBに発注する際の選択項目は特記すべきところはありませんが、余計なシルク文字がプリントされるのを避けるために[PCB上のマーク]は[マーク除去]を指定しておくのがいいと思います。(無料オプションです)
[PCBカラー]はお好みで選択して下さい。

メイン基板とトッププレート、そして配送方法にOCS NEPを選択すればトータル10ドルほどで製作することが出来ます。

そしてパーツの実装方法にもよりますが、私はリフローによる実装を予定していたのでメイン基板の方はステンシルも一緒に発注しました。

はんだ付けにある程度慣れた方であれば手はんだでの実装も十分可能なパーツ構成となっていますが、ヒートガンやリフローによる実装環境があるならステンシルを使うと作業効率が良く綺麗に実装することが出来ます。

ステンシルも一緒に発注する場合、下にある[PCBと一緒に発注する]を選択します。
JLCPCBのステンシルは、サイズを指定しないと結構大きなサイズで届いてしまい実装の際に面倒となるのでサイズを指定しておいた方がいいと思います。
ボードサイズが80mm×45mmなので、100mm×100mmにサイズを指定して発注しました。(サイズ指定は無料で出来ます)

MEMO
ステンシルも一緒に発注する場合、ステンシル料金7ドルのオプション料金がかかります。
また大きさ(重量)の関係で配送方法にOCS NEPを利用することが出来ないので、配送料金も少し高くなります。(OCS Express推奨)

JLCPCBの基本的な基板発注方法やステンシルの発注方法に関してはこちらの記事で詳しくまとめています。
あわせて見て頂ければと思います。

【電子工作】はじめての基板製作!JLCPCBさんに基板を発注してみました。ユーザー登録・データ納品・基板到着までの一連の流れをご紹介!
【JLCPCB】初めてステンシルを使ったリフローを行ってみました。JLCPCBでステンシルを発注する手順などを紹介!

パーツの実装

配送方法にOCS Expressを選択し、発注から8日ほどで手元に基板が届きました。
ステンシルも一緒に発注するとお安い配送方法のOCS NEPが選択出来ないのは残念なのですが、それでも他社に比べると圧倒的にお安く配送も非常に早いので毎回助かっています。

それではパーツの実装です。
ステンシルを使いはんだペーストを塗布します。

はんだペーストはどのようなものを使われているの?
というお問い合わせをこれまで何度か頂いた事があるのでリンクを貼っておきます。

ステンシルを使い基板のパッド部分にはんだペーストを塗布する際は、ある程度粘性がある(硬いと表現するのかな?)ものを使うのが私はやりやすいと思います。
柔らかすぎるとパッド部分から垂れてしまいリフロー後のブリッジにつながりやすい印象です。

これまでいくつか試してみましたが、最近はこちらのものを定期的に購入して使っています。
共晶はんだと呼ばれるもので、錫(Sn)と鉛(Pb)の合金で構成されたはんだです。
融点が低く(183℃)、一般的によく使われているものだと思います

また、はんだペーストをのばすヘラはこちらを使っています。

綺麗にはんだペーストを塗布しパーツを乗せることが出来ました。

パーツの実装はMHP50というミニリフロー装置を使いました。
いつも自作基板の製作で愛用している非常に便利なリフロー装置です。

【電子工作 / PCB】ミニリフロー装置『Miniware MHP50』を使ってみる!加熱性能や安全設計はMHP30から全て引き継がれ使い勝手がさらに向上した便利なリフロー装置です

MHP50のホットプレートサイズ(50mm×50mm)を超える基板のリフローには、このようなスタンドを製作しておくとさらに大きな基板サイズにも対応することが出来るので便利です!

【電子工作 / PCB】Miniware MHP50で使えるスタンドの製作。大きな基板やいろんなリフロー方法に対応出来るので便利ですよ!

パーツの実装が完了したら次に制御用プログラムの書き込みを行いますが、通電の際に電源ラインの短絡があると怖いので短絡チェックをしておきます。

これまでテスター等を使い電源ラインの短絡チェックを行っていましたが、単ポートタイプのUSB電源保護ボードを使ってチェックしました。
今回製作しているものは、これの4ポートバージョンとなります。

通電ランプ(緑)が点灯しているので電源ラインの短絡は無さそうです!
便利ですね!

制御プログラムの書き込み

パーツの実装に問題がなければ最後にプログラムの書き込みです。
書き込む制御用プログラムはこちらからダウンロードして下さい。

プログラムを書き込む際は、本基板のジャンパーパッド[SELF PROG]の2ヶ所を[SELF]側にはんだで短絡させておいて下さい。

ここからArduino IDE経由でプログラムを書き込みます。
CH552Tへの書き込み方法は、こちらの記事で詳しく解説しているのであわせて見て頂ければと思います。

【電子工作】CH552をArduino環境で使ってみる!

ch55xduino ボードパッケージのインストール

CH55xチップへの書き込みには、[ch55xduino]ボードパッケージのインストールが必要となります。
Arduino IDEでCH55xチップを使う環境構築をされたことがない方は、以下手順を参考に進めて下さい!

まずArduino IDEの[基本設定]を開き、[追加のボードマネージャのURL]を開きます。

以下URLを貼り付けて下さい。

貼り付けるURL
https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json

次に[ボードマネージャ]を開き”ch55x”で検索すると必要なボードパッケージ[CH55xDuino MCS51 plain C core(non-C++)]が見つかります。
これをインストールします。

インストールが完了すると、[ツール]→[ボード]の項目に[CH55xDuino MCS51 plain C core(non-C++)]が追加されます。
今回CH552Tに書き込みを行うので[CH552 Board]を選択して書き込むことになります。

プログラムの書き込み

ボードパッケージのインストールが完了したら上記ダウンロードした制御用プログラムを書き込みます。
書き込みの設定はこのようにしておいて下さい。

それでは書き込みです。

ホスト側のUSB端子にケーブルを接続しPCと繋げます。
CH552Tは初めてプログラムを書き込む際にはDFUモードで起動するので、Arduino IDEの[書き込み]をクリックすればプログラムを書き込むことが出来ます。
[書き込み完了]と表示されれば完了です。

MEMO
書き込みに失敗する場合は、手動でCH552TをDFUモードで立ち上げ同様に書き込みを行ってみて下さい!
ボードの[DFU]スイッチを押した状態でUSBケーブルを差し込み電源を投入するとDFUモードで立ち上がります。

書き込みが成功したら、2ヶ所のジャンパーパッドを[RUN]側に短絡すれば完成です!

動作確認

最後に動作確認です。
ホスト側のポートをPCに接続します。
初期状態では全てのポートはOFFになるようにしています。

スイッチを押し対応したポートに通電されるとLEDが点灯します。(もう一度押すとOFFとなり消灯します)
また任意のスイッチを長押しすると全てのポートが通電しLEDが点灯または全てのポートがOFFになります。

以上を確認出来れば動作確認は完了です。
トッププレートを付けて完成です。

立ち上がりでCH552Tが再起動を繰り返す!?

こちらは余談なんですが・・・
実装後の動作テストでCH552Tが電源投入時の立ち上がりで再起動を繰り返すトラブルがありました。

どうやら4ポートを同時に開放すると各ポートに接続されたコンデンサに一斉に充電されるため大きな突入電流が発生し、ホスト側にも保護で入れているCH217Kが全体の電源ラインを遮断してしまいCH552Tが再起動を繰り返してしまうのが原因でした。

これはソフトウェア側で各ポートの立ち上がりに遅延(デバウンス処理)を入れて解決することが出来ました。

MEMO
上記ダウンロードデータ(制御用プログラム)は修正済みのものです!

使用パーツ一覧

今回使用したパーツの一覧です。

パーツ定数入手先
コンデンサ(0603)C1/C2 100nF
C3/C4/C7/C8 100μF
C5/C6/C9/C10 10μF
AliExpress
抵抗(0603)R1/R2/R9/R10 56kΩ
R3/R4 5.1kΩ
R5/R7/R8/R11/R12 1kΩ
R6 10kΩ
R13 30kΩ
AliExpress
LED(0603)LED1/LED2/LED3/LED4/LED5AliExpress
USB端子J1/J2/J3/J4/J5 Type-C端子AliExpress / 秋月電子
タクトスイッチ(SMD)SW1/SW2/SW3/SW4 6mm×6mm×(H)10mmAliExpress
SW5/SW6 3mm×4mm(4P)AliExpress
ICチップU1/U2/U3/U4/U7 CH217K(SOT23-6)AliExpress / 秋月電子
U5 CH552T(TSSOP20)AliExpress / 秋月電子
U6 SL2.1A(SOP-16)AliExpress / aitendo
U8 USBLC6-2SC6(SOT23-6)AliExpress
クリスタル(3225)Y1 12MHz(3225)AliExpress / 秋月電子
ビス&スペーサーM2×4mm(6本)
M2×6mmスペーサー(4本)
ーーー
MEMO
抵抗R1/R2/R9/R10は各ポートのCH217Kに電流制限を設定するための抵抗です。
抵抗値は56kΩとし1.0Aとしています。
同様にR13はホスト側のCH217Kに電流制限を設定する抵抗となり、抵抗値を30kΩとして全体に流れるトータルを2.0Aで制限しています。
電流制限のしきい値を変更したい場合は、データシートを参考に抵抗値を変更して下さい!

最後に!

趣味で作った素人レベルの回路設計ではありますが、想定していたものを製作することが出来ました。

電子工作ではマイコンを扱ったものを使うことが多いのですが、DFUモードで起動するなど特定の用途でUSBケーブルの抜き差しが必要になることも多いことから、手動で電源ラインのON/OFFが出来るこのようなボードがあると便利だと思います。
最近始めた自作キーボード製作でファームウェアの書き込みの際にも便利に使えています。

また短絡チェッカーとしても使えるので、自作基板製作でも役立っています。
何かの参考になればと思います・・・。

コメントを残す