Arduino - Potentiometer

In deze tutorial leert u:

Hardware Required

1×Arduino Uno R3
1×USB 2.0-kabel type A/B
1×Potentiometer
1×(Alternatief) Potentiometer Set
1×(Alternatief) Potentiometer Module met Knop
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Potentiometer

Een draaipotentiometer (ook wel draaishoeksensor genoemd) wordt gebruikt om handmatig de waarde van iets aan te passen (bijvoorbeeld het volume van een stereo, de helderheid van een lamp, zoomniveau van een oscilloscoop...).

Potentiometer Pinout

Pinout

Een potentiometer heeft meestal 3 pinnen:

  • GND pin: moet verbonden zijn met GND (0V)
  • VCC pin: moet verbonden zijn met VCC (5V of 3,3V)
  • Output pin: levert de spanning aan de input pin van de Arduino.
Potentiometer Pinout

※ Notiz:

GND pin en VCC pin zijn omwisselbaar

Hoe Het Werkt

De as van de potentiometer is draaibaar van 0° (dichtst bij GND) tot een bovengrenshoek (dichtst bij VCC pin), genaamd ANGLE_MAX.

De spanning op de output pin varieert van de spanning bij GND tot de spanning bij VCC. De outputspanning is recht evenredig met de gedraaide hoek van de as.

  • Bij een hoek van 0° is de spanning van de output pin 0V
  • Bij een hoek van ANGLE_MAX is de spanning van de output pin gelijk aan de spanning van VCC
  • Bij een hoek ergens tussen 0° en ANGLE_MAX geldt: output_voltage = hoek × VCC / ANGLE_MAX

※ Notiz:

De waarde van ANGLE_MAX hangt af van de fabrikant. In de praktijk houden we ons meestal niet bezig met de exacte waarde van ANGLE_MAX, behalve wanneer we de gedraaide hoek willen berekenen (zie gebruikssituaties).

Hoe Potentiometer Werkt

Arduino - Draaipotentiometer

De Arduino-pinnen A0 tot A5 kunnen fungeren als analoge ingangen. De analoge ingang zet de spanning (tussen 0V en VCC) om naar een geheel getal (tussen 0 en 1023), het zogenaamde ADC-waarde of analoge waarde.

Door de output pin van de potentiometer te verbinden met een analoge input pin kunnen we deze analoge waarde uitlezen en dan omzetten naar een betekenisvolle waarde.

De waarde die Arduino verkrijgt is NIET de hoek, NIET de spanning, maar een geheel getal tussen 0 en 1023.

Na het uitlezen van deze geheel getalwaarde van de analoge pin, schalen we deze waarde opnieuw naar een andere schaal. Bekijk de gebruikssituaties hieronder.

Gebruikssituaties

  • Omzetten naar de hoek van de potentiometer.
  • Omzetten naar de spanning van de potentiometer.
  • Omzetten naar een regelbare waarde (bijvoorbeeld volume van de stereo, helderheid, snelheid van een DC motor...). Dit is de meest gebruikte situatie.

Herschalingsbereik

VAN NAAR
Hoekdoor gebruiker gedraaidANGLE_MAX
Spanningvan de pin van potentiometer 0VVCC
ADC-waardeuitgelezen door Arduino 01023
Andere waardeomgezet door Arduino VALUE_MINVALUE_MAX

Aansluitschema

Arduino Potentiometer Aansluitschema

This image is created using Fritzing. Click to enlarge image

Hoe Te Programmeren Voor Potentiometer

  • Lees de waarde van een input pin die verbonden is met de output pin van de potentiometer met de functie analogRead().
analogValue = analogRead(A0);
  • Herschalen naar de hoek van de potentiometer met de functie map().
angle = map(analogValue, 0, 1023, 0, ANGLE_MAX);
  • Herschalen naar de spanning van de potentiometer:
voltage = map(analogValue, 0, 1023, 0, VCC);
  • Herschalen naar een regelbare waarde (bijv. volume van stereo, helderheid, snelheid van DC motor...).
value = map(analogValue, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Bijvoorbeeld, herschalen naar de helderheid van een LED. Zoals in deze tutorial vermeld, kan de helderheid van een LED worden geregeld met een PWM-waarde van 0 (altijd UIT) tot 255 (altijd AAN). Daarom kunnen we de analoge waarde mappen naar de helderheid van de LED (van UIT tot de felste) als volgt:
brightness = map(analogValue, 0, 1023, 0, 255);

Als u de LED wilt dimmen van het nachtlampje tot de felste stand,

nightlight = 100; // afhankelijk van de gewenste helderheid brightness = map(analogValue, 0, 1023, nightlight, 255);

※ Notiz:

De functie map() kan alleen worden gebruikt om een analoge waarde om te zetten naar een waarde van het type int of long. Als de regelbare waarde een float type is, moet u in plaats daarvan de functie floatMap() gebruiken.

floatMap() functie:

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

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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; } // de setup-routine wordt één keer uitgevoerd nadat u op reset drukt: void setup() { // initialiseer seriële communicatie met 9600 bits per seconde: Serial.begin(9600); } // de loop-routine wordt continu herhaald: void loop() { // lees de input van analoge pin A0: int analogValue = analogRead(A0); // Herschalen naar spanning van potentiometer (van 0V tot 5V): float voltage = floatMap(analogValue, 0, 1023, 0, 5); // print de uitgelezen waarde: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Snelle Stappen

  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino te uploaden
Arduino IDE Code Uploaden
  • Open de Seriële Monitor
  • Draai aan de potentiometer
  • Bekijk het resultaat in de Seriële Monitor
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

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Daag uzelf uit

Gebruik de potentiometer om één van de volgende projecten te maken:

Extra Kennis

  • GND pin en VCC pin zijn omwisselbaar. Er is geen vaste conventie voor deze twee pinnen. Als u één pin kiest als GND, dan is de andere vanzelf VCC. Let wel op het volgende: de uitgangsspanning op de output pin wordt omgekeerd wanneer u deze pinnen omwisselt.

Functie Referenties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!