아두이노2016. 7. 11. 17:26

4채널 릴레이 모듈을 구입해서 아두이노 나노와 연결해서 테스트 해 보았습니다. 우노가 아니라 나노와 연결해서 릴레이 동작을 위한 전력이 부족할지 우려가 되었는데 결론적으로 나노의 5V 출력과 디지털핀 연결을 통해서도 모든 동작이 가능했습니다. 릴레이에 대해서는 예전의 글인  '[아두이노] 릴레이(Relay)를 이용하여 220V 전원을 제어해보자' 라는 글에서 릴레이의 원리부터 자세히 알아 본 적이 있으므로 참고 하시면 됩니다. 


모듈은 위와 같이 생겼습니다. 4개의 릴레이가 붙어 있고 각각 상태를 나타내는 LED 가 붙어 있습니다. 그리고 제어를 위한 핀 4개와 전원연결 핀 2개, 총 6개의 핀이 있습니다. 사진의 릴레이의 스위칭 가능 전력은 AC250V 10A, DC30V 10A 이므로 AC의 경우 우리나라 가정용 전원인 220V 전원을 컨트롤 가능 합니다. 동작 전원은 5V 를 이용하며 IN1 ~ IN4 에 아두이노의 디지털 핀을 연결해 주면 됩니다.


■ 릴레이 데이터시트

solgle_relay_datasheet.pdf



릴레이의 전원제어부 단자 입니다. 릴레이 1개당 3개의 단자가 제공되며 릴레이에 전원이 공급되지 않을 때 (릴레이 OFF 시) 에는 공통단자(COM)가 사진 상 우측의 단자와 연결이 되고 릴레이에 전원이 공급될 경우는 좌측의 단자와 연결이 됩니다. 곧, 릴레이 ON 시에 전원을 연결할지 OFF 할지는 용도에 따라 결정하면 될 것 입니다.


■ 연결

연결은 아래 표와 같이 했으며 아두이노 우노에서도 연결은 같습니다.

 4 Channel Relay

 Arduino Nano

 GND

 GND

 IN1

 D2

 IN2

 D3

 IN3

 D4

 IN4

 D5

 VCC

 5V




■ 소스

테스트를 위한 소스 이므로 간단 합니다. 각각의 릴레이를 1초 간격으로 ON/OFF 하고 전체 릴레이를 ON/OFF 해 보는 소스 입니다. 참고로 이 모듈의 경우 Digital Wite LOW 시 릴레이에 전원이 공급이 되네요. 뭔가 반대로 된 것 같기도 한데 뭐 상관 없습니다. 적용 시 거꾸로 하면 되니까요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
int relay1 = 2//릴레이1 핀설정
int relay2 = 3//릴레이2 핀설정
int relay3 = 4//릴레이3 핀설정
int relay4 = 5//릴레이4 핀설정
 
void setup ()
{
  pinMode (relay1, OUTPUT); // relay1를 output으로 설정한다.
  pinMode (relay2, OUTPUT); // relay2를 output으로 설정한다.
  pinMode (relay3, OUTPUT); // relay3를 output으로 설정한다.
  pinMode (relay4, OUTPUT); // relay4를 output으로 설정한다.
 
  //시작시 릴레이를 OFF 로 설정
  digitalWrite (relay1, HIGH);
  digitalWrite (relay2, HIGH);
  digitalWrite (relay3, HIGH);
  digitalWrite (relay4, HIGH);
}
void loop ()
{
  digitalWrite (relay1, LOW); // 릴레이 ON
  delay (1000);              //1초 delay
  digitalWrite (relay1, HIGH); // 릴레이 OFF
  delay (1000);               //1초 delay
 
  digitalWrite (relay2, LOW); // 릴레이 ON
  delay (1000);              //1초 delay
  digitalWrite (relay2, HIGH); // 릴레이 OFF
  delay (1000);               //1초 delay
 
  digitalWrite (relay3, LOW); // 릴레이 ON
  delay (1000);              //1초 delay
  digitalWrite (relay3, HIGH); // 릴레이 OFF
  delay (1000);               //1초 delay
 
  digitalWrite (relay4, LOW); // 릴레이 ON
  delay (1000);              //1초 delay
  digitalWrite (relay4, HIGH); // 릴레이 OFF
  delay (1000);               //1초 delay
 
  digitalWrite (relay1, LOW); // 릴레이 ON
  digitalWrite (relay2, LOW); // 릴레이 ON
  digitalWrite (relay3, LOW); // 릴레이 ON
  digitalWrite (relay4, LOW); // 릴레이 ON
  delay(1000);
  digitalWrite (relay1, HIGH); // 릴레이 OFF
  digitalWrite (relay2, HIGH); // 릴레이 OFF
  digitalWrite (relay3, HIGH); // 릴레이 OFF
  digitalWrite (relay4, HIGH); // 릴레이 OFF
  delay (1000);               //1초 delay
  digitalWrite (relay1, LOW); // 릴레이 ON
  digitalWrite (relay2, LOW); // 릴레이 ON
  digitalWrite (relay3, LOW); // 릴레이 ON
  digitalWrite (relay4, LOW); // 릴레이 ON
  delay(1000);
  digitalWrite (relay1, HIGH); // 릴레이 OFF
  digitalWrite (relay2, HIGH); // 릴레이 OFF
  digitalWrite (relay3, HIGH); // 릴레이 OFF
  digitalWrite (relay4, HIGH); // 릴레이 OFF
  delay(1000);
}
cs

차례대로 릴레이가 잘 작동하는 모습 입니다.


아래 소스는 릴레이가 얼마나 빨리 전류를 단속할 수 있는지 테스트 해 보았습니다. 50ms 즉, 1/20초 마다 동작하도록 해 보았는데 이것도 잘 되네요. 더 이상은 무리 같아서 더 줄이지는 않았습니다. ^^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int relay1 = 2//relay1에 5V 신호를 보낼 핀설정
int relay2 = 3//relay2에 5V 신호를 보낼 핀설정
int relay3 = 4//relay3에 5V 신호를 보낼 핀설정
int relay4 = 5//relay4에 5V 신호를 보낼 핀설정
 
void setup ()
{
  pinMode (relay1, OUTPUT); // relay1를 output으로 설정한다.
  pinMode (relay2, OUTPUT); // relay2를 output으로 설정한다.
  pinMode (relay3, OUTPUT); // relay3를 output으로 설정한다.
  pinMode (relay4, OUTPUT); // relay4를 output으로 설정한다.
 
  digitalWrite (relay1, HIGH);
  digitalWrite (relay2, HIGH);
  digitalWrite (relay3, HIGH);
  digitalWrite (relay4, HIGH);
}
 
void loop ()
{
  digitalWrite (relay1, LOW); // 릴레이 ON
  delay (50);              //50ms delay
  digitalWrite (relay1, HIGH); // 릴레이 OFF
  delay (50);               //50ms delay
 
  digitalWrite (relay2, LOW); // 릴레이 ON
  delay (50);              //50ms delay
  digitalWrite (relay2, HIGH); // 릴레이 OFF
  delay (50);               //50ms delay
 
  digitalWrite (relay3, LOW); // 릴레이 ON
  delay (50);              //50ms delay
  digitalWrite (relay3, HIGH); // 릴레이 OFF
  delay (50);               //50ms delay
 
  digitalWrite (relay4, LOW); // 릴레이 ON
  delay (50);              //50ms delay
  digitalWrite (relay4, HIGH); // 릴레이 OFF
  delay (50);               //50ms delay
}
cs


매우 빠르게 스위칭이 됩니다. 따라라라락~



4채널 릴레이는 IoT 등에서도 유용하게 쓰일 수 있을 것 같습니다. 채널이 많으니 그 만큼 제어가 가능한 장치도 늘어날 것이기 때문 입니다. ESP8266 모듈 등과도 조만간 연결해서 인터넷을 통해 제어해 볼 생각 입니다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요