Arduino - Potentiometer

In diesem Tutorial werden wir lernen:

Über Potentiometer

Drehpotentiometer (auch Drehwinkelsensor genannt) wird verwendet, um den Wert von etwas manuell einzustellen (z. B. die Lautstärke der Stereoanlage, die Helligkeit der Lampe, die Zoomstufe des Oszilloskops...)

Potentiometer-Pinbelegung

Pinbelegung

Potentiometer hat normalerweise drei Anschlüsse:

  • GND-Pin: muss mit GND (0 V) verbunden werden
  • VCC-Pin: muss mit VCC (5 V oder 3,3 V) verbunden werden
  • Ausgangspin: liefert die Spannung an den Eingangspin des Arduino
Potentiometer-Pinbelegung

※ Notiz:

GND-Pin und VCC-Pin sind austauschbar.

Wie es funktioniert

Die Welle des Potentiometers ist von 0° (am nächsten zum GND-Pin) bis zu einem oberen Grenzwinkel (am nächsten zum VCC-Pin) drehbar, genannt ANGLE_MAX.

Die Ausgangsspannung reicht von der GND-Spannung bis zur VCC-Spannung. Die Ausgangsspannung steht in direkter Proportion zum Drehwinkel der Welle.

  • Wenn der Winkel 0° ist, beträgt die Ausgangsspannung des Pins 0 V
  • Wenn der Winkel ANGLE_MAX beträgt, beträgt die Ausgangsspannung des Pins die VCC-Spannung
  • Wenn der Winkel zwischen 0° und ANGLE_MAX liegt, Ausgangsspannung = Winkel × VCC / ANGLE_MAX

※ Notiz:

Der ANGLE_MAX-Wert hängt von den Herstellern ab. In der Praxis kümmern wir uns normalerweise NICHT um den Wert von ANGLE_MAX, außer wenn wir den rotierten Winkel berechnen müssen (siehe Abschnitt der Anwendungsfälle).

Wie funktioniert ein Potentiometer

Arduino - Drehpotentiometer

Die Pins A0 bis A5 des Arduino können als analoge Eingänge verwendet werden. Der analoge Eingangspin wandelt die Spannung (zwischen 0 V und VCC) in ganzzahlige Werte (zwischen 0 und 1023) um, die als ADC-Wert oder Analogwert bezeichnet werden.

Indem wir den Ausgangspin des Potentiometers an einen Analogeingangspin anschließen, können wir den analogen Wert am Pin lesen und ihn anschließend in einen sinnvollen Wert umwandeln.

Der vom Arduino erhaltene Wert ist weder Winkel noch Spannung. Es handelt sich um einen Ganzzahlwert, der von 0 bis 1023 reicht.

Nachdem wir den ganzzahligen Wert vom analogen Eingangspin erhalten haben, skalieren wir diesen Wert auf einen anderen Wert. Schauen wir uns die Anwendungsfälle an.

Anwendungsfälle

  • Auf den Winkel des Potentiometers skalieren.
  • Auf die Spannung des Potentiometers skalieren:
  • Auf den steuerbaren Wert skalieren (z. B. Lautstärke der Stereoanlage, Helligkeit, Geschwindigkeit eines Gleichstrommotors...). Dies ist der am häufigsten verwendete Fall.

Bereich neu skalieren

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

Verdrahtungsdiagramm

Arduino-Potentiometer-Schaltplan

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

Wie man ein Potentiometer programmiert

  • Lies den Wert eines Eingangspins, der mit dem Ausgangspin des Potentiometers verbunden ist, mithilfe der Funktion analogRead().
analogValue = analogRead(A0);
  • Skaliere neu auf den Winkel des Potentiometers, indem du die map()-Funktion verwendest.
angle = map(analogValue, 0, 1023, 0, ANGLE_MAX);
  • Auf die Spannung des Potentiometers skalieren:
voltage = map(analogValue, 0, 1023, 0, VCC);
  • Auf den steuerbaren Wert skalieren (z. B. die Lautstärke einer Stereoanlage, Helligkeit, Geschwindigkeit eines Gleichstrommotors...)
value = map(analogValue, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Zum Beispiel die Anpassung der Helligkeit einer LED. Wie in diesem Tutorial erwähnt, kann die Helligkeit einer LED durch die Verwendung eines PWM-Werts von 0 (immer AUS) bis 255 (immer AN) gesteuert werden. Daher können wir den analogen Wert der LED-Helligkeit wie folgt zuordnen (von AUS bis zur maximalen Helligkeit):
brightness = map(analogValue, 0, 1023, 0, 255);

Wenn Sie das LED-Licht vom Nachtlicht bis zur hellsten Stufe dimmen möchten,

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

※ Notiz:

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

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; }

Arduino-Code

/* * Dieser Arduino Code wurde von newbiely.de entwickelt * Dieser Arduino 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/arduino/arduino-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; } // Die Setup-Routine läuft einmal, wenn Sie den Reset drücken: void setup() { // Initialisiere die serielle Kommunikation mit 9600 Bit/s: Serial.begin(9600); } // Die Loop-Routine läuft endlos immer wieder: void loop() { // Den Eingang am analogen Pin A0 lesen: int analogValue = analogRead(A0); // Auf die Potentiometer-Spannung neu skalieren (von 0V bis 5V): float voltage = floatMap(analogValue, 0, 1023, 0, 5); // Den gelesenen Wert ausgeben: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Schnelle Schritte

  • Kopiere den obigen Code und öffne ihn mit der Arduino IDE
  • Klicke in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf den Arduino hochzuladen
Code in der Arduino-IDE hochladen
  • Den seriellen Monitor öffnen
  • Das Potentiometer drehen
  • Das Ergebnis im seriellen Monitor sehen
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: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

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.

Fordere dich heraus

Verwenden Sie das Potentiometer, um eines der folgenden Projekte durchzuführen:

Zusätzliches Wissen

  • GND-Pin und VCC-Pin sind austauschbar. Es gibt keine festgelegte Konvention für diese beiden Pins. Wenn Sie einen Pin als GND-Pin auswählen, ist der andere der VCC-Pin. Es gibt nur eine Sache, auf die Sie achten müssen. Der Spannungswert am Ausgangspin wird invertiert, wenn wir diese Pins vertauschen.

Funktionsreferenzen

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