티스토리 뷰

반응형

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

제가 다니고 있는 학교에 축제가 있어 한글시계 판매때문에 굉장히 바쁜 한 주였습니다.

오늘은 회로도 분석을 해보도록 하겠습니다.


우선 회로도를 작성하는 툴에는 굉장히 여러가지가 있습니다.



제가 맨 처음 배웠던 툴은 OrCAD인데요, Schematic 회로도, Artwork, 회로테스트를 모두 할 수 있는 툴이기 때문에

굉장히 편하게 사용할 수 있는 툴입니다. 심지어 아두이노나 ARM, AVR등 다양한 라이브러리를 추가한 뒤 사용하고자

하는 모듈을 불러와 신호 입/출력 테스트 또한 할 수 있기 때문에 굉장히 강력한 툴이라고 생각됩니다.

저는 대학교 2학년까지 마치고 군대를 갔었기 때문에 이 툴은 실질적으로 잘 활용하지 못했습니다.




다음은 EagleCAD입니다. 최근 Autodesk사에서 인수하여 Autodesk사 홈페이지에서 받을 수 있는 것을 볼 수

있습니다. 원래 라이센스를 구입하지 않고도 무료로 사용할 수 있지만 Artwork을 할 수 있는 사이즈가

제한되어있기 때문에 큰 기판은 작업할 수 없다는 단점이 있습니다. 물론 Autodesk사에서는 학생버전을 제공하기

때문에 저는 무료로 사용할 수 있었습니다.




세 번째는 KiCAD입니다. 선배가 알려줘서 배운 툴인데요, 유튜브에도 한글 강좌가 있기 때문에 단시간에

빠르게 작업할 수 있었습니다. KiCAD는 EagleCAD의 스크립트를 사용하여 EagleCAD에서 제공하는

라이브러리를 변환하여 KiCAD에서도 사용할 수 있다는 장점이 있습니다. EagleCAD보다는 Parts의 개수가

적기 때문에 일부 부품은 직접 디자인하여 사용해야 하지만 크게 어렵지는 않습니다. Github에도 다양한

라이브러리를 제공하기 때문에 다운받아서 바로바로 사용이 가능합니다. 저는 주로 부품이 없으면 Datasheet를

보고 직접 Footprint와 Schematic Symbol을 만들어서 사용했었습니다. 최근 작업한 한글시계 Artwork도

KiCAD로 작업했으며, 여태까지 제작했던 Artwork 또한 KiCAD로 작업했습니다. 모두 정상작동했구요.



그래서 저는 개인적으로 EagleCAD나 KiCAD를 추천드리고 싶습니다만 실무에서는 PADS나 MultiSIM을

많이 사용한다고 하니 실무 위주로 할 것이라면 위의 툴을 배우는게 좋겠죠? 마지막으로 소개 해드릴

툴은 Autodesk Circuit입니다. 대부분 아두이노를 사용하는 분들이라면 회로도를 그릴 때 Fritzing을

사용하는 것으로 알고 있습니다. Circuit은 Fritzing과 비슷한 인터페이스를 제공하며 특히 아두이노가

없어도 모듈이 프로그램에 내장되어있으면 단순히 드래그&드롭하여 아두이노 코드를 테스트 해볼 수

있다는 장점이 있습니다.


결론부터 말씀드리자면 쉽게 쉽게 회로를 그리고 싶으시면 Circuit과 Fritzing, 조금 난이도가 있는 툴을 원히시먼 

EagleCAD나 KiCAD를 사용하시면 될 것같습니다. 



자 이제 본격적으로 한글시계 회로도에 대해 알아볼까요?

위의 회로도는 한글시계 Schematic회로입니다. 단순히 Symbol로 표기된 회로도이며, Arduino Nano나

DS1302와 같은 칩을 장착하는 부분은 Pin Header Socket으로 처리하였습니다. 먼저 네오픽셀 회로를 살펴보겠습니다.


제가 한글시계 PCB를 제작할 때 네오픽셀 Strip과 네오픽셀 칩인 WS2812B를 둘 다 사용할 수 있도록 디자인했습니다.

네오픽셀 Strip은 3Pin 커넥터를 사용하여 연결하기 때문에 아래에서 설명드리도록 하겠습니다.

WS2812B는 총 4개의 핀으로 구성되어있습니다. 저번 강의때 소개드렸지만 다시 핀 구성을 보여드리겠습니다.


1번 핀은 VCC, 즉 전원의 (+)단자를 연결하는 핀입니다. 3번 핀은 VSS라고 적혀있으며 전원의 (-)단자인

GND를 연결하는 부분입니다. 4번은 DIN핀으로 첫 번째 네오픽셀은 아두이노의 디지털핀과 연결하며,

DOUT단자는 다음 네오픽셀의 DIN에 연결하는 부분입니다. 즉 연결은 다음과 같이 하게됩니다.


아두이노 디지털핀 -> 1번 WS2812B DIN

1번 WS2812B DOUT -> 2번 WS2812B DIN

2번 WS2812B DOUT -> 3번 WS2812B DIN

3번 WS2812B DOUT -> 4번 WS2812B DIN

.

.

.

34번 WS2812B DOUT -> 35번 WS2812B DIN

35번 WS2812B DOUT -> 36번 WS2812B DIN


Schematic회로를 보면 VDD와 GND사이에 무극성 커패시터를 하나씩 장착해두었는데 이는 바이패스 회로로

전원을 안정적으로 공급해주는 역할을 하게 됩니다. 무극성 커패시터는 세라믹 커패시터를 사용했으며, DIP 타입

커패시터를 사용하게 되면 공간을 많이 차지하게 되므로 0805(2012)사이즈 칩세라믹 커패시터 100nF을 사용했습니다.


WS2812B의 VDD는 5VA랑 연결이 되어있는데 이는 전원 입력부를 보면 알 수 있습니다.



이 회로는 전원부 회로도입니다. 저는 아두이노 내부전원을 사용하지 않고 외부전원의 VCC를 네오픽셀의

VDD와 연결하고, 아두이노의 VIN핀에 외부전원의 VCC를 연결하였습니다. 네오픽셀의 VDD를 아두이노의 5V핀과

연결하지 않은 이유는 아두이노 나노에 내장된 정전압 레귤레이터 때문입니다.

아두이노 나노를 뒤집어보면 위에 파란색으로 동그라미친 부분의 칩이 달려있는 것을 볼 수 있습니다.

이 칩은 AMS1117-5.0 또는 LM1117-5.0이라고 불리는 칩입니다. 정전압 레귤레이터라고 불리는데요

입력 전압을 5V 출력으로 균일하게 내보냅니다. 이 칩은 800mA로 전류가 제한되어있기 때문에

아두이노의 VIN단자로 5V 2A짜리 충전기를 연결해도 아두이노의 5V핀에서는 800mA의 전류만

나오게 됩니다. 그러면 네오픽셀이 800mA이상의 전류를 요구할 땐 아두이노의 전원이 불안하여 

정상적으로 동작을 하지 않을수도 있습니다. 어짜피 저는 한글시계를 제작할 때 USB Micro 5Pin

케이블(안드로이드 케이블)을 사용하기 때문에 5V를 입력받을 수 있다고 판단하여 USB VCC단자를

아두이노의 VIN단자와 네오픽셀의 VDD에 연결한 것입니다.


위의 회로도는 아두이노, DS1302, 네오픽셀 Strip을 연결할 3핀 터미널의 Symbol을 나타낸 회로입니다. 

오른쪽의 5개 핀은 신경쓰지 않아도 됩니다. PCB를 고정할 서포트를 장착할 구멍이기 때문입니다.

먼저 좌측 NANO_1 핀헤더를 살펴보면 DIN부터 RST까지 무언가가 연결되어있습니다.

DIN은 아두이노의 디지털 5번 핀과 연결되어있습니다. 즉 디지털 5번부터 11번까지 스위치, 네오픽셀, DS1302칩을

연결할 핀입니다. 먼저 스위치 회로부터 살펴볼까요?


스위치는 아두이노의 디지털 6,7,8번 핀에 연결됩니다. 그럼 스위치의 한쪽 핀은 디지털 핀에 연결되어있지만 

양단에 알 수 없는 회로로 구성되어있습니다. 왜 저항과 Vcc, GND를 연결한 것일까요?


정답은 풀업/풀다운 회로에 있습니다. 위의 회로를 보면 OUTPUT 노드를 기준으로 위/아래로 저항과 스위치가

연결되어있습니다. 좌측은 PULL-DOWN / 우측은 PULL-UP 회로입니다. 스위치가 끊어져있을 땐 풀 다운 저항은

OUTPUT에 0이 입력되고, 풀 업 저항은 OUTPUT에서 1이 입력됩니다. 즉 초기상태를 정의하는 것인데요, 풀 업/다운

저항을 구성하지 않고 스위치를 연결하면 플로팅(Floating)상태가 되어버립니다. 플로팅이란 붕 떠있다는 것을 의미합니다.

1도 아니고 0도 아닌 상태이죠. 5V로 동작하는 MCU를 가정해봅시다.



디지털 회로에서 HIGH (1)을 의미하는 것은 2V ~ 5V사이 전압을 의미합니다.

반대로 디지털 회로에서 LOW를 의미하는 것은 0 ~ 0.8V 사이 전압을 의미합니다.

플로팅 상태는 0.8V ~ 2V사이 전압을 의미하기도 하며, 전압이 고정되지 않고 수시로 변동되어

일정한 상태를 유지하지 않는 상태를 의미합니다. 제가 원하는 것은 버튼을 눌렀을 때 HIGH STATE를 원하고

버튼을 누르지 않았을 때 LOW STATE를 원한다면 플로팅 상태가 절대 돼서는 안됩니다. 그래서 저는 풀 다운 회로를 

구성하여 초기 입력은 0을 유지하며, 버튼을 눌렀을 때 1이 입력되도록 회로를 구성하였습니다.

참고로 풀 업/다운 회로에 사용되는 저항은 10K옴을 많이 사용하여 10K옴으로 장착하였습니다.


다음은 DS1302 타이머 칩입니다. 제가 산 모델은 위와 같은 모델이며 아두이노와 연결할 때는 코드만 맞춰주면

되기 때문에 디지털핀 9, 10, 11번에 연결했습니다. 


마지막으로 위와 같은 Symbol을 확인할 수 있는데요, 위의 커넥터는 네오픽셀 Strip과 연결하기 위한 커넥터입니다.

저는 원래 Molex사의 5264(케이블)와 5267(보드)을 사용하려고 했으나 재고부족으로 5051(케이블)과 5045(보드)를 사용했습니다.

커넥터는 사용하고 싶은 것을 선택하여 사용하면 되며, 제가 깃허브에 공유해둔 파일에는 2.54mm 간격인 커넥터를 사용하기 때문에

5051이나 5264말고 다른 제품 중에서 2.54mm 간격인 제품을 사용하면 문제없습니다.



이제 마지막으로 PCB Artwork에 대해 알아보겠습니다. KiCAD에선 사용할 부품의 Footprint를 제공하기 때문에

선택해서 사용할 수 있습니다. 저는 핀헤더는 모두 2.54mm짜리를 사용했으며 WS2812B는 5050타입이기 때문에

WS2812에 맞는 Footprint를 사용했습니다. 위의 회로도는 앞, 뒷면 회로를 구리로 연결해 둔 모습이며 위의 파일을

추출하여 PCB제작업체에 맞기면 그대로 기판을 생산하여 받아볼 수 있습니다.


이 회로는 뒷면과 부품을 나타낸 화면이고요


이 회로는 앞면을 나타내는 회로입니다.


간혹 이렇게 글씨가 뒤집힌 경우를 볼 수 있는데요, 이는 기판 뒷면에 실크프린트를 입히기 위한 용도입니다.


오늘은 한글시계 회로도 및 PCB에 대해 알아봤는데요, 다소 어렵다고 느껴질 수 있지만 거의 대부분 기본적인

전자전기적인 지식만 있으면 충분히 이해할 수 있는 회로라고 생각합니다.

다음시간에는 한글시계 코드 분석에 대해 알아보겠습니다.


PS. 제 Github주소는 

https://www.github.com/09labs

입니다.


한글시계 회로도 파일과 아두이노 코드가 업로드 되어있으니 참고하실 분들은 참고하셔도 좋습니다.

감사합니다.

반응형

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

[아두이노 프로젝트] 한글시계 6x6 - 1편  (0) 2017.05.07
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함