[아두이노] 릴레이 모듈 제어

IOT/아두이노|2019. 3. 27. 09:00

[아두이노] 릴레이 모듈 제어 



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

1. 릴레이 모듈


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


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


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

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

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


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


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

2. 회로도 구성


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


참고로 위면은 보시고 선은 연결하세요. 첨에 반대로 연결했다가 삽질을 했네요. 글자가 뒤집어지게 회전 시키고 선을 연결하세요. 정면은 오른쪽이 아두이노우노랑 연결해야 하거든요. 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); ]



[ digitalWrite(13, LOW); ]


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


마무리


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

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


댓글()