実験 リレーをON/OFF その1
■リレーは電子工作に便利
マイコンは5Vや3.3Vで利用します。高い電圧の12Vや交流AC100Vは直接扱えません。太陽光発電で使われるパワー・コントローラの中身はDC-DCコンバータが入っており、300V以上の電圧を扱います。制御はマイコンで行っています。高い電圧は、高耐圧のデバイスであるiGBTやMOSFETで制御できますが、その回路にはたくさんの知識と経験が詰まっています。
スピードを要求されないときは、機械的にON/OFFできるリレーを使うのが一般的です。
●市販のリレーにはドライブ回路が入っている
リレー自体は、12Vや5Vの電源をつなぐとコイルに電流が流れ、接点がONもしくはOFFになります。接点にはAC100Vなどをつなげられます。
外観です。
内部の接続です。2種類の接点があります。NCはNormally Closedの省略形で電流を流さない状態でON(導通状態)です。 NOは Normally Openで、電流が流れるとONです。
マイコンで利用しやすいように、5V電源のマイコンでON/OFFできるリレー・モジュールが市販されています。リレー自体は、マイコンとは別電源を利用することを想定しているので、3.3V、5V、12Vなどが販売されています。
●トランジスタでドライブ
ドライブというのは駆動するという意味で使われます。リレーは電磁石ですから、ONするときに電流がわりと多めに流れます。マイコンのI/O端子で流せないぐらい多いです。
ArduinoではI/O端子に20mAぐらいの電流が流せ、それで駆動できるリレーもあるようですが、ラズパイでは5mA程度で、多くのマイコンでも多くて4、5mAです。
例えば、秋月電子通商で購入できる5Vで動作するリレーは、カタログを見ると71mA流れます。したがって、マイコンのI/Oでは直接ドライブできないので、トランジスタを入れて駆動できるようにします。
多くの回路は、次のようになります。ダイオードはコイルから発生した高い電圧を迂回(吸収)させるためにつけています。
●市販品を使う理由
リレーで制御する対象は、数AもしくはAC100Vというった高い電圧や電力を扱います。マイコンは多くても数mAを扱うデバイスです。ブレッドボード上で配線を間違ってもやり直してすむことが多いです。
でも、パワーを扱うとき、配線を間違ったり、配線が利用時に外れたら、多くの部分が破壊されます。
なので、できれば、入力と出力端子を確実に接続できるようになったモジュールを使いましょう。絶対に、ブレッドボード上で、パワーを扱わないでください。
●トランジスタによるドライブ・モジュールのONする電圧
5Vと3.3Vの二通りで測りました。電圧を上げるときにONになる電圧と電圧を下げてOFFになる電圧はわずかに異なりました。
- ONになる電圧:5Vのとき3.6V、3.3Vのとき2.0V
- OFFになる電圧:5Vのとき3.8V、3.3Vのとき2.4V
したがって、5V電源のときは、3.6V以上の信号を出せば、リレーはONになります。OFFにしたいときは3.8V以下にすればよいことがわかります。5V電源のマイコンのI/Oは、Highで約5V、Lowで約0Vですから、確実にON/OFFができます。
リレーを5V電源をつないで、3.3V電源のマイコンを使ったときは、I/Oは3.3V以上にならないので、ONにできません。
このリレー・モジュールには出力がNOとNCの両方があります。電源をつないだ時点で赤色のLEDと緑色のLEDの両方が点灯します。そのときの接点は次のような状態です。
- NO側がON、NC側がOFF
Highの信号を入れてON状態にしたとき、赤色のLEDは点灯のまま、緑色のLEDは消えます。そのときの接点は次のような状態です。
- NO側がOFF、NC側がON
マイコンのI/O端子は、電源が入る前は0V=Lowですが、電源が入った後にLowとHighかどちらかになります。ラズパイのGPIOの様子をこちらで調べました。
Lowになっている端子にこのリレーをつなぐと、マイコンの電源を入れるとLowではリレーをONにする指令なので、NO間がONになります。電源を入れる前は、NOなのでつながっていないOFF状態です。したがって、プログラムを動かす前後でON/OFF状態が変わってしまいます。
●Arduinoで実験
では具体的に実験してみましょう。
目標;電源を入れる前はモータは回っていない。マイコンの電源を入れてもモータは回らない。信号をONしたときだけモータは回る。 |
このとき、信号をONにするというプログラムで、
- 正論理では 低い電圧を高い電圧にすることを指す
- 負論理では、高い電圧を低い電圧にすることを指す
2通りの方法があります。回路図を見て、信号の名前の上にバーが書かれていときや信号名の前に/が書かれている場合は負論理ですが、よく、付け忘れられます。
接続の様子です。モータはこちらの記事で回したマブチモーターです。2Vの外部電源につないでいます。リレーがONになると、モータが回るという設定です。Arduino UNOの5V端子は電流をたくさん流せるので、別電源を用意しませんでした。リレーを複数使うときには電流容量が足りなくなるので、リレー用に別電源を用意します。
Arduino IDE 1.8.1を使っています。Arduino UNOをつなぎ、サンプル・スケッチのBlinkをロードします。LEDの接続しているポートを2に変更します。
モータの電源をONにしても、リレーはNO端子につながっているので、回転しません。
ArduinoにPCからUSBケーブルをつないで、動作する状態にします。モータが回転します!プログラムはまだ動いていません。
プログラムの書き込みが終わりプログラムが動くと、リレーが1秒ごとにカチという音を立て、モータがそれに合わせて回転と停止を繰り返します。回転するときは、緑色のLEDが点灯します。
LOWを出力するところをコメントアウトして、実行します。緑色のLEDは点灯せず、モータも回転しません。
LOWを出力するところのコメントアウトを外し、HIGHを出力する行をコメントアウトして、実行します。緑色のLEDは点灯し、モータはずっと回転します。
したがって、LOWでリレーがONになることがわかります。このリレー・モジュールは負論理で動くことがわかります。
回路は、先に示したものではなく、下記のようになると思われます。アマゾンの商品の説明にも、「低レベル トリガー 」と書かれています。
ディジタル・ピンは0番から13番まであります。電源がつながった直後の電圧を調べました。
ピン番号 | 電圧[V] |
0 | 4.99 |
1 | 4.92 |
2 | 0.xx 変動する |
3 | 0.xx 変動する |
4 | 0.xx 変動する |
5 | 0.xx 変動する |
6 | 0.xx 変動する |
7 | 0.xx 変動する |
8 | 0.xx 変動する |
9 | 0.xx 変動する |
10 | 0.xx 変動する |
11 | 0.xx 変動する |
12 | 0.xx 変動する |
13 | 0.5 |
0、1ピンは電源が入った時点でHigh、2番から13番は電源が入った状態ではLowです。
0、1ピンは電源が入る前はLowなので、モータをどの状態でも回転させないためには、プログラムが動き始める以前はモータの電源をOFFにしておく必要があります。
モータ・モジュールが正論理で動作するのであれば、2から13番ピンをつないで制御するときには、モータの電源は最初から入れた状態でもモータが勝手に回ることはないです。したがって、当初の目標は達せられませんでした。