Arduino ADC

Ammar Ali 2024년2월16일
Arduino ADC

이 튜토리얼에서는 아날로그 핀을 사용하여 아날로그 신호를 읽고 Arduino에서 디지털로 변환하는 방법에 대해 설명합니다.

Arduino ADC

아날로그-디지털 변환기라고도 하는 ADC는 아날로그 신호를 디지털 신호로 변환합니다. 아날로그 신호는 연속적이므로 내부에 무한한 수의 값이 있습니다. 모든 값을 읽을 수는 없으므로 연속 신호에서 특정 시간 간격으로 값을 읽어 신호를 디지털화합니다.

아날로그 신호에서 샘플을 취하는 과정을 샘플링이라고 합니다. 아날로그 신호를 디지털로 변환하는 과정은 아래 그림과 같습니다.

ADC 이미지

위의 다이어그램에서 첫 번째 신호는 값이 무한한 연속 신호이고 두 번째 신호는 값이 유한한 디지털 신호입니다. 아날로그-디지털 변환기는 아날로그 신호에서 일정한 간격으로 값을 가져와 디지털 신호로 만듭니다.

아날로그에서 디지털로의 변환은 컴퓨터가 아날로그 신호를 처리할 수 없기 때문에 수행됩니다. 0과 1의 디지털 신호만 처리할 수 있습니다. 디지털 신호를 처리한 후 DAC 또는 디지털-아날로그 변환기를 사용하여 신호를 다시 아날로그로 변환할 수도 있습니다.

예를 들어, 위의 다이어그램에서 두 번째 신호의 포인트를 결합하면 첫 번째 신호와 거의 동일하게 됩니다. ADC에서 취하는 샘플 수를 ADC의 샘플링 속도 또는 비트 전송률이라고 합니다.

일부 Arduino 보드에는 10비트 아날로그-디지털 변환기가 있고 일부에는 12비트 아날로그-디지털 변환기가 있습니다. 비트율은 분해능이라고도 하며 ADC가 아날로그 신호에서 취할 샘플 수를 정의합니다.

10비트 아날로그-디지털 변환기는 아날로그 신호에서 1024개의 샘플을 가져옵니다. 예를 들어, 입력 신호가 0~5V 사이의 전압 레벨로 구성되어 있다고 가정합니다.

이 경우 전압 레벨은 0에서 1024 사이의 정수 범위에 매핑됩니다. 즉, 아날로그-디지털 변환기는 5/1024 또는 4.9밀리볼트마다 샘플을 취합니다.

아날로그-디지털 변환기의 속도는 ATmega 기반 Arduino 보드에서 Arduino 보드의 작동 주파수에 따라 다릅니다. 아날로그-디지털 변환기는 아날로그 신호를 디지털 신호로 변환하는 데 100마이크로초가 소요되며 이는 샘플링 속도 또는 판독 속도가 10kHz 또는 초당 10,000회임을 의미합니다.

Arduino Zero, Due 및 MKR 제품군 보드와 같은 다른 보드에는 12비트 아날로그-디지털 변환기가 있습니다. 즉, 0 ~ 3.3V의 입력 아날로그 신호가 0 ~ 4095의 정수 범위에 매핑됩니다.

기본적으로 12비트 아날로그-디지털 변환기는 10비트로 설정되지만 analogReadResolution() 함수를 사용하여 아날로그-디지털 변환기의 비트 전송률 또는 해상도를 변경할 수 있습니다. 해상도를 설정하는 기능입니다.

analogReadResolution() 함수에 대한 자세한 내용은 이 링크를 확인하십시오.

모든 Arduino 보드의 아날로그 핀은 A로 표시되고 그 뒤에 A0, A1 등과 같은 숫자가 붙습니다. Arduino의 아날로그 핀에서 신호를 읽으려면 analogRead() 기능을 사용할 수 있습니다.

analogRead() 함수의 기본 구문은 다음과 같습니다.

output = analogRead(pin)

위의 구문은 아날로그 핀의 아날로그 신호를 디지털 신호로 반환합니다. 아날로그 핀이 신호에 연결되지 않은 경우 함수는 여전히 일부 부동 값을 반환합니다.

Arduino 보드마다 아날로그-디지털 변환기의 속도가 다르며 변경할 수 있지만 아날로그-디지털 변환기의 해상도도 변경됩니다. 따라서 정확한 아날로그-디지털 변환을 위해 아날로그-디지털 변환기의 기본 설정을 사용해야 합니다.

위에서 일부 Arduino 보드에는 입력 아날로그 신호에 대해 0~5V의 기준 전압이 있고 일부에는 0~3.3V가 있다고 위에서 논의했습니다. 이것은 기본값이며 analogReference() 함수를 사용하여 변경할 수 있습니다.

Arduino 보드 유형에 따라 다른 옵션을 전달할 수 있습니다.

예를 들어 Arduino Uno 및 Mega의 경우 다음과 같은 옵션이 있습니다.

  1. DEFAULT - 기준 전압을 0~5V의 정수 범위로 설정합니다.
  2. INTERNAL - 기준 전압을 0 ~ 1.1볼트의 정수 범위로 설정합니다.
  3. INTERNAL1V1 - 기준 전압을 0 ~ 1.1볼트의 정수 범위로 설정합니다.
  4. INTERNAL2V2.56 - 기준 전압을 0 ~ 2.56볼트의 정수 범위로 설정합니다.

기준 전압을 설정하기 전에 전압 값을 0볼트 미만 5볼트 이상 설정할 수 없습니다. 기준 전압 값은 0~5V여야 합니다.

저항을 아날로그 핀에 연결한다고 가정합니다. 이 경우 아날로그 핀 내부에 32K 값의 저항이 이미 존재하기 때문에 입력 전압이 감소하며 이 경우 두 저항 모두 전압 분배기를 만들고 입력 전압은 다음과 같이 감소합니다. 저항 값.

analogReference() 함수 내에서 사용할 수 있는 전체 옵션 목록은 이 링크를 확인하십시오. analogRead() 기능에 대한 자세한 내용은 이 링크를 확인하십시오.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook