교류/직류 등의 전원을 켜고 끄는 릴레이를 사용할 수 있다.
▶ 이 가이드를 따라하면
- 디지털 핀의 HIGH/LOW를 제어하여 전류의 흐름을 켜고 끌 수 있다.
▶ 먼저 읽으면 좋은 글
- Arduino 일반 : http://bbangpan.tistory.com/1
▶ 부품 설명 및 회로 구성
여기서 소개할 Relay는 1$ 미만에 aliexpress에서 거래되는 소형 relay이다. AC/DC 구분없이 5V의 디지털 전압 인가만으로 on/off를 제어해준다. 시중에서 가전을 원격제어할 때 가장 기초적인 것이 전원 on/off 제어인데 이러한 제어를 가능하게 하는 모듈이다. 쉽게 풀어쓰면 아두이노 디지털 핀의 5V 약한 전류 HIGH/LOW 상태 전환 만으로, 큰 전기 흐름을 차단 또는 진행하게 할 수 있는 모듈이다. 생긴 것은 동시에 몇 개의 전원을 제어할 수 있느냐에 따라 1채널부터 8채널 등 다양한데, 아래는 2채널 예제이다. 취급 가능한 전원 종류와 전압/전류에 따라 크기나 모양새가 다르다.
<릴레이 모듈, 10A 230V_AC/30V_DC 2개를 제어할 수 있는 2채널 릴레이>
한 채널별로 3개의 전선을 꼽을 수가 있고(사진의 왼쪽, 3개씩 두쌍), 제어는 GND/VCC 전압 외에 Signal 핀이 들어간다. 여기서는 2채널이므로 각각 IN1, IN2라고 하자. 배선은 간단해서 relay모듈의 VCC->5V, GND->GND를 연결하고, IN1->D9, IN2->D8로 인가하자. 다만 여기 예제에서는 IN1만 제어한다.
< 릴레이 모듈IN1에 LOW인가시, 모듈 LED가 들어오고, 전원 차단/시험용 LED off>
< 릴레이 모듈IN1에 HIGH인가시, 모듈 LED가 꺼지고, 전원 흐름/시험용 LED on>
상기 모듈은 릴레이의 제어 대상 전원부에 아두이노 GND/3.3V와 작은 LED를 저항과 함께 연결했다. 이 구성만으로도 전류의 흐름 여부는 확인 가능하다. (그림의 초소형 빵판이 처음 소개된다!)
처음에는 IN1, IN2가 각각 LOW/HIGH일 때 어떤 조합이 on/off가 되는지 헷갈릴 것이다. 아래가 그 상태 예시이다.
<aliexpress발췌>
내부의 전자식 스위치가, IN1이 HIGH일 때 IN1의 내부 LED가 꺼지고, 연결은 위 그림과 같다. 반대일 때(IN1:LOW/디폴트)는 LED에 불이 들어오고, 연결은 가운데와 다른쪽이 이어진다. 즉 기존 연결은 끊어진다. 내부의 전자식 스위치는 주로 전자석으로 작동되는데, 그 덕에 상태가 바뀔때마다 착착 소리가 난다. 아두이노 디지털 출력을 설정하면 IN1, IN2등이 LOW로 자동 셋팅되는데, 기본으로 전류를 흐를지/흐르지 않을지를 결정하여 어떤 선으로 전원을 연결하여 제어할지 결정하면 된다. (시행착오를 좀 겪어야 할것이다.)
릴레이 원리나 배선 방식은 http://deneb21.tistory.com/222 사이트의 그림들을 참조해보면 좋다. 단, 고전압 교류를 취급할 때는 매우 조심해야 한다는 사실을 잊지 말자.
▶ 소스 코드 입력 및 구동
소스는 간단해서 릴레이 각 채널별 시그널과 연결된 디지털 핀을 HIGH/LOW상태로 전환하면 된다. 아래는 HIGH/LOW를 주기적으로 바꾸는 예시이다..
/* Redistributed by www.bbangpan.com
Program Description: Relay module test
DataPin : GND->GND, VCC->5V, IN1->D9, IN2->D8
Tested on : Arduino 1.7.4, Arduino UNO R3
Copyright (c) 2016 www.bbangpan.com. All rights reserved.
This program can be used for any non-commercial purpose freely.
*/
int relay1 = 9;
int relay2 = 8;
void setup() {
Serial.begin(9600);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
delay(5000);
}
void loop() {
Serial.println("HIGH");
digitalWrite(relay1, HIGH); // HIGH인가
delay(2000);
Serial.println("LOW");
digitalWrite(relay1, LOW); // LOW인가
delay(2000);
}
시리얼 모니터 출력을 보면 HIGH/LOW 인가 여부를 알 수 있다.
<시리얼 모니터 시그널 핀 상태 예시>
▶ 구매 가이드
Relay module : http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20160410075340&SearchText=relay+module ($ 1)
▶ 강의 키워드
Relay module, 릴레이 모듈, 전원 제어, 2채널, Arduino, 아두이노, digitalWrite
'아두이노 전원' 카테고리의 다른 글
[전원/소켓] Arduino(아두이노) 휴대 전원 공급 어디까지 해봤나요? 건전지편 (7) | 2015.07.03 |
---|---|
[전원] 다양한 DC 변압 모듈 및 무선 전력 전송, relay 등 전력관련 부품 모음 (0) | 2015.04.30 |
[전원/태양전지] 소형 태양광 패널(solar panel)을 아두이노에 붙여 볼까? (0) | 2015.03.25 |
[전원/태양전지,레귤레이터] 태양전지/레귤레이터로 아두이노(Arduino) 전원공급하기 (2) | 2015.02.23 |