본문 바로가기

AVR/AVR 기초, info

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

하나하나 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)가 높은 트랜지스터들을 찾아서 사용하면 됩니다..!!


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