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,首先將繼電器模組嘅接地引腳連接到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儲住用嚟控制每個繼電器嘅引腳號碼。

跟住,我哋喺setup()函數入面設定引腳:
呢段代碼初始化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 示範
++
/*
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
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
你可能需要嘅嘢
-
亞馬遜
-
阿里巴巴速卖通Buy 5V/12V 1, 2, 4, 6, or 8-channel relay modules.click.aliexpress.com
資源與參考資料
暫時冇資源。
文件📁
Fritzing 文件
-
omron silid state relay SSR module 4 channel
omron-relay-module-4way-1.fzpz0.02 MB -
4-Channel 5v Relay module
4-Channel 5v Relay Shield.fzpz0.02 MB -
omron solid state relay SSR module- 8 channel
omron-relay-module-8way-1.fzpz0.02 MB -
AC Plug Fritzing Part (Robojax.com)
ACPlug_Robojax.com.fzpz