2016年5月22日 星期日

[arduino] arduino 控制繼電器

繼電器是什麼,請參考這一篇 ,基本上繼電器有2組輸出,

1組是常沒有任何控制訊號輸入的狀態下會連通(常閉)。

另1組是有控制訊息輸入時,才會連通的(常開)。

至於那一組可能要看一下說明書才知道,繼電器種類很多。


手上這一個是單路繼電器,是常閉式,如果沒有控制訊號時,

是會一直導通的,DAT 為高電位時,則會斷路。



                                               


 繼電器的左右二邊的電路通常是分開的,左邊是控制用,像這顆控制端是DC 5V,

而右邊則可以接受DC 30V     ,AC 250V的能耐,所以可以用Arduino去控制電器。                                                                                                                                                                                   下圖是繼電器的運作方式

圖片來源 WIKI


簡單來說就是DAT腳位變成高電位後,電磁鉄會把原本斷開的路導通,或者是像我這顆

模組一樣,把原本導通的路弄成斷路。


接下來是我要作的範例,利用這一篇所提到的PIR(被動式人體紅外線感測模組),

來控制Relay的動作,搭配一顆LED,有人經過時LED就會滅掉,沒人時會亮著。

Arduino吃的是電腦USB供的電,而relay吃的則是9V電源供應器給的電,透過麵包板

電源模組轉成3.3V給LED吃,建議加個限流電阻,我這是偷懶,有燒壞LED風險。

PIR   Arduino 
-------------------
VCC    5V

GND   GND

OUT    D3



Relay   Arduino 
---------------------
VCC       3.3V

GND       GND

DAT         D13




LED 正極接麵包板VCC(3.3V),負極接Relay  輸出的+ ,

Relay輸出的-  接在麵包板GND。




程式碼

const int PIRSensor = 3;     // 紅外線動作感測器連接的腳位
const int relayPin =  13;      // LED 腳位

int sensorValue = 0;         // 紅外線動作感測器訊號變數

void setup() {
  pinMode(PIRSensor, INPUT);     
  pinMode(relayPin, OUTPUT);        
}

void loop(){
  // 讀取 PIR Sensor 的狀態
 
  sensorValue = digitalRead(PIRSensor);


  // 判斷 PIR Sensor 的狀態
  if (sensorValue == HIGH) {     
    digitalWrite(relayPin, HIGH);  // 有人,開燈
  } 
  else {
    digitalWrite(relayPin, LOW);   // 沒人,關燈
  }
}

執行結果





Relay運作時,可以很明顯聽到一個閉/開 路的聲音。


參考來源:

WIKI


[Arduino] 人體紅外線模組

                  

[教學]用Arduino控制110V的電器

沒有留言:

張貼留言