今どきのモバイル機器は、電源をON/OFFするとき特定のスイッチを長押しすることが多い(気がする)。 身近にあるところだと、例えばモバイルルータやガラケーは長押しで電源ON/OFFである。
スマホやiPadも、長押しで直接OFFではないが、長押しがOFFの動作に紐付いている。
このように、ある種今どきのモバイル機器は長押しが電源ON/OFFの動作につながっている。
趣味の電子工作でモバイルデバイスを作る際も、電池・バッテリによる電源供給をON/OFFするために何らかのスイッチを設けるのが普通である。私は昔はよくスライドスイッチなどで物理的にON/OFFしていたが、こだわりはじめると段々と実際の製品のように長押しでON/OFFしたくなってくる。
今回は、そんなスイッチ長押しで電源をON/OFFする(ように見える)(可能な限り最小構成の)回路について述べる。 ※電源回路の先にはマイコンがある前提。今回はPICを想定する。
「ように見える」と書いたのは、長押しで実際に電源供給がON/OFFするわけではなく、マイコンを利用してインジケータを長押しでON/OFFして、「あたかも長押しでON/OFFしたように見える」回路だからである。以降省略して「ON/OFFする」と書く。
この回路を使うと以下のような長押しON/OFFができる。
ペンに付けて、ただタップ数を数えてくれるデバイスが完成したぞ! pic.twitter.com/LwsdW3kIy6
— 水田かなめ (@kmizta) May 25, 2019
これは「ペンに付けてただタップ数を数えてくれるデバイス」だが、中身はさておきタクトスイッチの長押しで電源がON/OFFする(ように見える)。
この回路はできるだけ最小構成で組んだつもりだが、「もっとここ省略できる」などあれば是非教えて欲しい。
スイッチ長押し 電源ON/OFF回路
結論から言うと、以下のような回路でスイッチ1つの長押しで回路全体の電源供給をON/OFFできる。
図中の、FETの型番や抵抗値はあくまで例である。この回路はモバイル機器に使うことを想定しているため、この電源回路自体の消費電力をできるだけ下げるため、大きめの抵抗値を使っている。
また、FETやトランジスタ、いずれも秋月電子で入手できるものを選んでいる。マイコンの接続ピンはGPIOならどこでも良い。
動作説明
ユーザが長押しする物理的なスイッチは回路図中のSWである。そして、回路全体をON/OFFする電気的なスイッチがQ1のPchFETである。
例えば、LEDやディスプレイなどのインジケータが接続された回路なら、一定時間長押ししたらインジケータが付き、一定時間長押ししたらインジケータが消灯するのが理想だろう。この回路はそれを実現する。
以下に順序立てて動作を説明する。
(以下、H:電源電圧、L:GND電圧を示す。また、図中の赤線は電圧Hレベル、青線は電圧Lレベル、黒矢印は電流を示す)
電源OFF→ON
(SW押す前)Q1ゲートはHのため、Q1はOFF。電源は供給されていない。
①ユーザがSWを押す
②SWを介してQ2のゲートがHになり、Q2が導通する。
③Q2が導通することでQ1のゲートがLになり、実は一旦ここで回路としてはONになる。
「え?押した瞬間ONになっちゃってるじゃん?」という意見はもっともだが、この時点ではインジケータは(マイコンが)OFFにしているため、ユーザは「電源OFF」と認識している。
④マイコンは、電源ONしたらすぐに12ピン(RC1)をL出力に初期化する。よってT1はOFF状態。マイコンはその状態で一定時間何もせず待つ。
⑤一定時間後もマイコンの電源が入ったまま(ユーザがSWを押したまま)であれば、12ピンをHにする。よってはT1はON状態。
⑥T1がONしたことによりT1も介してQ1のゲートはLになる。ここでLEDやディスプレイといったインジケータを動作開始する。ユーザは電源ONを認識する。
⑦ユーザがSWを離しても、T1がONのためQ1ゲートはLとなり、Q1はON状態。回路に電源が供給される。
ポイントは、④⑤でマイコンが一定時間何もせず待つことである。
SWを押してから一定時間経つまではマイコンは何も動作を開始しないため、ユーザから見ると、あたかも一定時間長押ししたら電源がONしたように見える、というわけである。
もしユーザが長押しでなく、ちょっと押しただけでSWを離すと、Q2がOFFになり、またT1もマイコンによりOFF状態のため、Q1ゲートはHになり、結果としてQ1はOFF、回路全体の電源供給はOFFになる。
電源ON→OFF
さて、晴れて電源がONできたら次はOFFである。全体の電気的スイッチであるQ1はT1によりON状態になっているため、正しく長押しを検知できれば、T1をOFFしてやることで回路全体をOFFすることができる。
そこで使うのがR3である。
電源ON→OFF時の動作は以下の通り。
①SWを押していない時、R3がつながっている11ピン(入力ピン)はR1を介してLレベルである。
②ユーザがSWを押すと、11ピンはHになる。同時にQ2がONになるが、もともとT1を介してQ1がONしているので関係ない。
③11ピンのHレベルを検知したら、マイコンは一定時間12ピン(T1)をHのまま待つ。
④一定時間後も11ピンがHのままだったら、LEDやディスプレイなどのインジケータをOFFする。ユーザは電源OFFを「認識」する。同時に12ピンをLにする。T1がOFFになる。(実際にはまだQ2がONのため、電源供給は続いている)
⑥ユーザはインジケータのOFFを見て、SWを離す。Q2ゲートはLになり、Q2はOFFになるため、Q1ゲートはHになり、Q1がOFFする。結果として回路全体の電源供給はOFFする。
ここでも同様にポイントは③④でマイコンが一定時間何もせずに待つことであり、一定時間経ってインジケータをOFFすることであたかも長押しで電源OFFしたかのように見える。
もし、ユーザが長押しでなく、短時間でSWを離した場合は、12ピンはHのまま、すなわちT1はONのままなので電源供給は続く。
これで、長押しによる電源OFFが実現した。
この回路を実際に使ってみる
この回路は、長押しの長さをマイコンで設定できるので、ユーザの好きな長押し時間が作れる。ちょっと便利。
また、手に入れやすい部品で思いつく限り最小構成で組んでいるため、チップ部品を使えばかなり電源回路を小さく作れる。
最初に示した動画を再掲するが、上の回路を入れており長押しで電源ON/OFFする。(このペンについてはいずれ記事にしたい)
ペンに付けて、ただタップ数を数えてくれるデバイスが完成したぞ! pic.twitter.com/LwsdW3kIy6
— 水田かなめ (@kmizta) May 25, 2019
スイッチ長押しでON/OFFできると、なんか「それっぽい」感じがする。
世の中のモバイル機器も同じような回路を組んでいるんだろうか??