ESP32 - Potentiometer

Dieses Tutorial zeigt Ihnen, wie Sie ein Potentiometer mit dem ESP32 und MicroPython verwenden. Im Einzelnen lernen wir:

ESP32 MicroPython Potentiometer

Überblick über Potentiometer

Ein Drehpotentiometer, auch Drehwinkelsensor genannt, wird verwendet, um Einstellungen manuell anzupassen, wie die Lautstärke einer Stereoanlage, die Helligkeit einer Lampe oder den Zoomfaktor eines Oszilloskops.

Potentiometer Pinbelegung

Pinbelegung

Ein Potentiometer hat normalerweise drei Pins.

  • GND-Pin: mit GND (0 Volt) verbinden
  • VCC-Pin: mit VCC (5 Volt oder 3,3 Volt) verbinden
  • Ausgangspin: gibt die Spannung an den Eingangspin des ESP32 weiter.
Potentiometer Pinbelegung

※ Notiz:

Sie können die Positionen des GND-Pins und des VCC-Pins vertauschen.

Funktionsweise

Die Welle des Potentiometers dreht sich von 0 Grad, nahe dem GND-Pin, bis zu einer maximalen Position nahe dem VCC-Pin, genannt ANGLE_MAX.

Die Spannung am Ausgangspin reicht von der Massespannung (GND) bis zur Versorgungsspannung (VCC). Wenn Sie die Welle drehen, ändert sich die Ausgangsspannung entsprechend.

  • Wenn der Winkel 0 Grad beträgt, liegt am Ausgangspin keine Spannung (0 Volt) an.
  • Wenn der Winkel ANGLE_MAX beträgt, entspricht die Spannung am Ausgangspin der Spannung von VCC.
  • Für Winkel zwischen 0 Grad und ANGLE_MAX wird die Ausgangsspannung wie folgt berechnet: Winkel × VCC / ANGLE_MAX.

※ Notiz:

Der Wert von ANGLE_MAX variiert je nach Hersteller. Normalerweise beachten wir den Wert von ANGLE_MAX nicht, es sei denn, wir müssen den Drehwinkel berechnen (siehe Abschnitt Anwendungsfälle).

Funktionsweise eines Potentiometers

ESP32 - Drehpotentiometer

Die ADC-Pins des ESP32 können als analoge Eingänge dienen und einen Spannungsbereich von 0 Volt bis VCC in ganze Zahlen zwischen 0 und 4095 umwandeln. Diese Zahlen werden als ADC-Werte oder Analogwerte bezeichnet.

Sie können den Ausgangspin eines Potentiometers mit einem der analogen Eingangspins des ESP32 verbinden, sodass der ESP32 den ADC-Wert auslesen und in eine nutzbare Zahl umwandeln kann.

Die vom ESP32 ermittelte Zahl ist kein Winkel und keine direkte Spannung, sondern eine ganze Zahl zwischen 0 und 4095. Dieser Wert kann dann je nach Anwendung auf einen anderen Bereich abgebildet oder umgerechnet werden.

Anwendungsfälle

  • Umwandlung des ADC-Werts in einen Winkel.
  • Umwandlung des ADC-Werts in eine Spannung.
  • Umwandlung des ADC-Werts in einen steuerbaren Wert (wie die Lautstärke einer Stereoanlage, die Helligkeit von etwas oder die Geschwindigkeit eines Motors). Das ist oft die häufigste Anwendung.

Bereich umskalieren

VON BIS
Winkelvom Benutzer gedreht 0° → ANGLE_MAX
Spannungvom Pin des Potentiometers 0V → 3.3V
ADC-Wertvom ESP32 gelesen 0 → 4095
Anderer Wertvom ESP32 umgerechnet VALUE_MIN → VALUE_MAX

Verdrahtungsdiagramm

  • So verbinden Sie ESP32 und Potentiometer mithilfe eines Steckbretts
ESP32 MicroPython Potentiometer Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

So verbinden Sie ESP32 und Potentiometer

ESP32 MicroPython Code

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-micropython/esp32-micropython-potentiometer */ from machine import ADC, Pin import time # Define a function to map a value from one range to another def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min # Initialize the analog pin for reading adc = ADC(Pin(36)) # The ESP32 pin GPIO36 (ADC0) connected to the light sensor # Set the ADC width (resolution) to 12 bits adc.width(ADC.WIDTH_12BIT) # Set the attenuation to 11 dB, allowing input range up to ~3.3V adc.atten(ADC.ATTN_11DB) # Infinite loop while True: # Retrieve analog value from pin A0: adc_value = adc.read() # Convert the analog value to a voltage (0-3.3V range): voltage = map_value(adc_value, 0, 4095, 0, 3.3) # Output the analog value and corresponding voltage to the console: print("Analog: {}, Voltage: {:.2f}V".format(adc_value, voltage)) # Wait for a second before repeating the loop: time.sleep(1)

Schnelle Schritte

Hier finden Sie eine Anleitung, wie Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE einrichten und ausführen:

  • Stellen Sie sicher, dass Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board geladen ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte für eine Schritt-für-Schritt-Anleitung.
  • Verbinden Sie das ESP32-Board gemäß dem bereitgestellten Schaltplan mit dem Potentiometer.
  • Verbinden Sie das ESP32-Board mit einem USB-Kabel mit Ihrem Computer.
  • Öffnen Sie Thonny IDE auf Ihrem Computer.
  • Gehen Sie in Thonny IDE zu Tools Options.
  • Wählen Sie im Tab Interpreter aus dem Dropdown-Menü MicroPython (ESP32).
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Thonny IDE erkennt ihn normalerweise automatisch, aber möglicherweise müssen Sie ihn manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf den Save-Button oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf den grünen Run-Button (oder drücken Sie F5), um das Skript auszuführen.
  • Drehen Sie am Potentiometer
  • Sehen Sie sich die Meldung in der Shell unten in Thonny an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot Analog: 0, Voltage: 0.00V Analog: 0, Voltage: 0.00V Analog: 504, Voltage: 0.41V Analog: 1124, Voltage: 0.91V Analog: 2068, Voltage: 1.67V Analog: 3016, Voltage: 2.43V Analog: 3624, Voltage: 2.92V Analog: 4092, Voltage: 3.30V Analog: 4092, Voltage: 3.30V
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Notiz:

Dieses Tutorial zeigt, wie Sie mit der Funktion adc.read() Werte von einem ADC (Analog-Digital-Wandler) auslesen, der mit einem Potentiometer verbunden ist. Der ADC des ESP32 eignet sich für Projekte, die keine hohe Präzision erfordern. Wenn Ihr Projekt jedoch genaue Messungen benötigt, beachten Sie Folgendes:

  • Der ESP32-ADC ist nicht perfekt genau und muss für präzise Ergebnisse möglicherweise kalibriert werden. Jedes ESP32-Board kann leicht abweichen, daher ist eine Kalibrierung für jedes einzelne Board erforderlich.
  • Die Kalibrierung kann schwierig sein, besonders für Anfänger, und liefert möglicherweise nicht immer genau die gewünschten Ergebnisse.

Für Projekte, die hohe Präzision erfordern, sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 verwenden oder einen Arduino wählen, der einen zuverlässigeren ADC hat. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!