아두이노 analogReference (), AREF 핀 사용법

정의

아날로그 입력에 사용되는 기준 전압 (즉, 입력 범위의 상단으로 사용되는 값)을 구성합니다. 옵션은 다음과 같습니다.

Arduino AVR 보드 (Uno, Mega, Leonardo 등)

  • DEFAULT : 5V (5V Arduino 보드) 또는 3.3V (3.3V Arduino 보드)의 기본 아날로그 참조

  • 내부 : ATmega168 또는 ATmega328P에서 1.1V, ATmega32U4 및 ATmega8에서 2.56V (기본 Arduino Mega에서는 사용할 수 없음)와 같은 내장 참조

  • INTERNAL1V1 : 내장 1.1V 레퍼런스 (Arduino Mega 만 해당)

  • INTERNAL2V56 : 내장 2.56V 레퍼런스 (Arduino Mega 만 해당)

  • 외부 : AREF 핀 (0 ~ 5V 만 해당)에 적용되는 전압이 기준으로 사용됩니다.

Arduino SAMD 보드 (제로 등)

  • AR_DEFAULT : 3.3V의 기본 아날로그 참조

  • AR_INTERNAL : 내장 2.23V 레퍼런스

  • AR_INTERNAL1V0 : 내장 1.0V 기준

  • AR_INTERNAL1V65 : 내장 1.65V 레퍼런스

  • AR_INTERNAL2V23 : 내장 2.23V 레퍼런스

  • AR_EXTERNAL : AREF 핀에인가 된 전압이 기준으로 사용됨

Arduino megaAVR 보드 (Uno WiFi Rev2)

  • 기본 : 내장 0.55V 기준

  • 내부 : 내장 0.55V 기준

  • VDD : ATmega4809의 Vdd. Uno WiFi Rev2에서 5V

  • INTERNAL0V55 : 내장 0.55V 기준

  • INTERNAL1V1 : 내장 1.1V 레퍼런스

  • INTERNAL1V5 : 내장 1.5V 기준

  • INTERNAL2V5 : 내장 2.5V 레퍼런스

  • INTERNAL4V3 : 내장 4.3V 기준

  • EXTERNAL : AREF 핀 (0-5V 만 해당)에 적용되는 전압이 기준으로 사용됩니다.

Arduino SAM 보드 (Due)

  • AR_DEFAULT : 3.3V의 기본 아날로그 참조. 이것은 Due에 지원되는 유일한 옵션입니다.

 

사용 예

analogReference(type)

 

매개변수

type: 사용할 참조 유형 (정의의 옵션 참조)

 

참조

아날로그 기준을 변경 한 후 처음 몇 개의 판독 값 analogRead()이 정확하지 않을 수 있습니다.

AREF 핀의 외부 기준 전압에 0V 미만 또는 5V 이상을 사용하지 마십시오! AREF 핀에서 외부 참조를 사용하는 경우을 호출하기 전에 아날로그 참조를 EXTERNAL로 설정해야합니다 analogRead(). 그렇지 않으면, 활성 기준 전압 (내부 생성)과 AREF 핀을 함께 단락시켜 Arduino 보드의 마이크로 컨트롤러를 손상시킬 수 있습니다.

또는 5K 저항을 통해 외부 기준 전압을 AREF 핀에 연결하여 외부 기준 전압과 내부 기준 전압 사이를 전환 할 수 있습니다. AREF 핀에는 내부 32K 저항이 있으므로 저항은 기준으로 사용되는 전압을 변경합니다. 이 둘은 전압 분배기 역할을하므로 예를 들어 저항을 통해 적용된 2.5V는 AREF 핀에서 2.5 * 32 / (32 + 5) = ~ 2.2V가됩니다.

 

예제

 

AREF핀에 3.3V를 인가 후 3.3V를 ADC로 읽었을때 1024(10비트)가 나오는지 확인해보겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int val = 0;
int analogPin = A1;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  analogReference(EXTERNAL);
 
 
}
 
void loop() {
  // put your main code here, to run repeatedly:
  
  
  val = analogRead(analogPin);
  Serial.print("입력 값:");
  Serial.println(val);
  delay(1000);
 
}
 

 

 

정상적으로 기준전압이 3.3V로 변경된것을 확인 할 수 있었습니다.

 

감사합니다.

댓글()