搜尋程式碼

Arduino代碼,用於4轉16通道5V繼電器模組

Arduino代碼,用於4轉16通道5V繼電器模組

喺呢個教學入面,我哋會學吓點樣用Arduino控制一個4通道繼電器模組。咁樣你就可以安全同有效咁管理AC負載,好似燈、風扇或者暖爐咁。提供嘅代碼可以改嚟用喺更多通道嘅模組度,令到佢可以靈活應用喺唔同場合。

喺我哋深入細節之前,了解呢個項目涉及嘅組件係好重要嘅。繼電器模組係一個開關,可以用低電壓信號由Arduino控制高電壓設備。每個繼電器可以係常開或者常閉,令到連接嘅設備操作上有彈性。請參考條片嚟睇視覺指引(片入面02:15)。

硬件解釋

呢個項目嘅主要組件包括Arduino板同繼電器模組。Arduino係控制器,根據我哋寫嘅代碼發信號畀繼電器模組。繼電器模組包含多個繼電器,可以開關AC負載。每個繼電器有三個端子:常閉(NC)、常開(NO)同公共端子(COM)。

當繼電器啟動咗,公共端子會連接到常開端子,令到電流可以流過負載。呢個係一個低觸發繼電器,即係話佢收到低電壓信號(0V)時會啟動,收到高電壓信號(5V)時會關閉。了解呢個機制對於安全控制AC設備嚟講係好關鍵嘅。

數據表細節

製造商通用
零件編號4通道繼電器模組
邏輯/IO電壓5 V
供電電壓5 V
輸出電流(每通道)最大10 A
峰值電流(每通道)15 A
PWM頻率指引唔適用
輸入邏輯閾值低:0 V;高:5 V
電壓降 / RDS(on) / 飽和唔適用
熱限制85 °C
封裝標準繼電器模組
備註 / 變體有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,首先將繼電器模組嘅接地引腳連接到Arduino嘅接地引腳。跟住將繼電器模組嘅VCC引腳連接到Arduino嘅5V引腳。至於控制引腳,將繼電器模組嘅IN1、IN2、IN3同IN4引腳分別連接到Arduino嘅數碼引腳2、3、4同5。咁樣嘅設置令到Arduino可以控制每個繼電器嘅狀態。

確保將繼電器模組放喺絕緣表面,因為佢處理AC負載。如果你用外部電源畀繼電器,將佢嘅接地連接到Arduino嘅接地,以確保有共同參考點。呢個對於正常操作同安全嚟講係好重要嘅。

代碼示例同講解

以下代碼片段初始化繼電器數量同設定控制引腳:

int ch = 4; // 你有嘅繼電器數量
int relay[]={2,3,4,5}; // 用嚟控制繼電器嘅Arduino引腳號碼

呢個定義咗繼電器數量同佢哋對應嘅Arduino引腳連接。陣列relay儲住用嚟控制每個繼電器嘅引腳號碼。

Wirig relay module to AC load

跟住,我哋喺setup()函數入面設定引腳:

void setup() { Serial.begin(9600); // 準備Serial監控器 for(i=0; i < ch; i++) { pinMode(relay[i], OUTPUT); // 將第(i)個引腳設為輸出 digitalWrite(relay[i], HIGH); // 關閉繼電器 } Serial.println("Robojax 4繼電器測試"); }

呢段代碼初始化Serial監控器,並將每個繼電器引腳設為輸出,預設將佢哋關閉。Serial打印語句確認設置已完成。

程式嘅主循環控制繼電器:

void loop() {
    for(int i=0; i < ch; i++) {
        Serial.print("繼電器 "); Serial.print(i+1); Serial.println(" 開啟");
        digitalWrite(relay[i], LOW); // 開啟繼電器    
        delay(wait);  
    }
    for(int i=0; i < ch; i++) {
        Serial.print("繼電器 "); Serial.print(i+1); Serial.println(" 關閉");
        digitalWrite(relay[i], HIGH); // 關閉繼電器    
        delay(wait);  
    }
    Serial.println("====== 循環完成 ==");
}

呢個循環首先逐個開啟每個繼電器,等待指定時間,然後以相同順序將佢哋關閉。Serial輸出有助於實時監控繼電器狀態。

示範 / 預期效果

當你運行程式時,應該會見到繼電器按順序啟動,每隔兩秒開啟同關閉。如果接線正確,連接到繼電器嘅交流負載會相應作出反應。要小心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

你可能需要嘅嘢

資源與參考資料

暫時冇資源。

文件📁

Fritzing 文件