ESP32 C3 Super Mini - Potentiometer

Ein Potentiometer ist der einfachste Weg, Ihrem ESP32 C3 Super Mini Projekt einen Drehregler hinzuzufügen. Drehen Sie den Knopf, und das Board liest eine Zahl, die Sie für Lautstärke, Helligkeit, Geschwindigkeit oder jede andere Einstellung verwenden können. Es ist ein großartiges erstes Analogprojekt für Einsteiger.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini - Potentiometer

Erforderliche Hardware

1×ESP32 C3 Super Mini
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

Oder Sie können die folgenden Kits kaufen:

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.

Überblick über Potentiometer

Ein Potentiometer (auch Drehwinkelsensor genannt) ist ein Drehknopf, der eine Einstellung ändert, zum Beispiel die Lautstärke eines Lautsprechers, die Temperatur eines Raumes oder die Helligkeit einer Lampe.

Hauptmerkmale:

  • Einfach: Nur 3 Pins, keine Bibliothek erforderlich.
  • Günstig: Eines der preiswertesten Bauteile, die Sie kaufen können.
  • Analoger Ausgang: Liefert eine gleichmäßige Spannung, nicht nur EIN/AUS.
  • Stromsparend: Verbraucht fast keinen Strom.

Technische Daten:

  • Betriebsspannung: 3,3V oder 5V (verwenden Sie 3,3V mit dem ESP32 C3 Super Mini)
  • Ausgang: 0V bis zur Spannung am VCC-Pin
  • Drehung: 0° bis zu einem vom Hersteller festgelegten maximalen Winkel
  • Übliche Werte: 10kΩ ist am gebräuchlichsten
Pinbelegung des Potentiometers

Pinbelegung des Potentiometers

Ein Potentiometer hat normalerweise 3 Pins.

  • VCC-Pin: Verbinden Sie diesen Pin mit VCC (3,3V am ESP32 C3 Super Mini)
  • GND-Pin: Verbinden Sie diesen Pin mit GND (0V)
  • Ausgangs-Pin: Gibt die Spannung an den analogen Eingangspin des ESP32 C3 Super Mini aus
Pinbelegung des Potentiometers

※ Notiz:

Der GND-Pin und der VCC-Pin sind austauschbar

WARNING

Versorgen Sie das Potentiometer immer mit 3,3V, nicht mit 5V. Die GPIO-Pins des ESP32 C3 Super Mini vertragen nur 3,3V, und 5V am Ausgangs-Pin können das Board beschädigen.

Wie ein Potentiometer funktioniert

Die Welle dreht sich von 0° (am nächsten zum GND-Pin) bis zu einem maximalen Winkel (am nächsten zum VCC-Pin), der ANGLE_MAX genannt wird.

  • Kurz gesagt: mehr Winkel = mehr Spannung am Ausgangs-Pin.
  • Die Ausgangsspannung ist direkt proportional zur Position der Welle, von 0 bis VCC.

Die folgende Tabelle zeigt den Zusammenhang zwischen dem Winkel und der Spannung am Ausgangs-Pin:

Winkel Spannung
0°0v
ANGLE_MAX°VCC
Winkel°Winkel° × VCC / ANGLE_MAX°

※ Notiz:

Der Wert ANGLE_MAX hängt vom Hersteller ab.

Wie ein Potentiometer funktioniert

ESP32 C3 Super Mini - Dreh-Potentiometer

Der analoge Eingangspin des ESP32 C3 Super Mini wandelt eine Spannung in eine Zahl um.

  • Eingangsbereich: 0V bis 3,3V
  • Ausgabezahl: 0 bis 4095 (dies wird ADC-Wert oder Analogwert genannt)
  • Auflösung: 12 Bit, also insgesamt 4096 Stufen
  • Analog-Pins auf diesem Board: Nur GPIO0 bis GPIO4. Dieses Tutorial verwendet GPIO4.

Verbinden Sie den Ausgangs-Pin des Potentiometers mit einem analogen Eingangspin des ESP32 C3 Super Mini und lesen Sie dann den Analogwert von diesem Pin.

Der Analogwert kann in einen anderen Wert umgerechnet werden. Hier sind die häufigsten Anwendungsfälle:

  • In einen Winkel: wissen, wie weit der Knopf gedreht ist.
  • In eine Spannung: die tatsächliche Spannung am Ausgangs-Pin sehen.
  • In einen Einstellwert: Lautstärke, Temperatur, Helligkeit, Motordrehzahl und so weiter.

Umrechnungsbereich

VON BIS
Winkelvom Benutzer gedreht 0° → ANGLE_MAX°
Spannungvom Pin des Potentiometers 0V → 3,3V
ADC-Wertvom ESP32 C3 Super Mini gelesen 0 → 4095
Einstellwertvom ESP32 C3 Super Mini umgerechnet VALUE_MIN → VALUE_MAX

Schaltplan zwischen Potentiometer und ESP32 C3 Super Mini

Die Verdrahtung ist einfach: zwei Stromleitungen und eine Signalleitung.

  • Hinweis: Verwenden Sie den 3,3V-Pin für VCC. Verwenden Sie niemals 5V.
  • Hinweis: Die Signalleitung geht an GPIO4, einen analogfähigen Pin.
  • Hinweis: Verwenden Sie nicht GPIO8 oder GPIO9. Das sind Strapping-Pins, die das Booten des Boards verhindern können.
  • Hinweis: GPIO20 und GPIO21 sind der UART des seriellen Monitors. Lassen Sie sie frei.
Potentiometer-Pin ESP32 C3 Super Mini Pin
VCC 3,3V
GND GND
Ausgang GPIO4
ESP32 C3 Super Mini Potentiometer Schaltplan

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

Wie man ein Potentiometer programmiert

Das Lesen eines Potentiometers erfordert nur eine Funktion und danach ein wenig Mathematik.

  • Lesen Sie den Wert vom analogen Eingangspin, der mit dem Ausgangs-Pin des Potentiometers verbunden ist, mit der Funktion analogRead().
analog_value = analogRead(4); // GPIO4
  • Rechnen Sie mit der Funktion map() in den Winkel des Potentiometers um.
angle = map(analog_value, 0, 4095, 0, ANGLE_MAX);
  • Rechnen Sie in die Spannung des Potentiometers um:
voltage = map(analog_value, 0, 4095, 0, 3.3);
  • Rechnen Sie in den steuerbaren Wert um (z. B. Lautstärke einer Stereoanlage, Helligkeit, Drehzahl eines DC-Motors ...)
value = map(analog_value, 0, 4095, VALUE_MIN, VALUE_MAX);
  • Zum Beispiel die Umrechnung in die Helligkeit einer LED. Wie in diesem Tutorial erwähnt, kann die Helligkeit einer LED mit einem PWM-Wert von 0 (immer AUS) bis 255 (immer EIN) gesteuert werden. Daher können wir den Analogwert wie folgt auf die Helligkeit der LED (von AUS bis zur hellsten Stufe) abbilden:
brightness = map(analog_value, 0, 4095, 0, 255);

Wenn Sie die LED von einer Nachtlicht-Stufe bis zur hellsten Stufe dimmen möchten,

nightlight = 100; // depending on your desired brightness brightness = map(analog_value, 0, 4095, nightlight, 255);

※ Notiz:

Verwenden Sie immer 4095 als Obergrenze des Eingangsbereichs, nicht 1023. Der ESP32 C3 Super Mini hat einen 12-Bit-ADC. Code, der von einem älteren 10-Bit-Board kopiert wurde, verwendet oft 1023 und liefert auf diesem Board falsche Ergebnisse.

※ Notiz:

Die Funktion map() kann nur verwendet werden, um den Analogwert in einen Wert vom Typ int oder long umzurechnen. Wenn der steuerbare Wert vom Typ float ist, müssen Sie anstelle der Funktion map() die Funktion floatMap() verwenden.

Funktion floatMap():

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 C3 Super Mini Code

Der folgende Code liest das Potentiometer an GPIO4 und gibt sowohl den Rohwert als auch die Spannung aus.

Was dieser Code macht:

  • Startet Serial: öffnet den seriellen Monitor mit 115200 Baud.
  • Stellt den ADC ein: analogSetAttenuation(ADC_11db) ermöglicht dem Pin, den vollen Bereich von 0V bis 3,3V zu lesen.
  • Liest den Knopf: analogRead() liefert eine Zahl von 0 bis 4095.
  • Rechnet in Volt um: floatMap() wandelt diese Zahl in eine Spannung mit Nachkommastellen um.
  • Gibt einmal pro Sekunde aus: leicht zu verfolgen, während Sie den Knopf drehen.
/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini 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-c3/esp32-c3-super-mini-potentiometer */ #define POTENTIOMETER_PIN 4 // The ESP32 C3 SuperMini pin connected to the potentiometer's output pin 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 the Serial to communicate with the Serial Monitor. Serial.begin(115200); // 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 GPIO4: int analog_value = analogRead(POTENTIOMETER_PIN); // Rescale to potentiometer's voltage (from 0V to 3.3V): float voltage = floatMap(analog_value, 0, 4095, 0, 3.3); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Schnelle Schritte

  • Neu beim ESP32 C3 Super Mini? Absolvieren Sie zuerst unser Tutorial Erste Schritte mit dem ESP32 C3 Super Mini, um Ihre Entwicklungsumgebung einzurichten.
  • Verdrahten: Verbinden Sie das Potentiometer wie oben gezeigt mit 3,3V, GND und GPIO4.
  • Board anschließen: Verbinden Sie den ESP32 C3 Super Mini mit einem USB-Typ-C-Kabel mit Ihrem Computer.
  • IDE öffnen: Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Board auswählen: Stellen Sie sicher, dass ESP32 C3 Super Mini unter Werkzeuge > Board ausgewählt ist.
  • Port auswählen: Wählen Sie den COM-Port Ihres Boards unter Werkzeuge > Port.
  • Hochladen: Klicken Sie in der Arduino IDE auf die Schaltfläche Upload.
  • Seriellen Monitor öffnen: Stellen Sie die Baudrate auf 115200 ein.
  • Knopf drehen: Drehen Sie das Potentiometer langsam von einem Ende zum anderen.
  • Ergebnis prüfen: Der serielle Monitor zeigt den sich ändernden Wert. Das sieht wie folgt aus:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
Analog: 0, Voltage: 0.00 Analog: 128, Voltage: 0.10 Analog: 642, Voltage: 0.52 Analog: 1487, Voltage: 1.20 Analog: 2059, Voltage: 1.66 Analog: 3310, Voltage: 2.67 Analog: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2
  • Profi-Tipp: Wenn der Wert nie 0 oder 4095 erreicht, prüfen Sie, ob VCC und GND fest verbunden sind. Ein lockeres Kabel ist die häufigste Ursache.

※ Notiz:

Dieses Tutorial verwendet die Funktion analogRead(), um Werte von einem ADC (Analog-Digital-Wandler) zu lesen, der mit einem Sensor oder Bauteil verbunden ist. Der ADC des ESP32 C3 Super Mini eignet sich für Projekte, die keine hohe Genauigkeit erfordern. Für Projekte mit präzisen Messungen sollten Sie jedoch Folgendes beachten:

  • Der ADC des ESP32 C3 Super Mini ist nicht vollkommen genau und muss für korrekte Ergebnisse eventuell kalibriert werden. Jedes ESP32 C3 Super Mini Board kann leicht abweichen, daher ist eine Kalibrierung für jedes einzelne Board notwendig.
  • Die Kalibrierung kann schwierig sein, besonders für Anfänger, und liefert nicht immer genau die gewünschten Ergebnisse.

Für Projekte mit hoher Präzision sollten Sie einen externen ADC (z. B. ADS1115) mit dem ESP32 C3 Super Mini verwenden oder ein anderes Board mit einem zuverlässigeren ADC wählen. Wenn Sie den ADC des ESP32 C3 Super Mini dennoch kalibrieren möchten, lesen Sie den ESP32 ADC Calibration Driver.

Projektideen

Sobald der Knopf funktioniert, versuchen Sie damit etwas Echtes zu steuern.

  • Dimmschalter: Drehen Sie den Knopf, um die Helligkeit einer LED zu ändern.
  • Lautstärkeregler: Stellen Sie die Lautstärke eines Summers oder Lautsprechers ein.
  • Servo-Steuerung: Bewegen Sie einen Servomotor auf den gewählten Winkel.
  • Motordrehzahl-Regler: Ändern Sie die Drehzahl eines DC-Motors oder Lüfters.
  • Schwellwert-Einsteller: Stellen Sie mit dem Knopf die Alarmschwelle eines Sensors ein, ohne den Code zu bearbeiten.
  • Menüauswahl: Blättern Sie durch Optionen auf einem OLED- oder LCD-Bildschirm.

Fordern Sie sich selbst heraus

Probieren Sie diese kleinen Erweiterungen aus, um mehr über analoge Eingänge am ESP32 C3 Super Mini zu lernen.

  • Einfach: Geben Sie den Wert als Prozentsatz von 0% bis 100% statt als Rohwert aus.
  • Einfach: Ändern Sie die Verzögerung, sodass der Wert 10 Mal pro Sekunde aktualisiert wird.
  • Mittel: Bilden Sie den Wert auf einen Winkel von 0° bis 270° ab und geben Sie ihn aus.
  • Mittel: Bilden Sie den Mittelwert aus 10 Messungen vor der Ausgabe, um den Wert zu stabilisieren.
  • Fortgeschritten: Stellen Sie mit dem Knopf die Helligkeit einer LED an GPIO3 per PWM ein.
  • Fortgeschritten: Fügen Sie ein zweites Potentiometer an GPIO2 hinzu und lesen Sie beide Knöpfe gleichzeitig.

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!