RTC 모듈 필수 가이드: 정확한 시간 유지를 위한 완전한 안내서
정확한 시간 유지가 필요한 전자 장치가 있으신가요? 아니면 프로젝트에서 초, 분, 시, 심지어 월까지 카운트해야 하나요?
어떻게 할지 모르겠다면 걱정 마세요, 올바른 곳에 오셨습니다. 전원 없을 때도 시간 유지하는 프로젝트는 까다롭습니다. 다행히 저희가 다 커버해 드립니다.
필요한 건 실시간 클록(RTC) 모듈뿐. 이 글에서 RTC 모듈 모든 것과 RTC 모듈 회로 이용한 간단 프로젝트 제작법 보여드립니다.
준비되셨나요? 시작해 봅시다!
RTC 모듈이란?
RTC 모듈
실시간 클록(RTC)은 최신 컴퓨터, 서버, 임베디드 시스템에서 보통 찾아볼 수 있는 집적 회로 클록 모듈. RTC 모듈 목적은 단 하나: 시간 유지.
이 장치는 초, 분, 시, 년 카운트 가능. 다양한 시간 유지 애플리케이션 정확하게 처리 가능.
RTC 모듈 작동 원리
RTC가 중요한 역할 맡아 시스템 꺼져도 시간 유지. 따라서 알람 시계나 모바일 기기 예약 전원 같은 이벤트에서 시스템 켜는 트리거 역할 가능.
RTC가 어떻게 이걸 달성할까요? 이 집적 회로는 시스템 전원과 다른 전원 소스에서 작동. 따라서 RTC가 저전력 상황이나 정전에도 지속 동작 가능. RTC 구동에 아주 적은 전류만 필요.
구형 RTC 모듈은 리튬 배터리 대체 전원, 신형은 슈퍼커패시터나 보조 배터리 사용. 두 RTC IC 간 차이 존재.
- 슈퍼커패시터 탑재 RTC: 충전 가능, 회로에 납땜 가능
- 보조 배터리 탑재 RTC: 대부분 소비자급 메인보드서 흔함. 단일 배터리로 RTC 전원 공급. 이 배터리 제거 시 RTC 리셋되어 시작점으로 돌아감.
또한 RTC 모듈은 크리스탈 오실레이터로 시간 조절. 정기 클럭 신호 필요 없는 일반 하드웨어 클록과 차별점.
DS3231 RTC 모듈 특징 & 사양
DS3231 모듈 특징과 사양:
특징
- 초, 분, 시, 일, 월, 년 카운트 가능
- 높은 전력 불필요
- CR2032 배터리 백업 전원으로 사용. 배터리 수명 최대 3년
- 소형 크기
- 에이징 트림 레지스터로 사용 가능
- 모듈 스퀘어 웨이브 출력 프로그래밍 가능
- ±3°C 정확도 추가 디지털 온도 센서 내장
- 400kHz I2C 인터페이스 사용
- 두 개 타임오브데이 알람 탑재
- 정확도: -40°C~+85°C에서 ±3.5ppm, 0°C~+40°C에서 ±2ppm
- 정전 시 자동 배터리 전원으로 전환
사양
- 동작 전압: 2.3V~5.5V
- 저전압 사용 가능
- 배터리 전원 시 500µA만 소비
- SDA, SCL 최대 전압: VCC + 0.3V
- 동작 온도: -45°C~+80°C
응용 분야
DS3231 이해 돕는 케이스들:
- 회로 전력 소비 문제 걱정 시: DS3231 높은 전력 불필요. 모바일 시스템 애플리케이션이나 컴퓨터 주변기기 사용 적합.
- 시장엔 수많은 RTC 모듈 있지만 DS3231은 최고 정확도로 유명. 프로젝트용 정확한 시간/날짜 필요 시 DS3231이 답. 다른 RTC 모듈보다 시간 더 정확하게 유지.
- 고속 통신 필요 시: DS3231 어떤 빠른 TWI 인터페이스와도 통신 가능. 로보틱스, 게이밍, 서버 애플리케이션 등 선택.
- 12/24시간 방식 찾기 애플리케이션 사용 가능. 특히 GPS 애플리케이션.
- 알람 시계 속성 몇 개, 온도 센서로 유틸리티 파워 미터 애플리케이션 등 여러 다른 응용에 더 유용.
DS3231 RTC 핀 구성
DS3231 RTC 핀 구성
DS3231은 6개 단자. 하지만 이 중 2개 핀 사용 필수 아님. 주로 4개 단자/핀. 모듈 추가 면에 보임. DS3231 RTC 모듈 핀 구성:
| 핀 이름 | 설명 |
| VCC | 에너지 소스 양극 연결 |
| GND | 그라운드 연결 |
| SDA | 시리얼 데이터 핀 (I2C 인터페이스) |
| SCL | 시리얼 클럭 핀 (I2C 인터페이스) |
| SQW | 스퀘어 웨이브 출력 핀 |
| 32K | 32k 오실레이터 출력 |
DS3231 RTC 모듈 사용법
DS3231 RTC 모듈과는 I2C 인터페이스로만 통신 가능. I2C 인터페이스가 DS3231에서 보내고 받는 데이터 처리. 따라서 I2C 통해 시간/날짜 정보 획득 가능.
DS3231과 I2C
모듈과 I2C 간 전송 복잡. 통신 바이트 포맷으로 이뤄짐. 따라서 DS3231 관해 특별 작성된 라이브러리 사용 권장. 이유: 라이브러리 사용 시 통신 개선. DS3231 라이브러리 다운로드해 프로그램으로 호출.
헤더 파일 포함하면 컨트롤러 통신 시작, 시간/날짜 표시. 라이브러리로 알람 쉽게 제어/설정 가능.
저전력/무전력 시 RTC 모듈 자동 배터리 전원 인계 → 칩이 정확한 시간/데이터 지속 제공. 시스템 재시작 시 컨트롤러-모듈 통신 에러 없이 계속.
프로젝트: 아두이노 캘린더 시계
이 섹션에서 아두이노와 실시간 클록 사용법 배우고 아두이노 캘린더 시계 프로젝트 제작.
회로 설계
DS3231 RTC 모듈 사용한 심플 아두이노 캘린더 시계 설계. IC2 때문에 모든 기기 공통 버스(단 4선)에 연결:
아두이노 캘린더 시계 회로도
필요 부품
- (1) 아두이노 우노
- (1) 브레드보드
- (1) 16×2 I2C 캐릭터 LCD
- 점퍼 와이어
- (1) DS3231 실시간 클록 모듈
코드
라이브러리 사용, 커스텀 함수 생성으로 코드 작성 용이/가독성 향상. 이 프로젝트 사용 라이브러리:
- Wire.h 라이브러리 (I2C 인터페이스용)
- LiquidCrystal_I2C.h 라이브러리 (Frank de Brabander, I2C 16×2 LCD 모듈용)
- RTClib.h 라이브러리 (Adafruit, DS3231 RTC 모듈용)
라이브러리 다운로드 후 #include 키워드로 코드 추가. lcd(), rtc 두 객체 설정. 이 두 객체로 LCD, DS3231 모듈 통신.
lcd() 및 rtc 코드
코드 쉽게 관리 위해 커스텀 함수 2개 생성. updateRTC() 첫 번째 함수. 사용자 현재 날짜/시간 입력받아 RTC 내부 클록 업데이트.
updateRTC() 코드
updateRTC() 코드
다음 함수 updateLCD(). LCD 표시 텍스트 업데이트 담당.
updateLCD() 코드 2
코드 생성 마지막 단계: 아두이노 정상 함수 setup(), loop() 추가. 두 함수 코드:
setup() 코드
loop() 코드
마지막으로 코드 업로드. 아두이노 우노가 LCD에 날짜/시간 표시 시작.
마무리
RTC 모듈은 회로에 시간 유지 기능 추가하는 저렴하고 간단한 방법. 보여드린 건 표면만 긁은 것. 더 만져보면 이 모듈로 재미있는 많은 다른 용도 발견하실 겁니다.
시장에서 DS3231 못 구하면 DS12C997, DS1307도 훌륭한 대안. 위 아두이노 프로젝트에서 시리얼 모니터로 프로젝트 날짜/시간 수정 가능. 'U' 글자 입력 후 프롬프트 따르면 됨. 이 글 마무리. 질문 있으시면 연락 주세요. 기꺼이 도와드리겠습니다.