AVR 하드웨어 주변회로 설계시 참고사항 정리 - AVR 기초

2013.01.30 12:54




현재 군 복무중인 상태입니다.

하나하나 AVR에 대해서 포스팅 하다 보니까 하드웨어(전자)에 대한 정보가 너무 부족한 것 같아서 AVR 설계시 필요한 정보에 대해서 요약 총 정리 합니다. - 이 포스팅은 계속 업데이트 됩니다. -


외부클럭 설계 참고사항


AVR은 이용 할 수 있는 클럭소스가 여러가지가 있는데요..

가장 먼저 1Mhz의 내부 클럭이 있습니다. 내부클럭을 사용 할 경우에는 크리스탈 외부클럭으로 사용 할 수 없었던 PORTA를 입출력 포트로 사용 할 수 있는 장점이 있으나 내부클럭이 RC발진회로로 구성되어 있기 때문에 안정성이 떨어집니다.

따라서 AVR에 외부클럭 회로를 구성해 주어야 하는데 회로는 다음처럼 구성합니다.


 설계시 참고 사항



AVR 칩 종류마다 다르지만 TINY2313의 경우에 모델명이 ATTINY2313-20PU라고 되있다면 외부클럭으로 최대로 입력 할수 있는 클럭은 20Mhz로 제한됩니다.

이 이상 입력은 가능하지만 안정성을 보장 할수 없습니다.

뒤에 사용가능한 클럭주파수 값이 적혀있지 않은 칩도 있는데요. ATTINY2313-PU 같은 경우 아무 값도 적혀있지않습니다. 이 경우에는 16Mhz 정도까지는 무리없이 사용가능합니다.


 외부클럭 설계 회로도

 

 


제가 설계했던 회로를 보면 항상 다음과 같은 부분이 있었습니다.

AVR핀 중에 XTAL1과 XTAL2가 외부 클럭소스를 입력받는 핀인데 회로는 다음처럼 

크리스탈 수정진동자를 사용해서 구성 할 수 있습니다.


또 한가지 의문점이 생길 텐데요.

아래 콘덴서 값은 어떻게 결정하느냐?











데이터 시트에 사용하는 크리스탈 주파수에 따라서 C1과 C2의 콘덴서 값이 명시되어 있습니다.

설계하는 AVR 칩의 데이터 시트를 확인해서 알맞은 값으로 연결하면됩니다.

이로서 외부클럭 설계는 모두 끝났는데 한가지 퓨즈비트 라는 컴퓨터 Bios 비슷한 설정을 건드려서,

내부1Mhz 클럭이 아닌 외부클럭 사용으로 변경 해주시면 외부클럭으로 AVR이 동작하도록 할 수 있습니다. 



리셋회로 설계 참고사항


리셋회로는 AVR에 Power_On_Reset이 내장되어 있는데요, 안전성 향상을 위해서 AVR의 외부 Reset핀에 저항과 콘덴서 또는 콘덴서만 가지고 리셋회로를 한번더 구성하고, 일정시간 Reset핀에 Low (0V)를 걸어서 투입 된 전원이 안정화 되면 AVR이 동작하도록 하는데 사용됩니다.

일단 기본적으로 AVR의 Reset핀에 50nS (나노초) 이상 Low (0V) 상태로 계속 있으면 AVR은 리셋이 됩니다.

요걸 참고해서 RC회로로 콘덴서를 저항으로 서서히 충전하도록해서 전원이 안정화 될 때까지 지연시키도록 설계합니다.


 리셋회로 설계 회로도


 


왼쪽 회로 처럼 Reset 핀에 설계하고 계산은

100K * 0.1uF(104) = 100mS 안에 콘덴서는 RC시정수에 의해서 콘덴서가 63.2% 충전됩니다.


이 때 100mS 안에 콘덴서 충전이 63.2% 되었으니 콘덴서에 충전된 전압도 63.2%로

AVR에 전원으로 5V가 입력되었으면

5V * 0.63 으로 3.15V가 Reset핀으로 입력되어서 리셋핀의 상태는 High (논리 5V)로 이제 부터는 프로그래밍 해두었던 동작들을 실행하게 됩니다.








입/출력 설계시 참고사항


이제 아주 기본적인 동작을 위한 회로의 구성을 끝냈으니 이제 내가 작동하고 싶은 회로를 I/O포트에 꾸밉니다.


 입출력 설계시 참고사항

AVR 에서 포트당 최대로 뽑아낼수 있는 전류 Max Current (파손전류)는 40mA 이고, 소스전류, 싱크전류 모두 20mA 정도선에서 안정적으로 사용 할 수 있습니다.

소스전류는 AVR에서 나가 GND로 흐를 수 있는 전류이고, 싱크전류는 밖에서 무언가를 동작시키고 AVR로 들어올수 있는 전류를 말합니다.


 

LED구동을 예제로 들겠습니다.

먼저 AVR 입출력포트의 고장을 막기 위해서 부하(동작시키고자 하는 것) 앞단에 저항이 필요한데요 

그 저항을 계산하기 위해서는 부하의 동작 스펙을 알아야 합니다. LED의 경우 일반적으로 대략 2.5V~3V 에 10mA 의 구동 스펙을 갖고 AVR에서 출력하는 전압은 5V ~ 6V입니다. 

따라서 (출력전압-부하전압) 해서 대략 2~3V 정도 나오는데요.

이 것으로 옴의 법칙에 대입해서 저항을 구합니다.

R(저항) = V(전압) / I(전류)

R = 3V / 0.01A 를 구하면 300옴이 나옵니다. 이 300옴을 부하 앞단에 연결하고 LED를 연결하면 됩니다.

이 회로도의 R1~R8도 같은 방법으로 계산해서 붙여줍니다.

(330옴은 가지고 있는 저항중에 근사치를 사용한 값입니다.)






 주의 : AVR 출력전압은 AVR이 공급받는 전압에 따라 달라집니다.

AVR은 3V ~ 6V 까지 공급받을 수 있습니다.


앞으로 모든 입출력에 대해서 다음과 같이 부하(사용하고자 하는 것)이 원하는 만큼만 흘려줄수 있는 전류 제한용 저항을 앞단에 붙이고, 그 다음 동작회로를 구성하면 됩니다.



입/출력 트랜지스터 대 전류 제어


앞에서 나왔듯이 AVR의 입/출력핀당 최대 40mA까지 전류출력이 제한됩니다.

이 이상 흐르면 AVR의 입/출력 핀이 고장이 나거나  AVR 전체가 작동하지 않을 수 있습니다.

그러면 릴레이나, 모터, 등의 대 전류(100mA ~ 1A) 까지 사용하는 것은 어떻게 제어 할까요?

이 때 트랜지스터의 특징 중에 하나인 증폭작용 (전류증폭)을 이용해서 AVR의 출력핀의 전류를

증폭시켜서 동작합니다. 


계산에 앞서서 사용하는 트랜지스터의 특성을 알아둡니다.

IC(컬렉터전류) - 트랜지스터가 컬렉터-이미터 간에 최대로 흘려줄수 있는 전류입니다.

hFE(증폭도) - 컬렉터 전류가 베이스 전류 * 증폭도로 증폭되어 흐릅니다.

VCE(컬렉터-이미터 전압) - 컬렉터와 이미터 사이에서 걸릴수 있는 최대 전압입니다.

간단하게 요정도만 알면되겠네요. 

그럼 이제 실제 사용하고자 하는 트랜지스터 2SC1815의 특성

IC = 150mA, hFE = 100배,  VCE = 50V 로 무난한 스펙입니다.

동작을 원하는 가상의 부하는 3V 80mA를 사용하는 걸로 합니다.


STEP 1

먼저 베이스에 흘러야될 전류를 구하기 위해서 컬렉터 전류를 적당히 잡고, 잡은 것을 증폭도로 나눠줍니다. 일단 컬렉터전류를 계산이 쉽게 100mA로 잡고, 증폭도인 100배로 나눠서 

100mA / 100 = 1mA가 나왔습니다. 

이 값은 베이스에서 1mA가 흐르면 컬렉터는 100mA가 흐르는 것을 의미합니다.


STEP 2

다음은 베이스에 1mA만을 흘리기 위한 계산 과정입니다.

여기서도 옴의 법칙을 이용하는데요. 저항을 구하기 위해서는 전압이 필요하겠군요..

먼저 트랜지스터의 특성인데 (베이스와 이미터) 간에 0.7V가 걸립니다.(변하지 않습니다.)

그 다음 AVR에서 출력시에는 5V가 출력됩니다.

이 것으로 AVR 출력에서부터 시작해서 베이스에서 이미터까지 걸리는 전압을 구할수 있습니다.

베이스 전압 (VB) = 입력전압 - 0.7V 로 구합니다.

베이스 전압을 구했으니 이제 저항을 구할 수 있겠군요.

베이스에 전압은 4.3V 이고, 전류는 1mA 만을 흘리기를 원합니다.

이 값을 옴의 법칙에 대입하면 R(저항) = V(전압) / I(전류) 

{ 4.3K(R3) = 4.3V / 0.001A } 4.3K옴이 구해지는 군요. 

이 저항을 사용하거나, 근사치인 저항을 사용합니다.


STEP 3

이제 베이스의 1mA 전류 입력으로 인해서 컬렉터전류(IC)는 100mA까지 사용이 가능해졌습니다.

그런데 부하는 3V 80mA만을 흘려야 하네요

이 때 컬렉터에 들어오는 전압 VCC가 5V라면 저항에서 걸려야 하는 전압이 2V가 됩니다.

그러면 이 값을 옴의 법칙에 대입해줍니다.

R(저항) = V(전압) / I(전류) { 25(R2) = 2V / 0.08A } 25옴이 계산되었습니다.

이 계산된 저항값도 JIS 표준 저항 근사치인 22옴이나 27옴 정도 사용하면 됩니다.


이제 계산이 모두 끝났습니다.. 다음부터 자유롭게 설계하도록 합니다.^^ AVR의 세계로....

2SC1815는 최대 컬렉터전류(IC)가 150mA 까지밖에 못흘립니다.

그럼 1A를 제어 하고 싶은데 어떻게 할까요? 트랜지스터들 중에 컬렉터전류(IC)가 높은 트랜지스터들을 찾아서 사용하면 됩니다..!!


오류가 있거나 계산이 잘못되었으면 댓글 알림 부탁드립니다.

BinGoon AVR/AVR 기초, info , , , , ,

  1. Blog Icon
    송해피

    고맙습니다
    덕분에 궁굼증이 많이 해결됐습니다
    건강하시고 행복한 새해보내세요
    오픈마인드와 힘들텐데 글을 자세히 남겨줘서
    다시한번 감사합니다
    복받으십시요

  2. 도움이 되셨다니 기쁩니다. ^^ 자주 찾아주세요.ㅎ
    새해 복 많이 받으세요....!!^^

  3. Blog Icon
    송해피

    감사합니다
    덕분에 많은 궁금증이 해결됐습니다
    건강하시고 행복한 삶이 되길 빌겠습니다 님의
    오픈마인드와 힘들텐데 글남김으로
    다시한번 감사의 맘을 전합니다

  4. 다음에도 방문해주세요.^^ 댓글 달아주셔서 감사드립니다.^
    송해피님과 같은 분들이 있어서 글쓰는게 유지되는 걸지도 모르겠네요. ㅎㅎ

  5. Blog Icon
    김씌

    블로그를 뒤져보니 이런 유용한 글도 있엇네요
    감사합니다!

  6. 제가 더 감사드립니다.^ 꾸준한 방문자 중에 한분이셔요.!!^

  7. Blog Icon
    Mr.도리

    제가 낸 의견이 반영된 part인 듯하네요.
    정말 이렇게 자세히 적어주셔서 감사합니다.
    제가 체계적인 과정으로 공부한 것이아니라 jump한거라..
    몰랐던 부분을 알게되고 참 언제나 포스팅보지만 설명잘되어있어서 좋아요.
    Reset part에서 AVR에서 Reset을 5ns이상시 작동한다고 하면서 Reset계산식 보면
    100k X 0.1uF = 5ns라고 했는데 RC정수에 의해 63.2%전하가 충전된다고 했는데..
    이부분이 이해가 안가네요 왜그런건지..ㅜㅜ
    콘덴서에 대해서 잘몰라서 제가 이해 못한건가요 ㅜㅜ? 콘덴서 두 도체사이에 반도체(Si같은거)를 설치함으로서 두 도체사이에 전하를 모으는 정도..밖에-0-

    ps.늦었지만 새해복 많이받으세요!!

  8. Mr.도리 님도 새해복 많이받으세요^
    RC값을 그냥 곱했을때 나오는 주기 5mS는 콘덴서가 63.2%충전되는 시간이고 거의 만충에 가까워 지려면 이 값에 구해진 RC값에 곱하기 5하면 거의 99% 충전 되는걸 정리된 문서에서 봤었습니다^
    자료정리중인데 자잘한파일 많은게 더힘드네요 ㄷㄷ!!
    수식이 이랬던것같아요
    t(타우) 63.2% = RC
    5t(타우) 99% = 5RC
    그리고 AVR시리즈에는 기본적으로 내부에 전원 투입시에 리셋이 일어나는데요.!
    별도로 안전성을 높이기 위해서 좀 여유시간을 준게 주로 100k * 0.1uF 정도 사용하시더라구요

  9. 계산착오가 있었습니다.
    5mS가 아니라 100mS가 나오네요.^
    이제서야 이해하다니... 틀린 정보를 알려드려 죄송합니다.

  10. 이건 정말 최고의 글, 설명입니다. 교과서보다 더 자세히 설명해주셨네요.

    좋은글 감사드립니다. ^_^

  11. 극찬 감사드립니다. ㅎㅎ
    댓글에 열심히 하게 되는 BinGoon입니다.^
    티스토리 블로거 분들이 댓글다는 경우가 별로 없었는데
    요즘은 몇 있네요 .ㅎㅎ 이웃이 되었으면 좋겠어요.

  12. Blog Icon
    물속고기

    전기전공했는데 전기와 전자회로는 천지차이네요.
    뭐가뭔지 완전 딴세계고 전기유접점은 부피가 크고 좀 쉽게 제어할수 있었는데
    소형화 할려고 전자쪽에 뛰어드니 신세계에 접한 느낌입니다.
    님의 휼륭한 설명을 앞으로 이해할수 있었으면 좋겠습니다..
    멋진 강의입니다.

  13. 안녕하세요.^
    끝맽는 칭찬은 감사드립니다.^
    전기 하시는 분이시라면 AVR도 배우지 않나요?..제가 잘못 알고 있는 것인가요.. 그리고 아마 전기와 전자는 거리차이가 얼마 나지않는 가까운 거리에 있는 공학인 만큼 이해하는데는 쉬울것 같습니다.
    저도 전기기능사 준비하려고 하는데 어렵지는 않겠지요.?ㅎ

    저도 끝맽음으로 블로그에 방문해 주셔서 감사드립니다.^

  14. Blog Icon
    모대학생

    저는 4년제 모 국립대학교에 재학중인 학생입니다.
    원래부터 다니던 학생은 아니고, 이번에 3학년으로 편입을 했습니다.
    헌데 편입생이라 그런지 제가 배우지 못했던 이론과 실기들이 대부분이라 매우 애를 먹는 중이랍니다.
    지금 보고서를 작성하고 있는 중인데,
    제가 실험을 통해서 알지 못했던 많은 부분들을 배워가고 또 참고하고 있습니다.
    학력과 나이가 중요한 것이 아니란 것을 다시 한번 깨닫고갑니다.
    좋은 정보, 많은 도움 받고갑니다. 원래 이런 글은 잘 남기지 않지만, 감사해서 남기고갑니다.

  15. 부족한 글에 댓글달아주셔서 감사드립니다.^
    이 글이 생각보다 내용이 괜찮았나봐요?^
    댓글이 다른 글보다 많은것 같습니다.^
    앞으로 이 보다 더 좋은 글을 쓰도록 노력하겠습니다.^

  16. Blog Icon
    모대학생

    컬렉터 전류가 100mA가 출력되는데 컬렉터저항을 구하실땐 왜80mA를 쓰셧는지 궁금합니다.

  17. 트랜지스터는 베이스 전류에 따라 컬렉터로 흐르는 전류의 값이 변동되는 특성을 지녔는데요 이것을 IC/IB로 나타냅니다. 2SC1815의 경우 이 값(hFE)가 100배 이고 이말은 즉 베이스에 1mA를 흘리면 컬렉터는 100mA까지 흐를수 있다는 말이고, 최종적으로 구동하고자 하는 모터, 릴레이등의 사용전류를 80mA로 가정했을때 트랜지스터에 베이스전류를 제한해서 최대로 흘릴수 있는 전류인 100mA이상 초과 하여 트랜지스터에 과부하가 걸리지 않게 하기 위해서 컬렉터의 부하 앞단에 계산된 저항을 연결하여 줍니다.
    덧글 감사드립니다^^

  18. Blog Icon
    범준빠

    안녕하세요.
    저는 17년차 하드웨어 엔지니어입니다. 우연히 웹서핑하다 들어와 보게 되었습니다.
    아직 어린 학생이신것 같은데 열심히 잘 하시고 계시는 것같습니다.
    자료 정리도 좋고 재미있는 여러 시도도 해보시는 것같구요.
    질문한 글에 답변도 열심히 잘달아 주시고 그러면서 공부도 많이 될것 같습니다.
    참 칭찬해 드리고 싶은 부분이 많네요.
    앞으로도 재미있게 열심히 공부하시구 응원하겠습니다. 화이팅~

  19. 감사합니다.^ ㅎ
    이런 칭찬 좋아요!! ^ 부족한 부분이 많지만 열심히 하겠습니다.^
    앞으로도 자주 찾아주세요.^

  20. Blog Icon
    모대학생

    아하 답변 감사합니다! 대단하시네요 ㄷㄷ

  21. 다시 방문해 주셔서 감사드립니다^
    또 찾아주세요^

  22. Blog Icon
    너구리

    님의 오픈마인드 배워야겟습니다. 잘보고 갑니다. 자주 들릴께요. ^(^

  23. 감사드립니다^ 더 더욱 열심히 하는 모습 보이겠습니다.^
    또 찾아주세요 :-)

  24. Blog Icon
    늦깍이AVR

    저는 인문학을 전공했습니다만, 반은 필요에 의해 반은 재미에 AVR공부를 하고 있는 사람입니다. 예상하시다시피 기초가 부족하여 한 줄 이해하는데 많은 어려움을 겪고 있습니다.
    AVR 타이어/카운터에 관한 글을 찾다가 여기까지 왔네요.
    정리가 무척 잘 되어 있고, 저 같은 문외한도 이해하기가 매우 쉽습니다.
    매우 감사합니다.
    그리고, 알고 계시겠지만 현재 Atmel Studio 6가 Atmel사이트에서 다운로드 가능합니다.
    WinAVr이나 기타 다른 버전을 쓰지 못했고, 처음 시작이 AVR Studio5라서 코드비젼이나 다른 것을 기본으로 설명한 것을 보면 약간 어려움이 있습니다. 이런 점도 살펴 주셨으면 합니다.^^

  25. 안녕하세요. 먼저 알기 쉽게 설명되었다고 하니, 기분이 좋습니다.^
    그리고 아래에 질문주신 AVR Studio6, 5로 버전업이 되었는데요.
    제가 지금 사용하고 있는 컴퓨터가 오래된 것이다 보니 AVR Studio6이나 5는 너무 무거워서 Studio를 돌리면 다른 프로그램을 돌릴수 없는 상황에 와서 현재는 더 내용을 보충하기가 힘들것 같습니다.
    가능한 한 최신 버전에 대한 내용도 추가하도록 노력해 보겠습니다.^
    찾아주셔서 감사드려요.^

  26. Blog Icon
    ky.y

    수능은 잘 보셨는지??
    이 길로 쭉~~~~
    수능이 필요 없겠네요^^
    감사합니다..

  27. 안녕하세요.^
    저는 수능은 안봤답니다.^^
    아마 이쪽으로 일을 하면서 공부를 계속하게 될것 같아요.~

  28. Blog Icon
    halashow

    좋은글 감사합니다.

  29. ㅎㅎ 덧글 감사드립니다^^

  30. Blog Icon
    oym

    좋은글 잘 읽고 갑니다 ^^

  31. Blog Icon
    softcard

    TR회로 설계의 절차로서 기본설계가 완성된 후에 각 부품의 값을 구하는 수순이 되겠습니다.

  32. Blog Icon
    에르키스틴

    트랜지스터 증폭 설계를 이렇게 쉽게 설명한 글은 처음 봤습니다 ㅎㅎ 덕분에 몇년동안 답답했던 부분이 뻥뚫린 기분입니다

  33. Blog Icon
    잭바우어

    좋은 내용 감사합니다.

티스토리 툴바