ESP32 ADC-Lesen Analog Werte mit Arduino IDE

Dieser artikel zeigt, wie zu lesen analog eingänge mit die ESP32 mit Arduino IDE. Analoges Lesen ist nützlich, um Werte von variablen Widerständen wie Potentiometern oder analogen Sensoren zu lesen.

 ESP32 ADC Lesen Analog Werte mit Arduino IDE

Das Lesen analoger Eingänge mit dem ESP32 ist so einfach wie die Verwendung der Funktion analogRead (GPIO), die als Argument den GPIO akzeptiert, den Sie lesen möchten.

Wir haben auch andere tutorials auf wie zu verwenden analog pins mit ESP bord:

  • ESP8266 ADC-Lesen Analog Werte mit Arduino IDE, MicroPython und Lua
  • ESP32 Analog Messwerte mit MicroPython

Uhr die Video

Sie können uhr die video tutorial oder halten lesen sie diese seite für die geschrieben anweisungen.

Analoge Eingänge (ADC)

Wenn Sie mit dem ESP32 einen analogen Wert lesen, können Sie unterschiedliche Spannungspegel zwischen 0 V und 3,3 V messen.

Die gemessene Spannung wird dann einem Wert zwischen 0 und 4095 zugeordnet, wobei 0 V 0 und 3,3 V 4095 entspricht. Jede Spannung zwischen 0 V und 3,3 V erhält den entsprechenden Wert dazwischen.

 ESP32 ADC Analog Lesen Eingänge Palette Wert

ADC ist nichtlinear

Idealerweise würden Sie ein lineares Verhalten erwarten, wenn Sie die ESP32-ADC-Pins verwenden. Das passiert jedoch nicht. Sie erhalten ein Verhalten wie in der folgenden Tabelle gezeigt:

Dieses Verhalten bedeutet, dass Ihr ESP32 3 nicht unterscheiden kann.3 V von 3,2 V. Sie erhalten für beide Spannungen den gleichen Wert: 4095.

Das gleiche gilt für sehr niedrige Spannungswerte: Für 0 V und 0,1 V erhalten Sie den gleichen Wert: 0. Sie müssen dies berücksichtigen, wenn Sie die ESP32 ADC-Pins verwenden.

Es gibt eine Diskussion auf GitHub zu diesem Thema.

analogRead() Funktion

Das Lesen eines Analogeingangs mit dem ESP32 mit der Arduino IDE ist so einfach wie die Verwendung der Funktion analogRead(). Es akzeptiert als Argument den GPIO, den Sie lesen möchten:

analogRead(GPIO);

Der ESP32 unterstützt Messungen in 18 verschiedenen Kanälen. Nur 15 sind im DEVKIT V1 DOIT Board (Version mit 30 GPIOs) verfügbar.

Greifen ihre ESP32 bord pinout und suchen sie die ADC pins. Diese sind in der Abbildung unten mit einem roten Rand hervorgehoben.

 ESP32 ADC-GPIOS-Pins

Erfahren Sie mehr über die ESP32 GPIOs: ESP32 Pinout Referenz.

Diese analogen Eingangspins haben eine Auflösung von 12 Bit. Dies bedeutet, dass beim Lesen eines Analogeingangs der Bereich zwischen 0 und 4095 variieren kann.

Hinweis: ADC2 pins können nicht verwendet werden, wenn Wi-Fi ist verwendet. Wenn Sie also Wi-Fi verwenden und Probleme haben, den Wert von einem ADC2-GPIO abzurufen, können Sie stattdessen einen ADC1-GPIO verwenden, der Ihr Problem lösen sollte.

Andere Nützliche Funktionen

Es sind andere mehr erweiterte funktionen zu verwenden mit die ADC pins, dass kann nützlich sein in andere projekte.

  • analogReadResolution(Auflösung): Legen Sie die Samplebits und die Auflösung fest. Es kann ein Wert zwischen 9 (0 – 511) und 12 Bit (0 – 4095) sein. Der Standardwert ist 12-Bit-Auflösung.
  • analogSetWidth(Breite): Legen Sie die Samplebits und die Auflösung fest. Es kann ein Wert zwischen 9 (0 – 511) und 12 Bit (0 – 4095) sein. Der Standardwert ist 12-Bit-Auflösung.
  • analogSetCycles(Zyklen): Legen Sie die Anzahl der Zyklen pro Probe fest. Der Standardwert ist 8. Bereich: 1 bis 255.
  • analogSetSamples(Samples): Legen Sie die Anzahl der Samples im Bereich fest. Standard ist 1 Probe. Es hat einen Effekt der Erhöhung der Empfindlichkeit.
  • analogSetClockDiv(attenuation): Stellen Sie den Teiler für den ADC-Takt ein. Der Standardwert ist 1. Bereich: 1 bis 255.
  • analogSetAttenuation(attenuation): Legt die Eingangsdämpfung für alle ADC-Pins fest. Der Standardwert ist ADC_11db. Akzeptierte Werte:
    • ADC_0db: setzt keine Dämpfung. ADC messen kann bis zu etwa 800 mV (1 V eingang = ADC lesen von 1088).
    • ADC_2_5db: Die Eingangsspannung des ADC wird gedämpft, wodurch der Messbereich auf bis zu ca. 1100 mV. (1 V eingang = ADC lesen von 3722).
    • ADC_6db: Die Eingangsspannung des ADC wird gedämpft, wodurch der Messbereich auf bis zu ca. 1350 mV. (1 V eingang = ADC lesen von 3033).
    • ADC_11db: Die Eingangsspannung des ADC wird gedämpft, wodurch der Messbereich auf bis zu ca. 2600 mV. (1 V eingang = ADC lesen von 1575).
  • analogSetPinAttenuation(Pin, attenuation): Legt die Eingangsdämpfung für den angegebenen Pin fest. Der Standardwert ist ADC_11db. Dämpfung werte sind die gleichen von vorherigen funktion.
  • adcAttachPin(Pin): Schließen Sie einen Pin an den ADC an (löscht auch jeden anderen analogen Modus, der eingeschaltet sein könnte). Gibt das Ergebnis TRUE oder FALSE zurück.
  • adcStart(Pin), adcBusy(Pin) und resultadcEnd(Pin): Startet eine ADC-Konvertierung auf dem Bus des angeschlossenen Pins. Überprüfen Sie, ob die Konvertierung auf dem ADC-Bus des Pins gerade ausgeführt wird (gibt TRUE oder FALSE zurück). Ruft das Ergebnis der Konvertierung ab: gibt eine 16-Bit-Ganzzahl zurück.

Es gibt ein sehr gutes Video, das diese Funktionen erklärt, das Sie hier ansehen können.

Lesen Sie analoge Werte von einem Potentiometer mit ESP32

Um zu sehen, wie alles zusammenhängt, machen wir ein einfaches Beispiel, um einen analogen Wert von einem Potentiometer zu lesen.

Für dieses Beispiel benötigen Sie folgende Teile:

  • ESP32 DOIT DEVKIT V1 Bord (lesen Beste ESP32 entwicklung boards)
  • Potentiometer
  • Breadboard
  • Jumper drähte

Sie verwenden können die vorhergehenden links oder gehen direkt zu MakerAdvisor.com/tools um alle Teile für Ihre Projekte zum besten Preis zu finden!

Schaltplan

Verdrahten Sie ein Potentiometer mit Ihrem ESP32. Der mittlere Pin des Potentiometers sollte mit GPIO 34 verbunden sein. Sie können die folgende schematische Darstellung als Referenz verwenden.

 Lesen wert von Potentiometer ESP32 Arduino IDE

Code

Wir programmieren den ESP32 mit Arduino IDE, also stellen Sie sicher, dass Sie das ESP32 Add-On installiert haben, bevor Sie fortfahren:

  • Windows anweisungen-ESP32 Board in Arduino IDE
  • Mac und Linux anweisungen-ESP32 Board in Arduino IDE

Öffnen sie ihre Arduino IDE und kopieren sie den folgenden code.

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}

Rohcode anzeigen

Dieser Code liest einfach die Werte vom Potentiometer und druckt diese Werte im seriellen Monitor aus.

Im Code definieren Sie zunächst den GPIO, an den das Potentiometer angeschlossen ist. In diesem Beispiel GPIO 34.

const int potPin = 34;

Initialisieren Sie im setup() eine serielle Kommunikation mit einer Baudrate von 115200.

Serial.begin(115200);

Verwenden Sie in der Schleife() die Funktion analogRead(), um den Analogeingang vom potPin zu lesen.

potValue = analogRead(potPin);

Drucken Sie abschließend die vom Potentiometer gelesenen Werte im seriellen Monitor aus.

Serial.println(potValue);

Laden Sie den bereitgestellten Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie die richtige Karte und den richtigen COM-Port im Menü Extras ausgewählt haben.

Testen des Beispiels

Öffnen Sie nach dem Hochladen des Codes und Drücken der ESP32-Reset-Taste den seriellen Monitor mit einer Baudrate von 115200. Drehen Sie das Potentiometer und sehen Sie, wie sich die Werte ändern.

 Lesen potentiometer ESP32 analogRead

Der maximale Wert, den Sie erhalten, ist 4095 und der minimale Wert ist 0.

 Lesen potentiometer ESP32 analogRead serielle monitor Arduino IDE demonstration

Einwickeln

In diesem Artikel haben Sie gelernt, wie Sie analoge Eingänge mit dem ESP32 mit der Arduino IDE lesen. Zusammenfassend:

  • Die ESP32 DEVKIT V1 DOIT bord (version mit 30 pins) hat 15 ADC pins sie verwenden können, um lesen analog eingänge.
  • Diese Pins haben eine Auflösung von 12 Bit, was bedeutet, dass Sie Werte von 0 bis 4095 erhalten können.
  • Um einen Wert in der Arduino IDE zu lesen, verwenden Sie einfach die Funktion analogRead().
  • Die ESP32 ADC Pins haben kein lineares Verhalten. Sie werden wahrscheinlich nicht in der Lage sein, zwischen 0 und 0,1 V oder zwischen 3,2 und 3,3 V zu unterscheiden.

Wir hoffen, dass Sie diese kurze Anleitung nützlich gefunden haben. Wenn Sie mehr über ESP32 erfahren möchten, melden Sie sich für unseren Kurs an: Lernen Sie ESP32 mit Arduino IDE.

Andere ESP32-Anleitungen, die Ihnen vielleicht auch gefallen:

  • ESP32 OLED Display mit Arduino IDE
  • ESP32 mit DHT Temperatur und Feuchtigkeit Sensor mit Arduino IDE
  • ESP32 Web Server mit DHT IDE
  • 20 + ESP32 Projekte und Tutorials

Dank für lesen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post How Ian McKellen Almost Didn’t Play Gandalf
Next post Capital Orthopaedic Specialists – Lanham