Hardwarenahe Programmierung

ADC Poti

Das ESP32-Board verfügt über zwei 12-Bit-Analog-Digital-Wandler. Der in dieser Entwicklungsplatine verwendete ADC-Typ basiert auf SAR, was auch als sukzessive Approximationsregister bezeichnet wird. Für weitere Informationen zu ADC-Typen siehe ADC Tutorial. Beide ADCs unterstützen bis zu 18 analoge Kanäle, sodass mit diesem Board jeweils achtzehn analoge Sensoren verbunden werden könnten. ADC2 wird jedoch von anderen Ressourcen gemeinsam genutzt. Es sind also zwei ADCs in ESP32 ADC1 und ADC2, wobei mit der mbed-Adapter-Platine nur zwei (ADC1-6 GPIO34 und ADC1-7 GPIO35) für die beiden Potis (POT_2 und POT_1) des mbed-Application-Board verwendet werden. Die Pin-Zuordnung der ADC-Kanäle für beide ADCs ist unten dargestellt.

mbedEs32S_LCD_ADC_Poti1.ino

#include <U8g2lib.h>

#define BUFF_LEN 18
uint8_t ADC7 = 35; 

U8G2_ST7565_NHD_C12832_F_4W_HW_SPI u8g2(U8G2_R2, 5, 14, 13); // rotation = 180° = U8G2_R2 VSPImosi(GPIO23), VSPIclk(GPIO18)

void setup(void) {
  Serial.begin(115200);
  Serial.printf("\nAnalogwert am LCD:\n");
  u8g2.begin();
}

void loop(void) {
  int AnalogIn = analogRead(ADC7);
  char buff[BUFF_LEN];

  convertA0(buff, AnalogIn);
  u8g2.clearBuffer();
  u8g2.setFont(u8g2_font_ncenB14_tr);
  u8g2.drawStr(0, 20, buff);
  u8g2.sendBuffer();
}

void convertA0(char myBuff[], int A0In) {
  float aInFloat = (A0In/4096.0)*3.3;
  String stringOne = String(aInFloat, 3);
  Serial.print("Analogwert A0 = ");
  Serial.print(A0In);
  Serial.println(" ;  Spannung = " + stringOne + " V");
  stringOne = "Up1 = " + stringOne + " V";
  stringOne.toCharArray(myBuff, BUFF_LEN);
}

Der ESP32 verfügt über 18 x 12-Bit-ADC-Eingangskanäle (während der ESP8266 nur über 1x 10-Bit-ADC verfügt). Dies sind die GPIOs, die als ADC und entsprechende Kanäle verwendet werden können (siehe Pinout-Referenz):

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

All wikipages