본문 바로가기
아두이노 전원

[전원/Relay] 릴레이를 사용하여 전원 on/off를 제어해보자

by 작동미학 2016. 4. 11.
반응형

교류/직류 등의 전원을 켜고 끄는 릴레이를 사용할 수 있다.

 

▶ 이 가이드를 따라하면

- 디지털 핀의 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

 

 

반응형