티스토리 뷰

반응형

안녕하세요. 09Labs입니다.


<그림 1-1 : 한글시계>


첫 아두이노 프로젝트로 한글시계를 선택했습니다. 한글시계는 '이호민'씨가 원작자로 5x5 매트릭스를 사용한

시계였습니다. 구조는 간단하지만 전자공학을 모르는 분들께서는 만들기 굉장히 힘든 구조였으며, 무엇보다

LED 매트릭스를 사용한다는 점에서 단순히 아두이노를 가지고 만들기에는 어려움이 있었습니다.


<그림 1-2 : LED>

LED를 켜기 위해서는 애노드와 캐소드에 각각 + 전극과 - 전극을 인가해야합니다.

그렇다면 LED 매트릭스는 어떻게 작동시키며, 5x5 매트릭스가 아니라 10x10 매트릭스는 어떻게 구동해야 할까요?


<그림 1-3 : 8x8 도트매트릭스의 구조>


저도 맨 처음 전자전기공학부에 입학하여 위의 사진을 봤을 땐 전혀 이해가 안갔습니다. 

64개의 LED를 제어하려고 하면 일반적으론 64개의 핀을 사용한다고 생각했지만 여기엔 16개의 핀이

존재했습니다. 저는 개인적으로 Try & Error라는 말을 굉장히 좋아합니다. 그래서 LED가 켜지는 핀을 

체크한 결과 작동원리는 다음과 같았습니다.


<그림 1-4 : 도트매트릭스 작동법>


2행 2열 LED와 4행 3열 LED를 켜는 방법입니다. 2행 2열을 켜기 위해서는 1번 핀에 Vcc를 3번 핀에 GND를

 인가하면됩니다. 4행 3열 LED를 켜기 위해선 2번, 4번 핀에 Vcc, GND를 인가하면 켜집니다. 그렇다면

이 두개의 LED를 동시에 켜려면 어떻게 해야할까요?


만약 1번, 2번에 Vcc를, 3번, 4번에 GND를 동시에 인가할 경우 4개의 LED가 켜지게 됩니다.

정답은 마이크로 컨트롤러의 핀에 4개의 핀을 연결하고 1번 핀에 HIGH, 3번 핀에 LOW를 인가하고

다음 순서에 2번 핀에 HIGH, 4번 핀에 LOW를 인가하면 됩니다. 아두이노 코드로 정리하면 다음과 같습니다.


서론이 길었지요? 제가 6x6 한글시계를 제작하게 된 계기는 정말 단순합니다.

그냥 장난으로 시작했습니다.

동아리 후배한테 정말 이렇게 말했습니다.

"00아, 우리 장난으로 한글시계 만들어볼래?"

이것저것 따지고 준비하다보니 동아리 내에서 크라우드 펀딩을 진행하게 되었고

10개를 주문받고, 동아리 지원금으로 총 25개 분량 제작을 할 수 있도록 지원받았습니다.

지금은 양산단계에 있으며 조만간 MDF가공을 들어갈 예정입니다.


6x6 한글시계는 다음과 같습니다.


<그림 1-5 : 6x6 한글시계>


기존의 한글시계 단점은 5분단위로 표시하기 때문에 현재 시간을 정확히 알 수 없다는 점이었는데요,

저는 6x6으로 배치하여 1분 단위로 시간을 파악할 수 있도록 제작했습니다. 근데 문제는 3칸이 비어버린다는 점인데요

보통 자정과 초를 넣어 마무리하는 경우가 많았습니다. 저는 개인적으로 오전, 오후가 있다는 점에서 자정이라는 단어는

필요없다고 느꼈고, 초는 깜빡이는 것으로 처리하기 때문에 따로 문구를 넣기로 했습니다.

그럼 한글시계 작동방법에 대해 알아볼까요?


저는 제작의 편리성을 위하여 네오픽셀을 선택했습니다.  물론 저렴하게 하는 방법은 많습니다.

고휘도 5파이 LED를 쓰는것도 한 가지 방법이며 5050 3색 칩 LED를 사용해도 됩니다. 다만

도트매트릭스와 같이 구성을 해야하며 회로가 다소 복잡해진다는 단점이 있습니다. 


<그림 1-6 : 3색 칩 LED>


먼저 칩 LED를 사용할 경우 단색으로 사용한다고 가정하면, 총 36개의 LED를 켜야 하므로

최대 30mA * 36 = 1080mA = 1.08A의 전류를 소모합니다.

물론 시계이기 때문에 가장 많이 켜지는 경우를 가정한다면 9개까지 켜지므로

최대 30mA * 9 = 270mA = 0.27mA입니다. 270mA라면 아두이노 내부전원을 사용해도 충분히 버티는 전류입니다.

그럼 3색을 사용하는 경우를 가정해볼까요?


색 하나당 20mA를 소비하는 LED라고 가정한다면 3색이므로 최대 60mA를 소비합니다.

60mA * 36 = 2160mA = 2.16A이므로 아두이노 내부전력으로는 턱없이 부족합니다. 강제로 LED가 전류를 끌어다 쓰면

아두이노 전원관리 칩이 망가질 수도 있는 전류수치입니다. 

다시 최대 사용하는 LED가 9개라고 계산을 해보면

60mA * 9 = 540mA입니다. 540mA도 아두이노 내부 소비전류를 감안하더라도 충분한 수치입니다.



<그림 1-7 : 네오픽셀 (WS2812B)>


네오픽셀 LED는 LED 내부에 아주 작은 마이크로 컨트롤러가 내장된 LED입니다. 일반적인 LED는 애노드와 캐소드

두 개만 존재하지만 네오픽셀 LED는 Vdd, Vss, DIN, DOUT 총 4개의 단자가 존재합니다. 6핀짜리 LED도 있고

4핀짜리 LED도 있지만 동작방법은 동일합니다.


<그림 1-8 : 네오픽셀 동작방법>


아두이노에는 네오픽셀 라이브러리가 있지만 만약에 생판 처음보는 마이크로 컨트롤러로 다뤄야 한다면 데이터시트를 보고

동작시켜야합니다. 총 24비트로 동작하는 네오픽셀은 상위 8비트는 G, 하위 8비트는 B, 중간 8비트는 R을 켜기위한 코드이며

시퀀스차트에 따르면 HIGH를 0.35us, LOW를 0.8us로 인가할 경우 0이라고 인식하며 HIGH를 0.7us, LOW를 0.6us동안

인가하면 1이라고 인식합니다. 예를들어 R, G, B 각각 10의 밝기로 켜고싶다면 

000010100000101000001010라는 한 주기의 신호를 만들어 줘야 하며 시퀀스 차트에 따라서 동작시켜야 합니다.

물론 데이터시트만 보고 판단하기는 어렵습니다. 그래서 오실로스코프를 사용하는 것이기도 하지요. 


네, 위의 내용은 까먹으셔도 됩니다. 왜냐구요? 아두이노 라이브러리가 있기 때문에 알 필요가 없습니다. 그냥 참고하라는 겁니다 ㅎㅎ


<그림 1-9 : 한글시계 작동방법>


자 이제 진짜 한글시계 작동방법입니다. 예를 들어 현재 시간이 오전 6시 1분이라고 가정하면 24시간 체계에서는 

06:01:00 이런식으로 표기하겠죠? 시, 분, 초를 나누어 초는 단순히 깜빡이는 용도로, 시와 분은 1분, 1시간마다

변하게 설정했습니다. 네오픽셀로 켜야 한다면 총 36개의 네오픽셀 중 0번, 1번, 12번, 13번, 20번, 34번, 35번

그리고 초는 3, 4, 5번 이 켜져야겠죠? 만약에 도트매트릭스처럼 구현했다면


0b110000

0b000000

0b110000

0b001000

0b000000

0b000011


총 6개의 신호를 제어해야합니다. 비교적 제어가 간단한 네오픽셀은 한글시계뿐만 아니라 다양한 곳에 사용됩니다.

요즘은 네오픽셀 가격이 많이 내려간 편이지만 여전히 개당 200원 이상 하는 고가의 LED에 속합니다.


마지막으로 RTC 모듈에 대해 알아보겠습니다.


<그림 1-10 : Real Time Clock Module>


RTC(Real Time Clock)이라는 모듈은 설정된 시간을 기준으로 시간을 세는 카운터라고 볼 수 있습니다만

저전력에다가 내장메모리가 존재하여 날짜와 시간, 요일까지 모두 저장할 수 있으며, 모듈마다 동작법은 다르지만

I2C 또는 SPI통신으로 데이터를 송수신할 수 있습니다. 그렇다면 RTC모듈을 왜 사용할까요?

아두이노로도 충분히 타이머를 구현할 수 있는데 말이죠. 값싼 타이머로도 구현할 수 있을것입니다.

아두이노나 카운터와 같은 칩은 전원을 꺼버리면 동작을 안합니다. 간혹 전자시계중에서 벽에 걸어두는 방식인

FND 세그먼트 시계를 볼 수 있을 것입니다. 이러한 시계 내부에도 RTC가 내장되어있기 때문에 전원을 뽑았다가

꽂아도 다시 정상적인 시간을 표시해주는 것이지요. 즉, 전원이 꺼진 상태에서도 동작한다는 장점이 있습니다.

일반적으로 DS1302, DS1307과 같은 칩을 많이 사용합니다. 칩 하나, 크리스털 하나, 배터리 하나 총 3개의 부품이

있으면 동작시킬 수 있기 때문에 칩을 따로 구매하여 사용하기도 합니다. 


대충 한글시계가 어떻게 작동하는 원리인지 이해하셨나요?

다음 강좌에서는 회로도 및 소스코드에 대해 알아보도록 하겠습니다.

감사합니다.

반응형

'Arduino > Arduino 프로젝트' 카테고리의 다른 글

[아두이노 프로젝트] 한글시계 6x6 - 2편  (2) 2017.05.24
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함