ESP32 ADC – Analogwerte mit Arduino IDE lesen

Esp32 Adc Analogwerte Mit Arduino Ide Lesen



ADC (Analog-Digital-Wandler) ist eine elektronische Schaltung, die mit verschiedenen Mikrocontroller-Platinen geliefert oder in den Mikrocontroller integriert wird. ADC wird verwendet, um die analoge Spannung von verschiedenen Sensoren in digitale Form umzuwandeln. Wie Arduino hat auch ESP32 einen ADC, der analoge Daten lesen kann. Lassen Sie uns mehr über ESP32 ADC erfahren.

ESP32 ADC Einführung

Das ESP32-Board verfügt über zwei integrierte 12-Bit-ADCs, die auch als SAR-ADCs (Successive Approximation Registers) bekannt sind. Die ADCs der ESP32-Platine unterstützen 18 verschiedene analoge Eingangskanäle, was bedeutet, dass wir 18 verschiedene analoge Sensoren anschließen können, um Eingaben von ihnen zu erhalten.

Aber das ist hier nicht der Fall; Diese analogen Kanäle sind in zwei Kategorien unterteilt: Kanal 1 und Kanal 2. Diese beiden Kanäle haben einige Pins, die nicht immer für ADC-Eingänge verfügbar sind. Mal sehen, was diese ADC-Pins zusammen mit anderen sind.







ESP32 ADC-Pins

Wie bereits erwähnt, verfügt das ESP32-Board über 18 ADC-Kanäle. Von 18 sind nur 15 im DEVKIT V1 DOIT-Board mit insgesamt 30 GPIOs verfügbar.



Schauen Sie auf Ihr Board und identifizieren Sie die ADC-Pins, wie wir sie im Bild unten hervorgehoben haben:







Kanal 1 ADC-Pins

Im Folgenden finden Sie die angegebene Pin-Zuordnung der ESP32 DEVKIT DOIT-Karte. ADC1 in ESP32 hat 8 Kanäle, das DOIT DEVKIT-Board unterstützt jedoch nur 6 Kanäle. Aber ich garantiere, dass diese immer noch mehr als genug sind.

ADC1 GPIO-PIN ESP32
CH0 36
CH1 NA in 30 Pin Version ESP32 (Devkit MUSS)
CH2 DAS
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Das folgende Bild zeigt ESP32 ADC1-Kanäle:



Kanal 2 ADC-Pins

DEVKIT DOIT-Boards haben 10 analoge Kanäle in ADC2. Obwohl der ADC2 über 10 analoge Kanäle zum Lesen analoger Daten verfügt, stehen diese Kanäle nicht immer zur Verfügung. ADC2 wird mit integrierten WiFi-Treibern geteilt, was bedeutet, dass diese ADC2 zu dem Zeitpunkt, zu dem das Board WIFI verwendet, nicht verfügbar sind. Die Lösung für dieses Problem besteht darin, ADC2 nur zu verwenden, wenn der Wi-Fi-Treiber ausgeschaltet ist.

Das folgende Bild zeigt die Pin-Zuordnung des ADC2-Kanals.

So verwenden Sie den ESP32-ADC

ESP32 ADC funktioniert ähnlich wie Arduino, nur mit dem Unterschied, dass es einen 12-Bit-ADC hat. Das ESP32-Board bildet also die analogen Spannungswerte im Bereich von 0 bis 4095 in digitale diskrete Werte ab.

  • Wenn die an ESP32 ADC gegebene Spannung Null ist, ist ein ADC-Kanal der digitale Wert Null.
  • Wenn die an den ADC gegebene Spannung maximal ist, bedeutet das 3,3 V, dass der digitale Ausgangswert gleich 4095 ist.
  • Um höhere Spannungen zu messen, können wir die Spannungsteilermethode verwenden.

Notiz: ESP32 ADC ist standardmäßig auf 12 Bit eingestellt, es ist jedoch möglich, ihn auf 0 Bit, 10 Bit und 11 Bit zu konfigurieren. Der 12-Bit-Standard-ADC kann Werte messen 2^12=4096 und die analoge Spannung reicht von 0 V bis 3,3 V.

ADC-Beschränkung auf ESP32

Hier sind einige Einschränkungen von ESP32 ADC:

  • ESP32 ADC kann Spannungen über 3,3 V nicht direkt messen.
  • Wenn Wi-Fi-Treiber aktiviert sind, kann ADC2 nicht verwendet werden. Es können nur 8 Kanäle von ADC1 verwendet werden.
  • Der ESP32 ADC ist nicht sehr linear; es zeigt Nichtlinearität Verhalten und kann nicht zwischen 3,2 V und 3,3 V unterscheiden. Es ist jedoch möglich, ESP32 ADC zu kalibrieren. Hier ist ein Artikel, der Sie beim Kalibrieren des Nichtlinearitätsverhaltens des ESP32 ADC anleitet.

Das Nichtlinearitätsverhalten von ESP32 ist auf dem seriellen Monitor der Arduino IDE zu sehen.

Programmieren Sie ESP32 ADC mit Arduino IDE

Der beste Weg, die Funktionsweise des ESP32 ADC zu verstehen, besteht darin, ein Potentiometer zu nehmen und Werte gegen Nullwiderstand bis zum Maximum abzulesen. Es folgt das angegebene Schaltungsbild von ESP32 mit Potentiometer.

Verbinden Sie den mittleren Stift des Potentiometers mit dem digitalen Stift 25 des ESP32 und 2 Anschlussstifte mit 3,3 V bzw. GND-Stift.

Hardware

Das folgende Bild zeigt die Hardware von ESP32 mit Potentiometer. Es folgt die Liste der benötigten Komponenten:

  • ESP32 DEVKIT DOIT-Board
  • Potentiometer
  • Brotschneidebrett
  • Überbrückungsdrähte

Code

Öffnen Sie die Arduino IDE und laden Sie den folgenden Code in das ESP32-Board hoch. Um zu überprüfen, wie ESP32 mit Arduino IDE installiert und konfiguriert wird, klicken Sie auf hier .

konst int Pin_Potentiometer = 25 ; /*Potentiometer angeschlossen an GPIO 25 (Analog ADC2_CH8)*/
int Val_Potentiometer = 0 ; /*Potentiometer-Lesewert wird hier gespeichert*/
Leere Konfiguration ( ) {
Seriell. Start ( 115200 ) ; /*Serielle Kommunikation beginnt*/
}
Leere Schleife ( ) {
Val_Potentiometer = analogLesen ( Pin_Potentiometer ) ; /*Potentiometerwert lesen*/
Seriell. println ( Val_Potentiometer ) ; /*Potentiometerwert drucken*/
Verzögerung ( 2000 ) ; /*Verzögerung von 2sec*/
}

Hier im obigen Code initialisieren wir den digitalen Pin 25 für das Potentiometer auf der ESP32-Platine. Als nächstes wird eine Variable Val_Potentiometer initialisiert, um eine Eingabe zu übernehmen. Als nächstes wird die serielle Kommunikation durch die Definition der Baudrate initiiert.

In dem Schleife Ein Teil des Codes mit der Funktion analogRead () ADC-Werte werden auf Pin 25 von ESP32 gelesen. Als nächstes werden mit Serial.print() alle Werte auf dem seriellen Monitor gedruckt.

Ausgabe

Der Ausgang zeigt analoge Werte an, die digitalen diskreten Werten zugeordnet sind. Wenn die Lesespannung maximal ist, d. h. 3,3 V, ist der digitale Ausgang gleich 4095, und wenn die Lesespannung 0 V beträgt, wird der digitale Ausgang 0.

Fazit

Analog-Digital-Wandler werden überall verwendet, insbesondere wenn wir Mikrocontroller-Boards mit analogen Sensoren und Hardware verbinden müssen. ESP32 hat zwei Kanäle für ADC, nämlich ADC1 und ADC2. Diese beiden Kanäle ergeben zusammen 18 Pins für den Anschluss analoger Sensoren. 3 davon sind jedoch in der ESP32 30-Pin-Version nicht verfügbar. Um mehr über das Lesen von Analogwerten zu erfahren, lesen Sie den Artikel.