relay-3

Arduino Uno只能提供5V或3.3V的直流電給外部設備,若是我們需要更高電壓或是交流電,像是要控制電風扇、檯燈,這時就必須靠繼電器(Relay)了。繼電器開關一樣,我們可以從程式去控制通電或斷電,如果你想做智慧家電,一定少不了繼電器!

本範例以常見的1路繼電器為主進行說明,其實還有其它像是2路、4路、8路的繼電器,不過控制的方式基本是一樣的。

relay-6

繼電器會把它的容許電壓、電流印在上面,AC就是交流電,像是10A 125V AC。但有不少沒有印DC直流電的,一般來說,就算沒有印出來,直流在12V、2A內是沒什麼問題的。但如果要長期使用,建議還是買有明確印出數值的款式。

繼電器一般會分兩邊,一邊各3個接腳。PIN腳的那邊是用來和Arduino溝通的,+就是VCC,-就是GND,IN則是訊號線,我們可以透過這個訊號線來控制繼電器的開或關。

另一邊則是電源線的接腳:

NO:Normal Open,常開,也就是正常情況它是不通電的。
COM:Common Ground,共接電,很多人習慣把外電接到這個接腳,再從NO或NC接到外部設備上。
NC:Normal Close,常閉,它在正常情況下是接通的。

NO和NC一次只會選擇接一個,至於要接哪一個,就要看實際的情況了。

我們先假設一個場景,我們有一顆抽水馬達要控制,平常它是不啟動的,當我們需要抽水時才啟動它。所以我們這時候就可以接到NO,只要我們不觸發它,它就是斷電的,當我們透過程式觸發它,馬達就會啟動。

要怎麼觸發繼器呢?繼電器的背面會寫「低電平」或「高電平」,或是有的款式可以讓你用Jumper來選擇,這是指這個繼電器,是低電平觸發,或是高電平觸發。依使用的情況可以自行選擇。高電平就是當你給訊號線HIGH時,它就觸發;相反的,低電平就是你給LOW時,它就觸發。本範例以高電平繼電器進行示範。

我們先來進行一個簡單的例子,為了安全起見,直接用Arduino Uno板給電,先不接外部電源,用繼電器來控制LED燈,讓它亮2秒,滅1秒。

先來接線!我們透過3.3V的PIN來供電,所以把3.3V接到繼電器的COM腳,再把LED的正極接到繼電器的NO腳。繼電器的訊息線IN腳,接到PIN 7。

relay-1

接下來寫個簡單的程式來控制。我們透過PIN 7來控制,其實很簡單,digitalWrite(7,HIGH),就是LED亮起來,digitalWrite(7,LOW)就是讓LED滅掉。

void setup() {
  pinMode(7,OUTPUT);
}

void loop() {
  digitalWrite(7,HIGH);
  delay(2000);
  digitalWrite(7,LOW);
  delay(1000);
}

如果你手邊有2節的電池盒,我們再來試一下用外部電源的接法。電池盒的正極接到繼電器的COM,負極接到LED的GND,繼電器的NO接到LED的正極,這樣就完成了!程式完全不用改,大家試試吧!

relay-2

relay-5

若是要換成交流電的電燈也是可以的,為確保安全,請接電前要確定一切都接對哦!