4채널 릴레이 모듈을 구입해서 아두이노 나노와 연결해서 테스트 해 보았습니다. 우노가 아니라 나노와 연결해서 릴레이 동작을 위한 전력이 부족할지 우려가 되었는데 결론적으로 나노의 5V 출력과 디지털핀 연결을 통해서도 모든 동작이 가능했습니다. 릴레이에 대해서는 예전의 글인 '[아두이노] 릴레이(Relay)를 이용하여 220V 전원을 제어해보자' 라는 글에서 릴레이의 원리부터 자세히 알아 본 적이 있으므로 참고 하시면 됩니다.
모듈은 위와 같이 생겼습니다. 4개의 릴레이가 붙어 있고 각각 상태를 나타내는 LED 가 붙어 있습니다. 그리고 제어를 위한 핀 4개와 전원연결 핀 2개, 총 6개의 핀이 있습니다. 사진의 릴레이의 스위칭 가능 전력은 AC250V 10A, DC30V 10A 이므로 AC의 경우 우리나라 가정용 전원인 220V 전원을 컨트롤 가능 합니다. 동작 전원은 5V 를 이용하며 IN1 ~ IN4 에 아두이노의 디지털 핀을 연결해 주면 됩니다.
■ 릴레이 데이터시트
릴레이의 전원제어부 단자 입니다. 릴레이 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 모듈 등과도 조만간 연결해서 인터넷을 통해 제어해 볼 생각 입니다.
'아두이노' 카테고리의 다른 글
[아두이노] DF Player Mini 모듈을 이용한 MP3 제어 #2 -초음파 센서 추가 (30) | 2016.07.13 |
---|---|
[아두이노] DF Player Mini 모듈을 이용한 MP3 제어 #1 -기본제어 (21) | 2016.07.13 |
[아두이노] ATTiny85 보드(Digispark)를 이용하여 PC, 스마트폰의 잠금해제-키보드 입력 (4) | 2016.06.28 |
[아두이노] 미니 개발보드 ATTiny85 보드(Digispark)의 설치 및 사용 (3) | 2016.06.27 |
[아두이노] FTDI USB Serial 모듈과 아두이노 프로 미니 - FT232RL 칩 사용 보드 (1) | 2016.06.27 |