ESP32 - Potentiometer

Dieses Tutorial zeigt dir, wie man den ESP32 mit dem Potentiometer verwendet. Im Detail werden wir Folgendes lernen:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Potentiometer
1×Alternativ: 10k Ohm Trimmer Potentiometer
1×(Alternativ) Potentiometer Kit
1×(Alternativ) Potentiometer Module with Knob
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Potentiometer

Das Potentiometer (auch bekannt als Drehwinkelsensor) wird verwendet, um die Einstellungen zu ändern (z. B. die Lautstärke des Lautsprechers, die Raumtemperatur, die Helligkeit der Lampe...)

Potentiometer-Pinbelegung

Potentiometer-Pinbelegung

Ein Potentiometer hat normalerweise drei Anschlüsse:

  • VCC-Pin: verbinden Sie diesen Pin mit VCC (5 V oder 3,3 V)
  • GND-Pin: verbinden Sie diesen Pin mit GND (0 V)
  • Ausgabepin: liefert die Spannung an den Eingangspin des ESP32
Potentiometer-Pinbelegung

※ Notiz:

Der GND-Pin und der VCC-Pin sind austauschbar.

Wie ein Potentiometer funktioniert

Die Potentiometer-Welle kann von 0° (am nächsten zum GND-Pin) bis zu einem Winkel (am nächsten zum VCC-Pin) gedreht werden, der ANGLE_MAX genannt wird.

Die Spannung am Ausgangspin ist direkt proportional zur Winkelposition der Welle und variiert von 0 bis VCC. Die folgende Tabelle zeigt die Beziehung zwischen dem Winkel und der Spannung am Ausgangspin:

Angle Voltage
0v
ANGLE_MAX°VCC
angle°angle° × VCC / ANGLE_MAX°

※ Notiz:

Der ANGLE_MAX-Wert hängt von den Herstellern ab.

So funktioniert ein Potentiometer

ESP32 - Drehpotentiometer

Der analoge Eingangspin des ESP32 wandelt die Spannung (zwischen 0 V und 3,3 V) in ganzzahlige Werte (zwischen 0 und 4095) um, die als ADC-Wert oder Analogwert bezeichnet werden.

Wir können den Ausgangspin des Potentiometers mit dem analogen Eingangspin des ESP32 verbinden und anschließend den analogen Wert von diesem Pin auslesen.

Der analoge Wert des Eingangs-Pins kann auf einen anderen Wert skaliert werden. Schauen wir uns die Anwendungsfälle an:

  • Skaliere den analogen Wert neu auf den Winkel des Potentiometers.
  • Skaliere den analogen Wert neu auf die Spannung des Potentiometers.
  • Skaliere den analogen Wert neu auf den Einstellwert (z. B. die Lautstärke des Lautsprechers, die Raumtemperatur, die Helligkeit der Lampe...)

Bereich neu skalieren

FROM TO
Anglerotated by userANGLE_MAX°
Voltagefrom potentiometer's pin 0V3.3V
ADC valueread by ESP32 04095
Setting valueconverted by ESP32 VALUE_MINVALUE_MAX

Schaltplan zwischen Potentiometer und ESP32

  • Wie verbindet man ESP32 und Potentiometer mithilfe eines Breadboards Breadboard
ESP32 Potentiometer Verdrahtungsdiagramm

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

So verbinden Sie ESP32 und Potentiometer.

Wie man ein Potentiometer programmiert

  • Lies den Wert von einem Eingangspin, der mit dem Ausgangspin des Potentiometers verbunden ist, indem du die analogRead()-Funktion verwendest.
Der Kommentar enthält nur das Pin-Label GPIO36; es gibt nichts zu übersetzen. Die Zeile bleibt unverändert: analogValue = analogRead(36); // GPIO36
  • Auf den Winkel des Potentiometers neu skalieren, indem man die map() Funktion verwendet.
angle = map(analogValue, 0, 4095, 0, ANGLE_MAX);
  • Auf die Spannung des Potentiometers skalieren:
voltage = map(analogValue, 0, 4095, 0, 3.3);
  • Auf den steuerbaren Wert skalieren (z. B. Lautstärke der Stereoanlage, Helligkeit, Geschwindigkeit des Gleichstrommotors...)
value = map(analogValue, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Zum Beispiel die Helligkeit einer LED neu skalieren. Wie in diesem Tutorial erwähnt, kann die Helligkeit einer LED durch die Verwendung eines PWM-Wertes von 0 (aus) bis 255 (an) gesteuert werden. Daher können wir den analogen Wert der LED-Helligkeit (von AUS bis zur hellsten Einstellung) wie folgt zuordnen:
brightness = map(analogValue, 0, 4095, 0, 255);

Wenn Sie die LED vom Nachtlicht bis zur hellsten Stufe dimmen möchten,

nightlight = 100; // je nach gewünschter Helligkeit brightness = map(analogValue, 0, 4095, nightlight, 255);

※ Notiz:

Die map()-Funktion kann nur verwendet werden, um den analogen Wert auf den Typ int oder long zu skalieren. Wenn der steuerbare Wert vom Typ float ist, müssen Sie stattdessen die floatMap()-Funktion statt der map()-Funktion verwenden.

floatMap() Funktion:

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

ESP32 Code

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin GPIO36: int analogValue = analogRead(36); // Rescale to potentiometer's voltage (from 0V to 3.3V): float voltage = floatMap(analogValue, 0, 4095, 0, 3.3); // print out the value you read: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Schnelle Schritte

Code in der Arduino IDE hochladen
  • Öffnen Sie den seriellen Monitor in der Arduino-IDE
Wie öffnet man den seriellen Monitor in der Arduino-IDE?
  • Drehen Sie das Potentiometer
  • Sehen Sie das Ergebnis im Serial Monitor. Es sieht wie folgt aus:
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Notiz:

Dieses Tutorial verwendet die analogRead() Funktion, um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der an ein Potentiometer angeschlossen ist. Der ESP32-ADC eignet sich gut für Projekte, die keine hohe Genauigkeit benötigen. Für Projekte, die präzise Messungen erfordern, beachten Sie bitte:

  • Der ESP32-ADC ist nicht exakt und muss möglicherweise kalibriert werden, um korrekte Ergebnisse zu erhalten. Jedes ESP32-Board kann sich leicht unterscheiden, daher müssen Sie den ADC für jedes einzelne Board kalibrieren.
  • Die Kalibrierung kann schwierig sein, insbesondere für Anfänger, und liefert möglicherweise nicht immer die gewünschten exakten Ergebnisse.

Für Projekte, die eine hohe Präzision erfordern, ziehen Sie in Erwägung, einen externen ADC (z. B. ADS1115) zusammen mit dem ESP32 zu verwenden oder einen Arduino zu verwenden, der einen zuverlässigeren ADC besitzt. Wenn Sie den ESP32-ADC dennoch kalibrieren möchten, lesen Sie bitte 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.

※ 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!