Arduino 代碼同影片:用固態繼電器控制 AC 燈膽或負載
喺呢個教學入面,我哋會探討點樣用固態繼電器(SSR)去控制一個交流或直流負載,好似燈膽咁。固態繼電器容許用Arduino嘅低電壓訊號,安全同有效率咁切換電氣負載。完成呢個教學之後,你就會有一個可以喺指定時間間隔開關盞燈嘅工作設定。

為咗實現呢個項目,我哋會用一個SSR,特別係G3MB-202P型號,佢可以處理高達2A嘅負載。繼電器會由Arduino板嘅一個數碼引腳控制,等我哋可以發送一個訊號去開或關個負載。呢個項目唔單止實用,仲係一個好好嘅入門,去認識繼電器同Arduino嘅運作。
如果想睇詳細嘅視覺解釋,記得睇埋附帶嘅影片(影片喺00:00)。
硬件解釋
喺呢個項目入面,主要元件係G3MB-202P固態繼電器。呢個繼電器容許你用低電壓訊號去控制一個高電壓負載。佢用光耦合器去切換負載電路,喺控制邊同負載邊之間提供電氣隔離。繼電器有三個引腳:DC+、DC-,同埋輸入通道,後者連接去Arduino。
當輸入訊號係低(0V)嘅時候,繼電器會啟動,容許電流流過負載。相反,當輸入訊號係高(5V)嘅時候,繼電器會關閉,切斷去負載嘅電流。呢個低電平觸發機制對於安全咁管理高電壓設備好重要,唔需要直接電氣接觸。
數據手冊細節
| 製造商 | Omron |
|---|---|
| 零件編號 | G3MB-202P |
| 邏輯/IO電壓 | 5 V |
| 供電電壓 | 5–24 V |
| 輸出電流(每通道) | 2 A |
| 峰值電流(每通道) | 4 A |
| PWM頻率指引 | 最高1 kHz |
| 輸入邏輯閾值 | 低:0–1.5 V,高:3–30 V |
| 電壓降 / RDS(on) / 飽和 | 最高1.5 V |
| 熱限制 | –30至100 °C |
| 封裝 | 通孔 |
| 備註 / 變體 | 有多種輸入電壓額定值可供選擇 |
- 確保繼電器嘅額定值適合你想控制嘅負載。
- 如果接近最大電流額定值操作,要用適當嘅散熱器。
- 再三檢查接線,避免極性接反嘅問題。
- 喺電源線上用去耦電容。
- 小心浮空輸入;確保控制訊號正確接地。
- 確認PWM頻率喺繼電器規格範圍內,先至用嚟做切換應用。
接線指示

接駁固態繼電器好直接。將繼電器嘅正極端子(DC+)連接去Arduino嘅5V引腳。負極端子(DC-)應該連接去Arduino嘅地線(GND)。控制繼電器嘅輸入引腳就連接去Arduino嘅數碼引腳8。呢個引腳會發送低或高訊號去啟動或停用繼電器。
喺負載邊,將交流燈膽嘅一條線連接去繼電器輸出端子,另一條線連接去交流電源。確保用合適嘅連接器,同埋所有連接都穩固,以防任何電氣危險。
程式碼示例同講解
以下係控制固態繼電器嘅Arduino程式碼簡介:
int relayPin = 8; // 設定引腳8做繼電器輸出
void setup() {
Serial.begin(9600); // 初始化串行通訊
pinMode(relayPin, OUTPUT); // 設定繼電器引腳做輸出
}
喺呢段節錄入面,我哋定義relayPin做8,對應連接去繼電器嘅數碼引腳。setup()函數初始化串行通訊,並將繼電器引腳設定做輸出。
void loop() {
digitalWrite(relayPin, LOW); // 開啟繼電器
Serial.println("Relay ON"); // 輸出到串行監視器
delay(2000); // 等2秒
}
喺loop()函數入面,我哋將relayPin設定做LOW嚟開啟繼電器,咁就會啟動繼電器,容許電流流去負載。會印一個訊息去串行監視器做確認。
digitalWrite(relayPin, HIGH); // 關閉繼電器
Serial.println("Relay OFF"); // 輸出到串行監視器
delay(2000); // 等2秒
}
跟住,我哋將relayPin設定做HIGH嚟關閉繼電器,咁就會切斷去負載嘅電流。我哋又會印一個訊息去串行監視器,表示繼電器狀態。呢個過程會無限重複,每隔兩秒開關繼電器一次。
想睇完整嘅Arduino程式碼,請睇文章下面載入嘅完整程式碼。
示範 / 預期效果
當程式碼上傳去Arduino之後,你應該會見到繼電器開關,將連接嘅燈膽每隔兩秒開關一次。如果繼電器冇正常運作,檢查接線連接,確保繼電器收到正確嘅控制訊號。常見問題包括負載邊極性接反,或者Arduino上嘅連接唔正確。
想進一步視覺確認繼電器運作,可以參考影片(影片喺06:00),入面會見到燈膽隨住繼電器啟動而開關。
影片時間戳
- 00:00 - 項目介紹
- 01:30 - 硬件設置
- 03:15 - 代碼解釋
- 05:45 - 現場演示
- 07:00 - 總結
/*
* This is the Arduino code for a Solid State Relay
* to control turning ON or OFF an AC or DC load
* Watch the video https://youtu.be/64NatLeGsaE
* *
* Written by Ahmad Shamshiri for Robojax Video
* Date: January 13, 2018, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
// Introduction to a 5v Solid State relay.
int relayPin = 8;// set pin 8 for relay output
// setup code for Robojax Solid State Relay
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
Serial.println("Robojax Solid State Relay");
pinMode(relayPin, OUTPUT);
}
// loop code for Robojax Solid State Relay
void loop() {
// Turn the relay switch ON (Robojax.com/learn/arduino)
digitalWrite(relayPin, LOW);// set relay pin to low
Serial.println("Relay ON");
delay(2000);
// Turn the relay switch OFF (Robojax.com/learn/arduino)
digitalWrite(relayPin, HIGH);// set relay pin to HIGH
Serial.println("Relay OFF");
delay(2000);
}
資源與參考資料
暫時冇資源。
文件📁
Fritzing 文件
-
Solid State High Level Relay Module
Solid State High Level Relay Module .fzpz0.04 MB