![見出し画像](https://assets.st-note.com/production/uploads/images/165034588/rectangle_large_type_2_24efcc6e85718d1469859456da15dbb1.jpeg?width=1200)
待機期間に電気を消費しない電源スイッチ:ラッチングリレーで電源入り切り
スイッチを押すと電源がONして何か処理をし終わると自動的に電源がOFFするという電源スイッチがあると便利な場合があります。
例えば、データを記録したいタイミングでスイッチを押すとデータが記録されて電源が切れるようなものとか、スイッチを押すと決まった音声が一回だけ再生されて電源が切れるとか。
ただ、いつ押されるか分からないスイッチを監視するために電気を消費してしまうと、AC100Vから電源を取っている場合は良いですが、電池で動かしている場合には、いざというときに動かないなんてことになってしまいます。
マイコンを低消費モードで動かしたとしても、長期間でみると電気を消費するという点では同様です。待機電力がゼロであればそういったことがありません。
ラッチングリレーを使ってスイッチが押されるまでは電気を消費しない電源スイッチを作ってみました。
ラッチングリレーとは
リレーは電磁石(コイル)に電気を流すと接点(スイッチ)がON(またはOFF)するというものです。ONにしておく間はコイルに電気を流し続ける必要があります。
ラッチングリレーは電磁石(コイル)で接点(スイッチ)がON(またはOFF)するという点では同じですが、永久磁石で接点を保持するようになっているので、コイルには一時的に電気を流すだけで良く、省電力なリレーです。
ラッチングリレーでは、セット用とリセット用の2つの電磁石(コイル)が組み込まれていて、接点をON状態とOFF状態にすることができるようになっています。
回路図
ラッチングリレーを使った電源回路です。
![](https://assets.st-note.com/img/1733708621-zg5tvIEX8S3Ble79xA4LrC6u.png?width=1200)
スイッチを押すとラッチングリレーの片方のコイルに電気が流れることで電源のスイッチが入り、もう片方のコイルに電気を流すと電源のスイッチが切れるようにしたものです。
電源には電池を使い、+5V出力のDC-DCコンバーターの入力をON/OFFしています。
電源OFFは、マイコンなどから制御するために、トランジスタを使ってリレーのコイルを制御できるようにしてあります。一応強制的に手動でもOFFにできるようにスイッチも付けています。
試作
実際に試作した物が下記の写真です。
オレンジのスイッチを押すと電源が入り、赤のスイッチを押すと電源が切れます。
![](https://assets.st-note.com/img/1733706905-Wg8qNsy3nVGeb45aoU2utOzA.jpg?width=1200)
上の電源ラインが入力(電池をつなぐ)、下の電源ラインが+5V出力
主な部品のリストです。
![](https://assets.st-note.com/img/1733730648-2Bv5I6Hg8bYjQGmsuwNcri01.png?width=1200)
ラッチングリレーにはAZ850P2-3というものを使いましたが、接点(スイッチ)が2回路入った物であれば何でも良いです。動作電圧は使用する電池の数によって決めてください。乾電池2~4本であれば3Vのリレーが良いかと思います。
DCDCコンバーターは、電源をつなぐ機材(マイコンなど)によって決めてください。試作ではArduinoにつなぐために秋月電子の5V出力の昇圧タイプのものを使いました。
ダイオードはリレーのコイルのON/OFFによる逆起電力による逆流を防止するための物です。手持ちの1N4148を使いましたが、小信号用のダイオードで大丈夫なの?と気になるようなら1N4001~1N4007など耐圧の高い物を使ってください。
試作した電源スイッチにつなぐテスト用のArduino(秋月電子のAE-ATMEGA328-MINI)の配線図です。後で説明する拡張した電源スイッチで使うためにLEDなどがつないでありますが、ここでは必要ありません。+5V, GND, PW_OFFの3本をつなげば、とりあえず試せます。
![](https://assets.st-note.com/img/1733707690-GXEBVmNRjplfe3U6kM7xrOaw.png?width=1200)
Arduino互換機とつないだ様子です。
オレンジのタクトスイッチを押すと電源が入り、10秒すると電源が切れる動作です。
![](https://assets.st-note.com/img/1733707207-q3fTEyPjvQ59dLs8Kt0poOVN.jpg?width=1200)
ソフトです。電源が入るとPW_OFFの端子をLOWにして、10秒待って、PW_OFF端子をHIGHにしているだけです。
#define PW_OFF 6
void setup() {
pinMode(PW_OFF, OUTPUT);
digitalWrite(PW_OFF, LOW);
delay(10000);
digitalWrite(PW_OFF, HIGH);
}
void loop() {
}
応用回路
スイッチを2つにして、Aボタンを押したらAの処理、Bボタンを押したらBの処理をするようにしてみます。
ラッチングリレーを1つ追加して、どちらのボタンが押されたかを識別できるようにしました。Aボタンならプルアップされ、Bボタンならプルダウンすることで、マイコン側からどちらのボタンが押されたかを識別します。
回路図と試作回路の写真です。
![](https://assets.st-note.com/img/1733708641-eUZ6Rva9OxjtgIPiByEDXA7G.png?width=1200)
![](https://assets.st-note.com/img/1733706917-bVBWf6nyIg7xZsz0tr2PvojD.jpg?width=1200)
Arduinoとは+5V, GND, PW_OFF, SW_SELの4本をつなぎます。
![](https://assets.st-note.com/img/1733707234-0GgEq7B9NWrkP1d6aFoRbIyf.jpg?width=1200)
サンプルのプログラムです。
Aボタンを押すとD3につないだLEDが点滅し、Bボタンを押すとD4につないだLEDが点滅します。10秒すると電源が切れます。
#define PW_OFF 6
#define SW_SEL 5
#define LED_A 3
#define LED_B 4
void setup() {
pinMode(PW_OFF, OUTPUT);
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(SW_SEL, INPUT);
digitalWrite(PW_OFF, LOW);
// start process
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, LOW);
delay(200);
int led = LED_B;
if(digitalRead(SW_SEL) == 1){
led = LED_A;
}
for(int i = 0; i < 10; ++i){
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
// end process
digitalWrite(PW_OFF, HIGH);
}
void loop() {
}
まとめ
人が電源を入れて、回路側が電源を切るという動作をさせたい時に使うための電源スイッチを試作してみました(人が電源を入り切りしたり、回路が電源を入り切りするためのものではないです)。
待機電力がゼロなので、エネループなどの自然放電が少ない電池を使えば、長らく使わずに久々に使ってみたら電池が切れていてガックリといったことが生じないものを作るのに使えるかなと思います。