아두이노 릴레이 회로도 - adu-ino lillei hoelodo

릴레이(RELAY)는 계전기라고도 부르며 입력신호를 사용하여 출력측에 연결된 장치를 ON 또는 OFF할 수 있는 전자석을 사용한 일종의 자동 스위치라고 할 수 있습니다. 자동 제어 시스템에 광범위하게 사용되고 있으며 낮은 전압과 전류 신호로 높은 전압과 큰 전류를 가지는 장치를 제어할 수 있습니다. 전자석에 전원이 공급되면 전기자를 아래로 빨아들여 두 개의 접점이 붙게 되고 스위치가 ON됩니다. 전자석의 전원이 차단되면 자력이 상실되고 스프링이 전기자를 당겨 스위치가 OFF됩니다.

릴레이 모듈을 사용하면 아두이노 보드와 장치간에 전기적으로 분리(절연)되며 릴레이 모듈에 연결된 장치는 DC전압은 물론 AC전압을 사용하는 장치도 제어할 수 있습니다. 또한 릴레이 모듈을 사용하면 아두이노 보드의 소신호를 사용하여 고전압, 대전류의 장치를 제어할 수 있게 됩니다.

아래는 릴레이 내부 구조입니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

릴레이 구조는 아래와 같이 5가지 부분으로 나눠볼 수 있습니다.

1. 전자석 : 구리선이 감겨있는 코어로서 전기가 흐르면 자계가 발생하게 됩니다.

2. 전기자(또는 아마추어) : 움직일 수 있는 구조를 가지고 있으며 전자석에서 발생한 자계에 따라 붙었다 떨어졌다 하며 접점 스위치를 ON/OFF할 수 있습니다. NO(Normal Open; 평상시 OFF)와 NC(Normal Close; 평상시 ON) 사이를 오가며 COM단자와 연결됩니다. 평상시 전류가 흐르지 않는 경우에는 자계가 발생하지 않으며 접점 스위치는 NC와 COM이 연결된 상태가 되며 NO와 COM은 연결되지 않습니다. 전류가 흐르면 자계가 발생하고 전자석과 아마추어가 붙게되고 NO와 COM단자가 연결되고 NC와 COM은 연결되지 않습니다.

3. 스프링 : 평상시 전류가 흐르지 않는 경우 아마추어(전기자)를 전자석과 떨어지게 합니다.

4. 접점 : NC, NO의 2개의 접점이 있습니다(일부 릴레이의 경우 NO 접점만 있는 경우도 있습니다). 전자석의 동작 유무에 따라 COM(공통) 단자와 연결되는 접점이 바뀝니다.

NO (Normal Open; 평상시 OFF) : 평상시에는 접점이 떨어져 있다가 전류가 흐르면 전자석에 의해 접점이 ON이 됩니다.

NC (Normal Close; 평상시 ON) : 평상시에 접점이 붙어 있다가 전류가 흐르면 접점이 OFF됩니다.

5. 보호케이스 : 릴레이를 보호하기 위한 플라스틱 케이스입니다.

아래는 이번 실험에서 사용할 1채널 릴레이 모듈로서 5V 아두이노 디지털 포트의 신호로 최대 10A의 전류의 DC 또는 AC 장치를 제어할 수 있습니다. 

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

아래는 릴레이 모듈의 회로도 입니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

이번 실험에서는 아두이노 보드의 6번 디지털포트 릴레이 모듈을 제어하게 됩니다. 코드를 작성하기 전에 아래와 같이 아두이노 보드와 릴레이 모듈을 결선합니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

결선이 완료되면 아두이노 보드로 릴레이 모듈을 ON/OFF 하는 프로그램을 작성해보도록 하겠습니다. 이번 실험에서는 단순하게 1초 마다 릴레이를 ON 하고 OFF하는 동작을 반복하는 프로그램을 작성합니다.

출력쪽에 아무런 부하가 없는 상태에서 동작시키면 릴레이의 접점의 전자석이 동작함에 따라 접점이 붙고 떨어지면서 나오는 "딸깍"하는 소리를 1초마다

소스코드

아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드합니다.

// 아두이노 릴레이모듈 실험
// 1초마다 ON/OFF를 반복합니다. 1초마다 릴레이 접점이 붙었다 떨어지는 "딸깍"소리를 들을 수 있습니다.

const int relayPin = 6; //릴레이 신호핀(S)에 연결되는 아두이노 핀

void setup()
{
  pinMode(relayPin, OUTPUT); //릴레이 신호용 아두이노 디지털 핀을 출력으로 설정
}

void loop()
{
  digitalWrite(relayPin, HIGH); //릴레이 접점 ON
  delay(1000); //1초 대기
  digitalWrite(relayPin, LOW); //릴레이 접점 OFF
  delay(1000); //1초 대기
}

아래는 실제 결선하고 프로그램을 업로드하여 동작시킨 모습입니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

아래와 같이 220V 백열전구를 출력 접점에 연결하면 실제 1초마다 백열전구가 켜졌다가 꺼졌다가 반복하는 동작을 확인할 수 있습니다.

* 경고 : 220V 전압을 다룰 경우 감전 사고의 위험이 있으며 반드시 전문가의 도움을 받으시기 바랍니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

릴레이 모듈 제어 (아두이노)


  • 온라인 가상시뮬레이터 : AUTODESK CIRCUITS
  • 회로도 공개 : https://www.tinkercad.com/things/a5akO6xYpt0

오늘은 릴레이 모듈을 제어하는 방법을 살펴보도록 하겠습니다. 아두이노는 기본적으로 5V 전류에 동작하는 싱글보드입니다. 그래서 5V이상의 전류를 다룰 수가 기본적으로 없습니다. 그걸 대신해주는 역할이 릴레이 모듈입니다. 높은 전압에 동작하는 전자기기를 아두이노가 릴레이 모듈을 사용하여 쉽게 제어가 가능합니다. 예로 선풍기, 에어컨, 남방기기, 현광등 외 높은 전압을 사용하는 전자기기를 제어할 수 있습니다. 릴레이 모듈은 동작은 기본적으로 스위치 역활을 연상하시면 됩니다. 이제 릴레이 모듈에 대해서 살펴보도록 하죠.

1. 릴레이 모듈


제가 가지고 있는 모델입니다. 아래 그림에서 주의할 점은 부품마다 아두이노 연결하는 핀 위치가 다릅니다. 이 부품은 가운데가 Vcc(5V) 이지만 어떤 부품은 가운데가 제어선인 경우도 있고요. 어떤 부품은 가운데가 Gnd핀인 경우도 있습니다. 실전에서는 사용하는 모듈 부품 정보를 토대로 주의해서 선을 연결하시면 됩니다. 그리고 제어 가능한 전류 표시는 위면에 잘 나와 있으니깐 본인이 제어하고자 하는 전류의 크기를 잘 체크하시고 사용하시면 되겠습니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

이건 제가 사용하는 부품의 기준으로 설명을 드리겠습니다. 이부분은 다른 부품일때 위와 같이 연결하시면 작동하지 않습니다. 그냥 원리를 이해하는 수준으로 읽어주시기 바랍니다. 왼쪽은 실제 높은 전압을 사용하는 전류를 가운데 공용선에 연결해서 그 전류가 Output1, Output2로 흘러 갈지를 릴레이 모듈에서 제어를 하게 됩니다. 오른쪽은 아두이노와 연결하는데 Vcc(5V), Gnd 핀은 그대로 연결하시면 되고요. 제어선은 아두이노의 디지털핀(출력값)을 통해 릴레이 모듈을 제어하는 스위치 연활을 하게 됩니다. HIGH(5V) or LOW(0V) 값에 따라서 Output1과 Output2로 왔다 갔다 연결이 됩니다. 가령, Output1에 연결되어 전류가 공급되고 있다면 제어선값이 반대값이 입력되면 Output1의 연결이 끊어지고 Output2에 연결됩니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

그림을 못 그리지만 대충 그림판에서 느낌만 그려봤네요. 가령 초기상태로 0V일 때 왼쪽 그림의 모습이라고 했을때 5V가 제어선으로 입력되면 선이 위쪽으로 붙게 됩니다. 즉, 0V일 때 아래선에 붙게 되고 5V일때 윗 선에 붙는다고 생각하시면 됩니다.

대충 어떤식으로 모듈이 움직이는지 아시겠지요.

[ 가상시뮬레이터에서 사용할 Relay DPDT 모듈 ]

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

처음 이것을 실험할 때 가장 애 먹은 주제입니다. 2쌍으로 위쪽과 아래쪽으로 선 연결이 나뉘는데요. 선 연결은 윗면의 그림 모양으로 되어 있는 데로 선을 연결하시면 됩니다.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

대충 A,B가 한쌍이고, C,D가 한쌍입니다. 표기가 안된 쪽은 아두이노에 연결하시면 됩니다. 하나는 제어선 하나는 Gnd선입니다. 회로도 구성을 보시면 아마 쉽게 이해가 가실꺼에요.

2. 회로도 구성


  • 준비물 : relay DPDT 1개, Light bulb 2개, Power Supply, 아두이노우노
  • 내용 : Light bulb를 교대로 깜박이게 할 수 있도록 회로도를 구성해보자.

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

참고로 위면은 보시고 선은 연결하세요. 첨에 반대로 연결했다가 삽질을 했네요. 글자가 뒤집어지게 회전 시키고 선을 연결하세요. 정면은 오른쪽이 아두이노우노랑 연결해야 하거든요. Relay DPDT 모듈에 선 핀을 어떻게 연결해야할지 아시겠지요. 어느선이 전원선이고 어느선이 출력선인지요. 가상시뮬레이터에서 딱히 연결할 부품이 없어서 백열등 같은 모양의 전등을 연결해봤네요. Power Supply에서 10V의 전류로 불이 들어온다고 가정한 회로도 입니다.

3. 코딩


  • 사용함수 : pinMode(), digitalWrite(), delay()
  • 내용 : LED 깜박이는 소스를 이용해서 그 값을 제어값으로 해서 Light bulb 깜박이게 해보자.
  • 참고소스 : LED 제어(아두이노)

복습

  • pinMode(사용핀, 사용모드) : 사용핀을 INPUT/OUTPUT/INPUT_PULLUP 모드중 뭘로 사용할지를 정함.
  • digitalWrite(사용핀, 출력형태) : 사용핀을 HIGH(5V) or LOW(0V) 중 출력 형태를 정함.
  • delay(1000) : 1초(1000)를 대기한다.

따로 수정할 부분은 없습니다. 그냥 기본적인 LED 깜박이기 소스를 그대로 적용할 예정입니다.

[LED 깜박이기 기본 소스]

void setup() {
pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000); 
}

13번 핀값이 HIGH와 LOW를 1초 단위로 출력되잖아요. HIGH or LOW일 때 어떤 결과가 나오는지 보도록 하죠.

4. 결과


[ digitalWrite(13, HIGH); ]

아두이노 릴레이 회로도 - adu-ino lillei hoelodo

[ digitalWrite(13, LOW); ]
아두이노 릴레이 회로도 - adu-ino lillei hoelodo

[실험 촬영 영상]
위에 소개한 릴레이모듈에서 초기값(0V)이 Output2로 연결되었네요. 제어선(13번) 핀에서 HIGH(5V) 상태가 되면 Output1으로 선이 연결됩니다. 제어선(5번) 핀에 HIGH or LOW의 상태에 따라서 Output1과 Output2로 교차해서 연결되어 두개의 LED가 깜박이게 되는 효과를 보여주네요.

마무리


릴레이 모듈이 일상생활에서 꽤 유용한 부품으로 활용 분야가 넓습니다. 예를 들면은 온도 센서가 있습니다. 온도에 따라 낭방기기를 On/Off 시킬 수 있겠죠. 또는 wifi 모듈과 연동한다면 집 밖에서도 인터넷을 통해서 집안 전자기기들을 작동시킬 수도 있겠죠. 전류를 컨트롤 할 수 있다는 것은 엄청난 일을 할 수 있습니다. 단순히 On/Off라고만 생각하시면 안되고 그냥 리모콘 정도의 사고에 머물면 안되고 다른 부품들과 연동했을때 원격으로 제어 하거나 자동 제어를 할 수 있는 시스템을 구축할 수 있기 때문에 그 활용도는 무궁무진 합니다.

한번 상상의 나래를 펼쳐 보세요.