ESP32 ADC – Arduino IDE로 아날로그 값 읽기

Esp32 Adc Arduino Idelo Anallogeu Gabs Ilg Gi



ADC(아날로그-디지털 변환기)는 다양한 마이크로컨트롤러 보드와 함께 제공되거나 마이크로컨트롤러 내부에 통합된 전자 회로입니다. ADC는 서로 다른 센서의 아날로그 전압을 디지털 형태로 변환하는 데 사용됩니다. Arduino와 마찬가지로 ESP32에도 아날로그 데이터를 읽을 수 있는 ADC가 있습니다. ESP32 ADC에 대해 자세히 알아보겠습니다.

ESP32 ADC 소개

ESP32 보드에는 SAR(Successive Approximation Registers) ADC라고도 하는 2개의 통합 12비트 ADC가 있습니다. ESP32 보드 ADC는 18개의 서로 다른 아날로그 입력 채널을 지원하므로 18개의 서로 다른 아날로그 센서를 연결하여 입력을 받을 수 있습니다.

그러나 여기서는 그렇지 않습니다. 이러한 아날로그 채널은 채널 1과 채널 2의 두 가지 범주로 나뉩니다. 이 두 채널에는 ADC 입력에 항상 사용할 수 없는 일부 핀이 있습니다. 그 ADC 핀이 다른 핀과 함께 무엇인지 봅시다.







ESP32 ADC 핀

앞서 언급했듯이 ESP32 보드에는 18개의 ADC 채널이 있습니다. 총 30개의 GPIO가 있는 DEVKIT V1 DOIT 보드에서는 18개 중 15개만 사용할 수 있습니다.



보드를 살펴보고 아래 이미지에서 강조 표시된 ADC 핀을 식별하십시오.







채널 1 ADC 핀

다음은 ESP32 DEVKIT DOIT 보드의 주어진 핀 매핑입니다. ESP32의 ADC1에는 8개의 채널이 있지만 DOIT DEVKIT 보드는 6개의 채널만 지원합니다. 그러나 나는 이것들이 여전히 충분하다는 것을 보증합니다.

ADC1 GPIO 핀 ESP32
CH0 36
CH1 30핀 버전 ESP32의 NA(Devkit 필수)
CH2 저것
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

다음 이미지는 ESP32 ADC1 채널을 보여줍니다.



채널 2 ADC 핀

DEVKIT DOIT 보드에는 ADC2에 10개의 아날로그 채널이 있습니다. ADC2에는 아날로그 데이터를 읽기 위한 10개의 아날로그 채널이 있지만 이러한 채널을 항상 사용할 수 있는 것은 아닙니다. ADC2는 온보드 WiFi 드라이버와 공유됩니다. 즉, 보드가 WIFI를 사용할 때 이러한 ADC2를 사용할 수 없습니다. 이 문제의 해결 방법은 Wi-Fi 드라이버가 꺼져 있을 때만 ADC2를 사용하는 것입니다.

아래 이미지는 ADC2 채널의 핀 매핑을 보여줍니다.

ESP32 ADC를 사용하는 방법

ESP32 ADC는 Arduino와 유사한 방식으로 작동하지만 12비트 ADC가 있다는 차이점만 있습니다. 따라서 ESP32 보드는 0에서 4095까지의 아날로그 전압 값을 디지털 이산 값으로 매핑합니다.

  • ESP32 ADC에 제공된 전압이 ADC 채널이 0이면 디지털 값은 0이 됩니다.
  • ADC에 제공되는 전압이 최대인 경우 3.3V를 의미하며 출력 디지털 값은 4095와 같습니다.
  • 더 높은 전압을 측정하기 위해 전압 분배기 방법을 사용할 수 있습니다.

메모: ESP32 ADC는 기본적으로 12비트로 설정되어 있지만 0비트, 10비트, 11비트로 구성할 수 있습니다. 12비트 기본 ADC는 값을 측정할 수 있습니다. 2^12=4096 아날로그 전압 범위는 0V ~ 3.3V입니다.

ESP32의 ADC 제한 사항

다음은 ESP32 ADC의 몇 가지 제한 사항입니다.

  • ESP32 ADC는 3.3V 이상의 전압을 직접 측정할 수 없습니다.
  • Wi-Fi 드라이버가 활성화되면 ADC2를 사용할 수 없습니다. ADC1은 8채널만 사용할 수 있습니다.
  • ESP32 ADC는 매우 선형적이지 않습니다. 이것은 보여준다 비선형성 3.2V와 3.3V를 구분할 수 없습니다. 그러나 ESP32 ADC를 보정하는 것은 가능합니다. 여기 ESP32 ADC 비선형성 동작을 보정하는 방법을 안내하는 기사입니다.

ESP32의 비선형성 동작은 Arduino IDE의 직렬 모니터에서 볼 수 있습니다.

Arduino IDE를 사용하여 ESP32 ADC 프로그래밍

ESP32 ADC의 작동을 이해하는 가장 좋은 방법은 전위차계를 사용하여 최대 저항 0에 대한 값을 읽는 것입니다. 다음은 전위차계가 있는 ESP32의 주어진 회로 이미지입니다.

전위차계의 중간 핀을 ESP32의 디지털 핀 25에 연결하고 2개의 단자 핀을 3.3V 및 GND 핀에 연결합니다.

하드웨어

다음 이미지는 전위차계가 있는 ESP32의 하드웨어를 표시합니다. 다음은 필요한 구성 요소 목록입니다.

  • ESP32 DEVKIT DOIT 보드
  • 전위차계
  • 브레드보드
  • 점퍼 와이어

암호

Arduino IDE를 열고 ESP32 보드에 아래 코드를 업로드합니다. Arduino IDE로 ESP32를 설치하고 구성하는 방법을 확인하려면 클릭하십시오. 여기 .

상수 정수 Pin_전위차계 = 25 ; /*GPIO 25에 연결된 전위차계(아날로그 ADC2_CH8)*/
정수 Val_전위차계 = 0 ; /*전위차계 읽기 값이 여기에 저장됩니다*/
무효의 설정 ( ) {
연속물. 시작하다 ( 115200 ) ; /*시리얼 통신 시작*/
}
무효의 고리 ( ) {
Val_전위차계 = 아날로그 읽기 ( Pin_전위차계 ) ; /* 전위차계 값 읽기*/
연속물. 인쇄 ( Val_전위차계 ) ; /*전위차계 값 출력*/
지연 ( 2000년 ) ; /*2초 지연*/
}

여기 위의 코드에서 ESP32 보드의 전위차계에 대한 디지털 핀 25를 초기화합니다. 입력을 받기 위해 변수 Val_Potentiometer가 초기화됩니다. 다음 직렬 통신은 전송 속도를 정의하여 시작됩니다.

에서 고리 analogRead() 함수를 사용하는 코드의 일부 ADC 값은 ESP32의 핀 25에서 읽힙니다. 다음으로 Serial.print()를 사용하면 모든 값이 직렬 모니터에 인쇄됩니다.

산출

출력은 디지털 이산 값에 대해 매핑된 아날로그 값을 표시합니다. 읽기 전압이 최대인 3.3V일 때 디지털 출력은 4095와 같고 읽기 전압이 0V일 때 디지털 출력은 0이 됩니다.

결론

아날로그-디지털 변환기는 특히 마이크로컨트롤러 보드를 아날로그 센서 및 하드웨어와 인터페이스해야 할 때 모든 곳에서 사용됩니다. ESP32에는 ADC1 및 ADC2인 두 개의 ADC 채널이 있습니다. 이 두 채널이 결합되어 아날로그 센서를 인터페이스하기 위한 18개의 핀을 제공합니다. 그러나 그 중 3개는 ESP32 30핀 버전에서 사용할 수 없습니다. 아날로그 값 읽기에 대한 자세한 내용은 기사를 참조하십시오.