레이블이 기준전압인 게시물을 표시합니다. 모든 게시물 표시
레이블이 기준전압인 게시물을 표시합니다. 모든 게시물 표시

2015년 5월 22일 금요일

아두이노의 아날로그 핀을 디지털 핀으로 사용하기

 대부분의 아두이노에서 사용되는 ATmega 계열의 마이크로콘트롤러는 아날로그 입력을 받을 수 있는 A/D변환 핀이 있는데 A0, A1, A2, .. 와 같이 이름이 붙어 있다.  이 핀들은 일반적인 디지털 핀으로도 사용할 수 있다. 따라서 아두이노에서 사용자가 디지털 핀의 수가 부족해서 더 필요하다면 아날로그 핀을 디지털 핀으로 사용할 수 있다, 아래 그림에서 보듯이 아두이노 우노의 경우 A0 부터 A5 까지 6개의 아날로그핀이 있다


[그림 1] 아두이노의 아날로그 핀들

만약 A0핀을 디지털 출력핀으로 사용하고 싶다면 다음과 같이 A0 상수를 이용하여 pinMode()함수를 호출한다.

pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH); 혹은  digitalWrite(A0, LOW);

다른 예로 A1핀을 디지털 입력핀으로 사용하고 싶다면 A1상수를 이용하면 된다. 입력으로 설정할 때 내부 풀업 저항도 연결할 수 있다.

pinMode(A1, INPUT);
pinMode(A1, INPUT_PULLUP);

그리고 digitalRead() 함수를 똑같이 사용할 수 있다.

int ia = digitalRead(A1);

이전 포스트에서 설명한 것 처럼 A0핀은 디지털 14번 핀으로 사용되는 것이다, A1은 15번 핀이고 A5는 19번 핀이다.

 만약 디지털 핀이 부족하다면 이와 같은 방법으로 아날로그 핀도 디지털 핀과 똑같이 사용할 수 있다.


아두이노의 아날로그 핀 기준 전압 설정

 아날로그핀에 연결된 ADC의 기준 전압을 바꿀 수 있는데  analogReference() 함수를 이용하면 된다.

ananlogReference(type)
 
ADC 기준 전압은 아날로그 입력값이 1023로 읽히는 최대 전압 값을 의미하며 이 전압값을 설정해 주는 함수이다. 우노의 경우 따로 설정해 주지 않으면 5V이지만 이 함수를 이용하여 다른 값을 설정해 줄 수 있다. type의 종류는 다음과 같다.

  • DEFAULT : 아두이노의 동작 전압(우노는 5V 이고 보드에 따라서 3.3V일 수 있다.)
  • INTERNAL : 내장 전압 (우노는 1.1V)
  • EXTERNAL : AREF핀에 인가된 전압 (0~ 5V 사이어야 됨)
  • INTERNAL1V1 : 내장된 1.1V (Arduino Mega에서만 사용된다.)
  • INTERNAL2V56 : 내장 2.56V (Arduino Mega 에서만 사용됨)

아두이노 우노와 관련된 옵션은 DAFAULT, INTERNAL, EXTERNAL 세 개 이며 별도로 설정하지 않는다면 기본적으로 DEFAULT가 사용된다.

 만약 INTERNAL로 설정하면 기준 전압이 1.1V이므로 기본 모드보다 더 높은 분해능(0.0011V)을 얻을 수 있으며 약 4.5배(=5/1.1)의 증폭효과가 있다.

 만약 3.3V를 기준 전압으로 사용하고 싶다면 우노 보드상의 3.3V핀과 AREF 핀을 결선한 후 EXTERNAL 옵션을 설정하면 된다. (다음 그림 참조) 이 경우 분해능은 0.0032V 이고 5V를 기준 전압으로 사용하는 경우 대비 약 1.5배의 증폭 효과가 있다. 아두이노 우노의 3.3V 핀은 외부 전원(7V~12V)을 연결한 경우뿐만 아니라 USB만 연결한 경우에도 정확히 3.3V 전압을 출력하므로 편리하게 사용할 수 있다.


<그림 2> 3.3V 와 AREF 연결도
♦ 만약 아날로그 핀의 기준 전압을 3.3V를 사용하고 싶다면 그림과 같이 연결한 후 setup()함수 내에서
         analogReference(EXTERNAL);
로 설정한다. 5V 기준 전압에 비해서 약 1.5배의 증폭 효과가 있다.
♦ 아두이노 우노의 3.3V 핀은 외부 전원(7V~12V)을 연결한 경우뿐만 아니라 USB만 연결한 경우에도 정확히 3.3V 전압을 갖는다.