Lチカアルティメット-6 RaspberryPiの電源を切る話。
RaspberryPiを使っていると、そのうち気づくこと
RaspberryPiを使ってると、、気づくことがありますよね。
そう、
電源のON-OFFボタンとか無い
わけです。
そして、基本的には、Micro-USB OR TypeCでの給電になるので、、
まぁ、シャットダウンして、しばらくたってUSBを抜けばいいんだけれども、、
なんか、
美しくない
ですよね。
でも、、無線LANで連携したり、GPIOで制御したり、、、、
みたいなことができるわけですから、、
なんとかしたいところです。っていうか、、なんとかできますよね。きっと。
Lチカから段々派生していきますね(o^^o)
シャットダウンのタイミングはどうやってとるのか!?
なんらかソフトウェア的にでもハードウェア的にでも、シャットダウンが終了したタイミング、
即ち、電源を切っても(給電を中止しても)よいタイミングをどうやってとるかという話です。
実は、RaspberryPiには最初から、そのような設定ができるようになっています。
答えを書くと、
/book/config.txtに以下のような記述することによって、とることができます。
dtoverlay=gpio-poweroff,gpiopin=26,active_low=0
この例では、シャットダウン終了後に、 GPIOの26番をHIGHにするものです。
ということは、この、HIGH状態、即ち0V➡3.3Vのタイミングで電源を切るようにすればよいってことになります。
とは言うものの、どうやってRaspberryPiの電源を切るのか?(o^^o)
ここでよく考えてみましょう。
USBで給電している電源をSTOPさせることは、USBを抜かない限り無理わけですよね。
ということは、
給電そのもの(電源ONのこと)からコントロールしなければならない
ということになります。
それでは、設計というか、仕組みを考えましょう。
電源ON~ ~ ~ shutdwon ~ ~ 電源STOP、のしくみ
こんな感じです。
① 謎の”装置”にACアダプタ(5V)をつなぎます。そう、5V-3Aくらいのやつがよいですね。
② 謎の”装置” の電源をONにします。
③ RaspberryPiに5Vが給電されます。
~ ~ ~ あれやこれや ~ ~ ~
④ 何らかの方法でRaspberryPiをShutdownします。
⑤ GPIOを通して、謎の”装置”に3.3V送られます
⑥ 謎の装置が、RaspberryPiへの給電をSTOPします。
これを見てわかることがいくつかありますね。
ざっと、以下のような感じです。
その1:後から電源が切れるようにするからには、電源のON-OFFは、物理的なスイッチではなく、トランジスタ等で行う
その2:給電をSTOPさせるのも、GPIOの3.3Vによって実現するからには、このスイッチもトランジスタ等で行う。
その3:ON状態からOFFにもっていくためには、いわゆる、【自己保持回路】みたいなものが必要になる。
※必要になるっていうか、それが全てだね^^;^^;
その4:5V-3Aをスイッチングするので、省電力のトランジスタ1コでは無理なので、複数のトランジスタをつかうことになる。
その5:給電はUSBコネクタではなく、GPIOの2番を使う(GNDも使うね^^V)
自己保持回路って何?
自己保持回路は、何種類も考えられますが、その一例の原理を書いてみましょ。
原理なので、抵抗とか描いてません。
●負荷(図の”ふか”)に電気が通じるには、T1の【e】から【c】へ流れなければならない
➡ T1の 【e】から【c】 へ流れるには、T1の 【e】から【B】へ流れなければならない
➡ T1の 【e】から【B】 へ流れるには、SW1を押して、T1の【B】をGNDへつなげなければならない。
ということで、SW1を押せば、めでたく負荷に電流を流すことができます。
でも、このままでは(T2が無ければ)SW1を離すと、電流が途切れますよ。
そこで、謎の迂回路が登場です。
●SW1を押して負荷に電流が流れるようになれば、迂回路を通して、
T1の【c】⇒T2の【B】 ⇒ T2の【e】 ⇒ GND
と電流が流れるようになり、T2の【c】 ⇒ 【e】へ電流が流れるようになる
➡ T2の【c】 ⇒ 【e】へ電流が流れれば、SW1が離されても、
T1の【B】⇒のT2の【c】⇒T2の【e】⇒GND
と電流がながれるため、T1の【e】⇒【c】が流れつづけ、負荷に電流を供給しつづけることができる!(o^^o)
とまぁ、こんな感じで。
実際にどうやってつくるかは、、次回へ!
#Lチカ
#Lチカアルティメット
#電子工作
#RaspberryPi
#Arduino
#2SK4017
# RaspberryPi 電源OFF