今から始める電子工作 Step2 ⑥ I/Oポートからリレーを駆動 その5 複数個のリレーを駆動
Arduino UNO R4 WiFi で複数個のリレーを駆動し、3W LEDを点滅させます。
●環境
- Arduino IDE;2.3.4
- Windows11;24H2
- Arduino UNO R4 WiFi
●使用するリレー
市販品のリレー・ボードを利用します。
リレーモジュール 5v (アマゾン)
1回路用と2回路用を利用します。1回路用はトランジスタで駆動していて、2回路用はフォトカプラ+トランジスタのようです。動作を確認します。
Vcc-GND端子に5Vを印加します。
<1回路> GND-IN端子に下記の電圧を印加しました。2.5V以下だとリレーがカチっとなりました。負論理のようです。
IN [V] | ON/OFF |
---|---|
0.1 | ON |
0.5 | ON |
1.0 | ON |
2.0 | ON |
3.0 | OFF |
4.0 | OFF |
5.0 | OFF |
<2回路> GND-IN1もしくIN2端子に下記の電圧を印加しました。0.6V以下だとリレーがカチっとなりました。負論理のようです。
IN [V] | ON/OFF |
---|---|
0.1 | ON |
0.5 | ON |
1.0 | OFF |
2.0 | OFF |
3.0 | OFF |
4.0 | OFF |
5.0 | OFF |
どちらのリレーも負論理で、確実にONするには0.5V以下の電圧で制御するのが良いようです。
けれど、
今から始める電子工作 Step2 ① I/Oポートの状態と消費電流
で検証したように、どのI/Oポートも、電源が入った直後デフォルトではLowでした。したがって、これらのリレーをつないで、マイコン・ボードに電源を入れたら、リレーはONになってしまいます。多くの場合、不都合です。
リレー用電源をマイコンとは別系統にしておき、マイコン側で、I/OをHighにした後、リレーの電源を入れるという手順を踏めば、このまま利用できますが、煩雑です。
●マイコン・ボードが動き始めたとき、リレーがONにならないようにする
マイコンのI/O出力がLowのとき、リレーはONになります。マイコンのI/Oとリレーの間に、論理を反転する回路を入れることを考えます。
<トランジスタを1個>
下記の記事で、「LED+電流制限抵抗」の負荷を、抵抗負荷に変更して実験します。
今から始める電子工作 Step2 ③ I/Oポートからリレーを駆動 その2 2SC1815
負荷抵抗R3は、470Ω、1k、4.7kの3種類を試します。Vccは4.99Vです。
<R3=470Ω>
ベース電圧[V] | ベース電流[uA] | コレクタ電流[mA] | コレクタ電圧[V] |
---|---|---|---|
0.1 | 5.0 | 15.3u | 4.99 |
0.50 | 24.4 | 15.3u | 4.99 |
1.0 | 50.3 | 19.5u | 4.99 |
2.0 | 131.7 | 10.25 | 0.146 |
3.0 | 235.6 | 10.4 | 0.075 |
4.0 | 333.8 | 10.44 | 0.056 |
5.0 | 429.3 | 10.46 | 0.046 |
<R3=1kΩ>
ベース電圧[V] | ベース電流[uA] | コレクタ電流[mA] | コレクタ電圧[V] |
---|---|---|---|
0.1 | 6.15 | 15.3u | 4.98 |
0.50 | 25.4 | 15.3u | 4.98 |
1.0 | 50.7 | 20.0u | 4.97 |
2.0 | 132.9 | 4.95 | 0.08 |
3.0 | 231.4 | 4.99 | 0.045 |
4.0 | 329.5 | 5.00 | 0.032 |
5.0 | 431.9 | 5.014 | 0.025 |
<R3=4.7kΩ>
ベース電圧[V] | ベース電流[uA] | コレクタ電流[mA] | コレクタ電圧[V] |
---|---|---|---|
0.1 | 0.009 | 15.1u | 4.93 |
0.50 | 0.042 | 21.0u | 4.90 |
1.0 | 37.1 | 1.028 | 0.046 |
2.0 | 136.4 | 1.034 | 0.016 |
3.0 | 237.0 | 1.035 | 0.010 |
4.0 | 330.7 | 1.036 | 0.006 |
5.0 | 429.2 | 1.037 | 0.006 |
反転回路として利用するとき、ベースの電圧が2Vを超えれば、どの負荷抵抗でも確実に動作しています。違いは、コレクタ電流です。できれば、1k~4.7kが良いように思えます。
<MOSFETを1個>
負荷抵抗R3は、470Ω、1k、4.7kの3種類を試します。
<R3=470Ω>
ゲート電圧[V] | ゲート電流[uA] | ドレイン電流[mA] | ドレイン電圧[V] |
---|---|---|---|
0.1 | 2.5 | 15.4u | 4.99 |
0.50 | 10.7 | 15.4u | 4.99 |
1.0 | 20.9 | 15.4u | 4.99 |
2.0 | 43.1 | 10.4 | 0.079 |
3.0 | 63.1 | 10.5 | 0.018 |
4.0 | 83.7 | 10.5 | 0.013 |
5.0 | 106.5 | 10.5 | 0.012 |
<R3=1kΩ>
ゲート電圧[V] | ゲート電流[uA] | ドレイン電流[mA] | ドレイン電圧[V] |
---|---|---|---|
0.1 | 2.0 | 15.3u | 4.98 |
0.50 | 1.0 | 15.3u | 4.96 |
1.0 | 21.6 | 15.4u | 4.98 |
2.0 | 42.9 | 5.00 | 0.034 |
3.0 | 63.6 | 5.03 | 0.008 |
4.0 | 85.3 | 5.04 | 0.006 |
5.0 | 107.0 | 5.04 | 0.005 |
<R3=4.7kΩ>
ゲート電圧[V] | ゲート電流[uA] | ドレイン電流[mA] | ドレイン電圧[V] |
---|---|---|---|
2.1 | 2.1 | 15.2u | 4.93 |
0.50 | 10.3 | 15.2u | 4.93 |
1.0 | 21.1 | 15.2u | 4.93 |
2.0 | 44.3 | 1.04 | 0.005 |
3.0 | 66.0 | 1.04 | 0.001 |
4.0 | 84.6 | 1.04 | 0.001 |
5.0 | 104.4 | 1.04 | 0.001 |
反転回路として利用するとき、ベースの電圧が2Vを超えれば、どの負荷抵抗でも確実に動作しています。違いは、ドレイン電流です。できれば、1k~4.7kが良いように思えます。
R3=4.7kΩのまま、ドレインに市販の1回路のリレーをつなぎ、動作を確認します。
ゲートに3.5Vを印加すると、リレーからカチッと音が鳴りました。この市販リレー・ボードは、電源をつなぐと赤色LEDが点灯し、Lowの信号がINに入ると緑色LEDが点灯します。
<ロジックICの74HC04(TopView)>
74HC04を利用します。このICは反転回路が6個入っています。実験は1-2端子で行いました。
14番ピンのVccと7番ピンのGND間には5Vの電源を供給しました。
D12電圧[V] | リレー-IN電圧[V] |
---|---|
0.1 | 4.99 |
0.50 | 4.99 |
1.0 | 4.99 |
2.0 | 4.99 |
3.0 | 0.016 |
4.0 | 0.000 |
5.0 | 0.000 |
3V前後で、出力が反転するようです。
●マイコンとの接続
1回路用を二つ、2回路用のリレー・ボードを一つ用意して、Arduino UNO R4 WiFi のD12、D11、D10、D9をつなぎます。
●3WのLEDを点灯
1W LEDの時は5V電源を利用しましたが、電流制限用抵抗が5Ωと大変低い値になってしまいました。ここでは12Vもしくは15Vを利用します。
3W LEDは600mA流れると書かれていました。順方向電圧は3.3Vとして計算します。
- 電源が12Vのとき; R=(12-3.3)/0.6=14.5Ω
- 電源が15Vのとき; R=(15-3.3)/0.6=19.5Ω
電力は(12-3.3)*0.6=5.2Wなので、余裕を見て15Ω 10Wのセメント抵抗を使います。
●ドライブ回路
74HC04を使います。
●スケッチ
四つのLEDを3秒ずつ点灯と消灯を繰り返すスケッチです。
大きな問題が起こりました。コンパイル&アップロード中にLEDが異常に光るのです。なので、開発中はLED用の12V電源は、動作が始まってから入れるようにします。
void setup() { pinMode(12, OUTPUT); pinMode(11, OUTPUT); pinMode(10, OUTPUT); pinMode(9, OUTPUT); digitalWrite(12,LOW); digitalWrite(11,LOW); digitalWrite(10,LOW); digitalWrite(9,LOW); } void loop() { digitalWrite(12,HIGH); delay(3000); digitalWrite(12,LOW); delay(3000); digitalWrite(11,HIGH); delay(3000); digitalWrite(11,LOW); delay(3000); digitalWrite(10,HIGH); delay(3000); digitalWrite(10,LOW); delay(3000); digitalWrite(9,HIGH); delay(3000); digitalWrite(9,LOW); delay(3000); }
スケッチが完成し、一度、USBケーブルを抜きます。12VのLED電源をONにし、USBケーブルを指すと、0.5秒程度、1回路用のリレーがバタバタとON/OFFを繰り返し、すぐに正常なスケッチの動作に移りました。
どうも、CPUの初期化によってI/Oのレベルが複数回変化しているようです。短時間にすぐにLowに設定されるように思えます。2回路用のリレー・ボードはフォトカプラが入っているので、急激な入力のON/OFFに追随しなかったのかもしれません。
したがって、LED用12V電源は、マイコンの電源が入ったときはOFFに、その後、ONにするような運用をしなければならないですね。
●電源が入った直後のI/Oポートの波形を観測
D11の波形です。青色がD11ポートの出力、赤色が70HC04を通した後の波形です。このポートは2回路(フォトカプラ)のリレー・ボードの入力につながっています。
断続的に高速のON/OFFが一定時間観測されました。しかし、リレーを反転させるだけの論理レベルフォトカプラを超えてはいません。もしかしたら、このオシロスコープでは見れないほどの細いパルスが出ているのかもしれません。
D9波形です。青色がD9ポートの出力、赤色が70HC04を通した後の波形です。このポートは1回路のリレー・ボードの入力につながっています。
100kΩ-33uFのローパス・フィルタをつなげました。
立ち上がりの波形はなまっています。立ち上がり時に青色のLEDは光りませんでした。
D10波形です。青色がD10ポートの出力、赤色が70HC04を通した後の波形です。このポートは1回路のリレー・ボードの入力につながっています。
100kΩ-33uFのローパス・フィルタをつなげました。
立ち上がりの波形はなまっています。立ち上がり時に青色のLEDは光りませんでした。
●四つのI/Oポートにローパスフィルタを入れる
波形にほとんど変化はなかったのですが、変なリレーのバタつく状態は抑えられていました。四つのポートにローパス・フィルタを入れて、前記のスケッチを動かしました。
電源を投入した後、なにも特別な音や光の発生はなく、スケッチ通りにLEDは点滅を繰り返しました。