아두이노 AC 릴레이 타이머 인터벌기능 추가 및 스케치파일 공유
- Arduino AC-Relay Configurable Timer, Sketch File

 

 

 

며칠 전 주문한 AC 릴레이가 도착하여 코딩을 시작 후 목업제품을 만들어 보았다.
처음엔 단순하게 타이머기능만 있었는데 결과물이 실사용에 무리가 없어 소스를 다듬어 누구나 쉽게 따라 만들 수 있도록 소스를 공개한다.
아두이노 공부 혹은 조금 수정하여 자기만의 타이머를 만들 경우가 아니면 기성품을 사용하는 것을 추천한다.

 

 

1차 공개된 작업로그에는 없던 인터벌 기능이 추가되었다.
인터벌 기능은 ON/OFF를 설정한 카운트만큼 반복하는 기능으로,,
ON/OFF 시간, 카운트 값을 모두 설정가능하다.

 

또한, 인터벌 기능이 추가되면서 추가 액션이 필요해 엔코더 회전에 기능을 심어 처리했다.
자세한 사항은 아래 조작방법을 참고

 

 

 

준비물

 

아두이노 프로미니(Arduino Pro mini)
LCD Display(16x2, I2C 버전)
로터리 엔코더(컨트롤용)
부저(Passive Buzzer)
만능 기판
5V 아답터 (2A 추천)
220V 아두이노용 릴레이
메인 전원 컨트롤용 스위치 (250V/10A)
유리관 퓨즈(250V/10A)
220V 입출력을 위한 소켓(적출품)

아두이노는 프로미니만 사용해봐서 다른 버전에 대한 지원여부는 잘 알지 못한다.
다만 아두이노는 프로미니 이상을 사용하면 될 듯 싶다.

Display는 16x2로 고정되어 있어,
그 이상의 LCD는 코딩수정이 많아 추천하지 않는다.

 

+
타이머는 정확도에서 일반 시계와 달리 비교적 유연한 편이다.
따라서 추가 RTC 추가없이 비교적 간단하게 만들 수 있도록 아두이노 내부 시스템 클락을 사용했다.
1초틱은 MSTimer2 라이브러리를 사용함

좀 더 정밀한 작업이 필요한 경우는 RTC 모듈을 사용해야한다.
(컴퓨터 메인보드에 RTC용 동전 건전지를 생각하면 될 듯 싶다.)

 

 

 

 

배선도

 

핀번호를 주의하자.
220V를 다루는 바 전원인가 전에 꼼꼼하게 체크하기를 권장한다.

 

 



 

릴레이 동작방식

#define RELAY_ON LOW /* RELAY, LOW Level Trigger */
#define RELAY_OFF HIGH         /* RELAY, LOW Level Trigger */

릴레이는 시그널핀의 상태에 따라 ON/OFF가 다를 수 있다.
필자가 선택한 릴레이는 시그널이 없을 경우(LOW)에 동작하는 Low Level Trigger였다.
반대의 경우 LOW/HIGH를 바꿔주면 된다.

 

 

PIN MAP

/* PIN MAP */
#define PIN_ROTARY_RT 2   /* do not change, fixed by INTR_NO_0 */
#define PIN_ROTARY_LT         3   /* do not change, fixed by INTR_NO_1 */
#define PIN_ENCODER_SWITCH 4
#define PIN_BUZZER 5
#define PIN_AC_RELAY         10

배선상의 이유로 변경시 위 코드의 값을 변경해주면 된다.
주의할 것은, PIN_ROTARY_RT, PIN_ROTARY_RT는 변경하면 안된다.

 

 

 

LCD I2C Address

LiquidCrystal_I2C lcd(0x27, 16, 2);

LCD가 제대로 표시되지 않을 경우 구입시 제공하는 주소로 변경해주어야 한다.
주소를 모른다면, LCD I2C를 연결을 하고 아래 l2c Scanner를 아두이노 보드에 올려 디버깅 메시지로 확인할 수 있다.

 

 

Arduino Playground - I2cScanner

i2c_scanner Last Modified: November 14, 2018, at 09:21 AM By: This very simple sketch scans the I2C-bus for devices. If a device is found, it is reported to the Arduino serial monitor. This sketch is the first step to get the I2C communication working. The

playground.arduino.cc

 

 

 

 

기능설명

 

타이머 ON/OFF

엔코더를 5초이상 누르면 ON/OFF가 토글된다.
타이머 OFF시 상시 전원

 

모드(MODE)
TMR(타이머 모드), ITV(인터벌 모드)가 있고 각각 다음과 같다.

타이머(TMR) 모드 : 설정한 시간이 지나면 자동으로 꺼짐
인터벌(ITV) 모드 : 주기적으로 ON/OFF를 반복한다.
> ON/OFF/COUNT값을 각각 설정할 수 있고 설정값은 EEPROM에 저장

 

설정 시간
타이머 모드 : 최대 24시간 지원
인터벌 모드 : ON/OFF 타임 최대 24시간까지 지원, 카운트는 1~255회 반복,  0은 무한반복

 

% 동작이 20초 동안 없을 경우 자동으로 꺼지며 다이얼 조정시 백라이트가 켜집니다.
% 모드와 설정 값이 EEPROM에 저장됩니다.

 

 



 

조작방법

5핀 엔코더는 크게 클릭과 좌우회전을 지원한다.
크게 짧게 클릭, 3초 클릭, 5초 이상 클릭과 좌우턴, 좌우 회전에 동작한다.

시계방향(CW)으로 2바퀴
> TMR(타이머) 모드와 ITV(인터벌) 모드의 전환
> 엄지와 검지로 회전을 할 경우 5~6번 돌려주면 된다.

 

반시계방향(CCW)으로 1바퀴
> 현재 모드를 리셋 (설정값으로 초기화) 후 자동 시작 
> 엄지와 검지로 회전을 할 경우 3~4번  돌려주면 된다.

 

짧게 누름
동작시 : 멈춤(HLD)과 동작(RUN)을 전환
설정시
    TMR 모드 : 초(Sec) --> 분(Min) --> 시(Hour) 설정항목을 순환
    ITV 모드 :  ON TIme 초(Sec) --> ON Time 분(Min) --> ON Time 시(Hour) --> OFF TIme 초(Sec) --> OFF Time 분(Min) --> OFF Time 시(Hour) --> ITV Count(반복 회수) 설정항목을 순환

환결설정시 각 필드에서 엔코더를 좌우로 회전하면 값이 증감한다.

 

3초 누름
> 설정모드와 동작모드가 전환
> 정확히는 2~3초이다.
> TIMER OFF 시에는 3초 누름에서 일반 모드로 변환됨

 

5초 누름
> TIMER ON/OFF
> OFF(상시전원)시에 ON으로 진입시 3초 누름에도 반응함

 

 

 

타이머 모드

 

 

 

인터벌 모드

 

 

타이머 OFF

 

 

 

 

작동영상

Arduino AC Timer 테스트 영상

 

 

 

Arduino Sketch File

 

 

1st Release
Date : 2020-03-25
---------------------------------

Version 1.1
1. 1.0 배포 후 인터벌 모드 ON/OFF 타임 전환시 실제 값 표시 오류 정정
2. 인터벌 모드 환경설정 후 타이머모드로 변경 후 환경설정 진입시 최초 설정항목 Na 표시 오류 정정

 

Version 1.2 (2020-03-28)

1. 타이머 조정시 0초까지 설정 가능하도록 수정
2. 인터벌 회수 수정시 0에서 255로 255에서 증가시 0으로 순환되도록 수정
3. 타임 값을 0으로 설정후 동작시 ERROR 메시지 표시하고 부저를 울림

 

ac_timer_hooneypapa_v1.2.ino
다운로드

 

 

 

 

Version 1.2 UV-C 살균기 전용 타이머 (2020-03-29)


1. 동작 이외의 모드에서는 릴레이 전원을 OFF한다.
> 실제 Run 상태에서만 전원인가

2. 백라이트 유시 시간을 20초에서 3분으로 늘림
3. 초기 릴레이 ON->OFF 되는 증상 수정

 

ac_sterillizer_hooneypapa_v1.2.ino
다운로드

 

 

 

버그나 수정사항이 있다면 이 페이지에서 업데이트 합니다.
혹여 따라 만드신다면 작업 후 피드백 주시길 부탁드립니다.


가급적 본 소스는 이 페이지를 통해서 다운로드 받으시고 수정 후 재배포는 자유지만,
출처와 이 글의 링크는 첨부해주시면,,, 개발과 공유에 큰 힘이 됩니다.

 

 

 

 

작업 로그

 

 

아두이노 220V 10A 릴레이를 이용한 전자식 타이머 제작기와 배선도 추가 Ver 1.0

[DIY] 아두이노 220V 10A 릴레이를 이용한 전자식 타이머 제작기 - 아두이노 프로미니, 220V 릴레이, 1차 버전 - <완성된 모습> UV 자외선 살균기를 만들면서 선풍기 타이머를 사용했었다. 이때 아두이노와 릴레..

mindeater.tistory.com

 

원목 브레드박스와 아두이노 타이머로 UV-C 자외선 살균기 제작 업그레이드편

코비드 19로 하수상한 시국에 마스크 재활용과 각종 스마트 기기들 살균용으로 살균기를 만들었었다. 사진의 제품으로 다이소 PP소재의 다용도 수납함으로 만들었는데 나름 쓸만했지만, 36리터 �

mindeater.tistory.com