検索コード

4入力→16出力の5Vリレーモジュール用のArduinoコード

4入力→16出力の5Vリレーモジュール用のArduinoコード

このチュートリアルでは、Arduinoを使って4チャンネルのリレーモジュールを制御する方法を学びます。これにより、照明、ファン、ヒーターなどの交流負荷を安全かつ効果的に管理できるようになります。提供するコードはチャンネル数が多いモジュールにも適用できるため、さまざまな用途に対応できる汎用性があります。

詳細に入る前に、このプロジェクトに関わる構成要素を理解することが重要です。リレーモジュールは、Arduinoからの低電圧信号で制御されながら高電圧機器を制御するスイッチとして機能します。各リレーは常時開(NO)または常時閉(NC)にすることができ、接続された機器の動作に柔軟性を与えます。視覚的な参考はビデオの02:15を参照してください。

ハードウェア解説

このプロジェクトの主な構成要素はArduinoボードとリレーモジュールです。Arduinoはコントローラとして動作し、私たちが書くコードに基づいてリレーモジュールに信号を送ります。リレーモジュールは複数のリレーを備えており、交流負荷のオン・オフを切り替えることができます。各リレーには3つの端子があり、常閉(NC)、常開(NO)、共通端子(COM)です。

リレーが作動すると、共通端子(COM)が通常開端子(NO)に接続され、負荷に電流が流れるようになります。これはローアクティブ(低電位)リレーで、低電圧信号(0V)を受けると作動し、高電圧信号(5V)では非作動になります。この仕組みを理解することは、交流機器を安全に制御するために極めて重要です。

データシートの詳細

製造者一般的
部品番号4チャンネルリレーモジュール
ロジック/IO電圧5V
電源電圧5 V
出力電流(チャンネルごと)最大10A
ピーク電流(チャンネル当たり)15アンペア
PWM周波数に関するガイダンス該当なし
入力論理閾値低レベル: 0 V; 高レベル: 5 V
電圧降下 / RDS(オン)/ 彩度該当なし
熱限界85℃
パッケージ標準リレーモジュール
備考 / バリエーション2、4、8、16チャンネルのバリエーションで提供

  • 損傷を防ぐため、リレーの定格電流を超えないようにしてください。
  • 高電流用途では、Arduinoを分離するために別々の電源を使用してください。
  • 動作中はリレーの適切な放熱を確保してください。
  • 短絡を避けるため、配線を注意深く確認してください。
  • 追加の保護が必要な場合は、オプトカプラを使用してください。

配線手順

Arduino wirign for 4 channel relay to control 4 AC load
Arduino wirign for 4 channel relay to control 4 AC load

リレーモジュールをArduinoに配線するには、まずリレーモジュールのGNDピンをArduinoのGNDピンに接続します。次にリレーモジュールのVCCピンをArduinoの5Vピンに接続します。制御用ピンとして、リレーモジュールのIN1、IN2、IN3、IN4ピンをそれぞれArduinoのデジタルピン2、3、4、5に接続します。この配線によりArduinoは各リレーの状態を制御できるようになります。

リレーモジュールはAC負荷を扱うため、必ず絶縁された面の上に設置してください。リレーに外部電源を使用する場合は、共通の基準電位を確保するためにそのグランド(GND)をArduinoのグランド(GND)に接続してください。これは正しい動作と安全のために非常に重要です。

コード例とウォークスルー

以下のコードスニペットはリレーの数を初期化し、制御ピンを設定します:

int ch = 4; // number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers for relays

これはリレーの数と、それに対応するArduinoのピン接続を定義します。配列relay各リレーを制御するために使用されるピン番号を保持します。

Wirig relay module to AC load

次に、ピンをその中で設定しますsetup()関数:

void setup() {
    Serial.begin(9600); // prepare Serial monitor
    for(i=0; i < ch; i++) {
        pinMode(relay[i], OUTPUT); // set i(th) pin as output
        digitalWrite(relay[i], HIGH); // Turn the relay OFF  
    }
    Serial.println("Robojax 4 Relay Test");
}

このコードはシリアルモニタを初期化し、各リレーピンを出力に設定してデフォルトでオフにします。Serial.print文はセットアップが完了したことを確認します。

プログラムのメインループはリレーを制御します:

void loop() {
    for(int i=0; i < ch; i++) {
        Serial.print("Relay "); Serial.print(i+1); Serial.println(" ON");
        digitalWrite(relay[i], LOW); // Turn the relay ON    
        delay(wait);  
    }
    for(int i=0; i < ch; i++) {
        Serial.print("Relay "); Serial.print(i+1); Serial.println(" OFF");
        digitalWrite(relay[i], HIGH); // Turn the relay OFF    
        delay(wait);  
    }
    Serial.println("====== loop done ==");
}

このループはまず各リレーを順番に一つずつオンにし、指定された時間だけ待ってから同じ順序でオフにします。シリアル出力はリレーの状態をリアルタイムで監視するのに役立ちます。

デモ/期待できること

プログラムを実行すると、リレーが順に作動し、2秒ごとにオンとオフが切り替わるのが確認できるはずです。配線が正しければ、リレーに接続されたAC負荷もそれに応じて反応します。Arduinoからの電流に注意してください。リレーを同時に多数作動させると、ボードの許容量を超える可能性があります(ビデオの13:45で)。

動画のタイムスタンプ

  • 00:00はじめに
  • 02:15ハードウェアの説明
  • 05:30配線手順
  • 08:45コードの解説
  • 13:45デモンストレーション

画像

Wirig relay module to AC load
Wirig relay module to AC load
Arduino wirign for 4 channel relay to control 4 AC load
Arduino wirign for 4 channel relay to control 4 AC load
88-This is code for a 4- to 16-channel 5V relay module for Arduino.
言語: C++
++
/*
This is code to control 4 to 16 channel 5V relay modules using Arduino.
 * Watch the video on how to use 4 to unlimited relay channels: https://youtu.be/Wbm3MCMgM_s
 
 */
/*
 *  This code was written by Ahmad Shamshiri for Robojax.com.
// Written March 26, 2018, at 12:14 in Ajax, Ontario, Canada.

 *  
 */

int ch = 4;// number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers. The same number of relays should be defined here as input pins


int wait = 2000;// delay time
int i=0;

void setup() {
    Serial.begin(9600);// prepare Serial monitor
    // set pins as output
 for(i=0; i < ch; i++)
 {    
    pinMode(relay[i], OUTPUT);// set i(th) pin as output
   digitalWrite(relay[i], HIGH); // Turn the relay OFF  
 }
               
    Serial.println("Robojax 4 Relay Test");
}

void loop() {
    
     
 for(int i=0; i < ch; i++)
 {
      Serial.print("Relay "); Serial.print(i+1);Serial.println(" ON");
      digitalWrite(relay[i], LOW); // Turn the relay ON    
      delay(wait);  
 }// for loop


 for(int i=0; i < ch; i++)
 {
      Serial.print("Relay "); Serial.print(i+1);Serial.println(" OFF");
      digitalWrite(relay[i], HIGH); // Turn the relay OFF    
      delay(wait);  
 }// for loop

    Serial.println("====== loop done ==");

}// loop
89-If you want to replace the loop inside setup(), then use this as shown in the video.
言語: C++
pinMode(relay[0], OUTPUT);// connected to relay 1
    digitalWrite(relay[0], HIGH); // Turn the relay OFF  


    pinMode(relay[1], OUTPUT);// connected to relay 2
    digitalWrite(relay[1], HIGH); // Turn the relay OFF  

    pinMode(relay[2], OUTPUT);// connected to relay 3
    digitalWrite(relay[2], HIGH); // Turn the relay OFF  

    pinMode(relay[3], OUTPUT);// connected to relay 4
    digitalWrite(relay[3], HIGH); // Turn the relay OFF

必要かもしれないもの

リソースと参考文献

まだリソースはありません。

ファイル📁

フリッツィングファイル