レッスン52-1:基本コード:Arduinoを使用してリレーでDCモーターを制御する
このレッスンでは、2つのリレーとArduinoを使用してDCモーターの方向を制御する方法を学びます。モーターに供給される電圧の極性を変えることで、その方向を逆転させることができます。このプロジェクトは簡単で、Arduinoによるリレー制御を理解したい初心者に最適です。追加の洞察やデモンストレーションについては、動画(00:00の動画)を必ずご覧ください。
このチュートリアルでは、2つのリレーを使用してモーターへの電源の極性を切り替えます。1つのリレーがアクティブになると、電流が一方向に流れ、モーターがその方向に回転します。もう1つのリレーがアクティブになると、電流の流れが逆転し、モーターが反対方向に回転します。リレーはArduinoによって制御されるスイッチの役割を果たします。
ハードウェアの説明
このプロジェクトの主要なコンポーネントには、Arduinoボード、2つのリレー、DCモーター、および電源が含まれます。Arduinoボードは操作の頭脳であり、モーターの方向を制御するためにリレーに信号を送ります。各リレーには3つの端子があります:共通(COM)、通常閉じ(NC)、および通常開(NO)です。起動されると、リレーはCOM端子をNCまたはNO端子のいずれかに接続し、回路を効果的に切り替えます。
上の画像は、モーターの配線をバッテリーに接続する方法を示しており、モーターはたとえば反時計回り(CCW)に回転します。
上の画像は、+ と - の配線をモーターの異なる端子に接続すると、例えば時計回り (CW) に回転することを示しています。
Arduino、ESP32、またはRaspberry Piボードにリレーを直接接続することはできません。モーターの動作には非常に高い電流が必要だからです。
Arduinoとモーターの間にモータードライバーが必要です。
リレーは重要です。なぜなら、Arduinoがモーターのような高出力デバイスを直接接続することなく制御できるからです。これは、Arduinoの出力ピンが限られた電流しか扱えないため、非常に重要です。リレーを使用することで、Arduinoから安全にモーターの動作を制御することができます。
上記のように二つのリレーを接続して、モーターの回転方向を制御できます。リレー1がONで、リレー2がOFFの場合、モーターは時計回りに回転します。
上の画像は電流の流れを示しています。
モーターの回転方向を制御するために、上に示されたように2つのリレーを接続できます。リレー1がOFFでリレー2がONの場合、モーターは反時計回り(CCW)に回転します。モーターの上にある矢印を見てください。
上の画像は電流の経路を示しています。
データシートの詳細
| 製造業者 | ソングル |
|---|---|
| 部品番号 | SRD-05VDC-SL-C |
| コイル電圧 | 5 V (DC) |
| 接触定格値 | 10 A / 250 VAC |
| 交流電 | 15 A 最大 |
| 切替電圧 | 30 V DC / 250 V AC |
| 接触抵抗 | ≤ 100 mΩ |
| 絶縁抵抗 | ≥ 1000 MΩ |
| 動作温度 | -40から+70 °C |
| パッケージ | 2つのリレーを搭載したリレーモジュール |
- リレーがモーターの電圧と電流に適合していることを確認してください。
- Arduinoとリレーモジュールの間に共通のグラウンドを使用してください。
- 必要に応じて適切なフライバックダイオードを使用して、Arduinoを逆起電力から保護してください。
- 配線の長さを短く保ち、抵抗と干渉を最小限に抑えてください。
- システムの電源を入れる前にリレー接続を再確認してください。
- モーターにフルパワーを適用する前に、低い電圧で回路をテストしてください。
- トラブルシューティング中に簡単に識別できるようにワイヤーにラベルを付けてください。
配線指示


コード例とウォークスルー
コードでは、リレー用に2つのピンを定義します。int relay1 = 2;とint relay2 = 3;これらのピンはリレーの動作を制御します。setup()この関数はこれらのピンを出力として初期化し、両方のリレーを高に設定することでモーターをオフのままにします。
void setup() {
pinMode(relay1, OUTPUT); // set pin as output for relay 1
pinMode(relay2, OUTPUT); // set pin as output for relay 2
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
}In theloop()モーターの方向を制御します。モーターを反時計回り(CCW)に回転させるために、設定します。relay1低くてrelay2高すぎます。これにより、電流は一方向に流れることができます。
digitalWrite(relay1, LOW); // turn relay 1 ON
digitalWrite(relay2, HIGH); // turn relay 2 OFF
Serial.println("Rotating in CCW");
delay(3000); // wait for 3 secondsモーターを停止させるために、両方のリレーを再び高に設定してオフにします。その後、リレーの状態を切り替えて方向を反転させ、モーターを時計回り(CW)に回転させます。
digitalWrite(relay1, HIGH); // turn relay 1 OFF
digitalWrite(relay2, LOW); // turn relay 2 ON
Serial.println("Rotating in CW");
delay(3000); // wait for 3 secondsこの記事の下にこのプロジェクトの完全なコードが読み込まれています。コードの詳細な説明のために動画(00:00の動画)を必ずご覧ください。
デモンストレーション / 期待すること
セットアップが完了し、コードがアップロードされると、モーターは最初に3秒間反時計回りに回転し、その後2秒間停止し、次にさらに3秒間時計回りに回転し、最後に再び停止します。このサイクルは継続的に繰り返されます。一般的な落とし穴には、リレーの配線が不正確であることや、モーターを直接Arduinoに接続することが含まれ、これによりボードが損傷する可能性があります。期待される動作の視覚的確認については、ビデオを参照してください(ビデオは00:00にあります)。
ビデオのタイムスタンプ
- 00:00 はじめに
- 04:27 どのように機能しますか
- 08:05 配線の説明
- 11:45 基本コードの説明
- 15:25 高度なコードの説明
- 18:40 シングルリレー2つによるデモンストレーション
- 19:43 デュアルリレー・モジュールを使用したデモンストレーション
画像
++
/*
* Lesson 52: Control a DC motor with Relay using Arduino | Arduino Step By Step Course
Basic code
* Arduino code to change the direction of rotation
* of a DC motor with 2 relays.
*
* This is basic code. I have advanced code which can be used in both
* for Low-level trigger and High-level trigger relay with clean code.
Please watch video explaining this code: https://youtu.be/2n0vUa0cZOI
*
* Written by Ahmad Shamshiri for Robojax.com on
* Sunday, August 18, 2019
* at 20:22 in Ajax, Ontario, Canada
*
This code is available at http://robojax.com/course1/?vid=lecture52
with over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
or make a donation using PayPal: http://robojax.com/L/?id=64
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int relay1 = 2;
int relay2 = 3;
void setup() {
pinMode(relay1, OUTPUT);// set pin as output for relay 1
pinMode(relay2, OUTPUT);// set pin as output for relay 2
// keep the motor off by keeping both HIGH
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Motor Direction of Rotation");
Serial.println("Using 2 Relays");
delay(2000);
}
void loop() {
// Rotate in CCW direction
digitalWrite(relay1, LOW);// turn relay 1 ON
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Rotating in CCW");
delay(3000);// wait for 3 seconds
// stop the motor
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Stopped");
delay(2000);// stop for 2 seconds
// Rotate in CW direction
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, LOW);// turn relay 2 ON
Serial.println("Rotating in CW");
delay(3000);// wait for 3 seconds
// stop the motor
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Stopped");
delay(2000);// stop for 2 seconds
Serial.println("===============");
}// loop end
必要かもしれないもの
-
イーベイeBayでデュアルチャネルリレーを購入してください。ebay.us
リソースと参考文献
-
外部Amazonでデュアルチャネルリレーを購入する。amzn.to
-
外部eBayでデュアルチャネルリレーを購入してください。ebay.us
-
外部アメリカのアマゾンでデュアルチャンネルリレーを購入するamzn.to
-
外部デュアルチャネルリレー(アマゾンカナダ)amzn.to
ファイル📁
ファイルは利用できません。