Arduino Nano - Potentiometer

Deze tutorial legt uit hoe u de Arduino Nano gebruikt met een potentiometer, ook wel bekend als pot, trimmer, variabele weerstand, rheostaat of rotary angle sensor (draaihoek-sensor). In detail leren we:

Over de Potentiometer

Een rotary potentiometer, ook bekend als rotary angle sensor (draaihoek-sensor), wordt gebruikt om handmatig de waarde van iets aan te passen. Voorbeelden zijn het volume van een stereo, de helderheid van een lamp en het zoomniveau van een oscilloscoop.

Potentiometer pinout

De Pinout van de Potentiometer

Een potentiometer heeft doorgaans drie pinnen:

  • De GND-pin moet worden verbonden met ground (0V).
  • De VCC-pin moet verbonden worden met VCC (5V of 3,3V).
  • De output pin levert de spanning aan de Arduino’s input pin.
Potentiometer pinout

※ Notiz:

De GND- en VCC-pinnen kunnen omgewisseld worden.

Hoe Het Werkt

De draaibare as van de potentiometer heeft een bereik van 0° (dichtst bij GND) tot de maximale hoek (dichtst bij de VCC-pin), aangeduid als ANGLE_MAX.

※ Notiz:

De waarde van ANGLE_MAX wordt bepaald door de fabrikant. Over het algemeen hoeft u deze waarde niet in overweging te nemen, tenzij u de draaihoek wilt berekenen (zie de use cases sectie).

How Potentiometer Works

Het werkingsprincipe is als volgt:

  • Een gebruiker draait aan de as van de potentiometer
  • ⇒ De hoek van de potentiometer verandert
  • ⇒ De weerstand van de potentiometer verandert
  • ⇒ De spanning op de output pin van de potentiometer verandert
  • ⇒ De analoge waarde die Arduino Nano leest verandert

Arduino Nano - Rotary Potentiometer

De pinnen A0 tot en met A7 van Arduino Nano kunnen fungeren als analoge ingangen. Deze analoge ingangen zetten de spanning (variërend van 0 volt tot VCC) om in gehele getallen (van 0 tot 1023), ook bekend als de ADC-waarde of analoge waarde.

We kunnen een output pin van de potentiometer verbinden met een analoge ingang spin. Hierdoor kunnen we die analoge waarde uitlezen en omzetten naar een betekenisvolle waarde.

De waarde die Arduino Nano ontvangt is geen hoek of spanning, maar een geheel getal tussen 0 en 1023.

Zodra we de gehele waarde van de analoge ingang pin hebben, kunnen we deze herschalen naar een andere waarde. Laten we de toepassingen hiervan bekijken.

Toepassingen

  • Herschalen naar de hoek van de potentiometer.
  • Herschalen naar de spanning van de potentiometer.
  • Herschalen naar een regelbare waarde, zoals het volume van een stereo, helderheid of snelheid van een DC-motor - dit is de meest voorkomende toepassing.

Herschalingsbereik

FROM TO
Hoek door gebruiker gedraaidANGLE_MAX
Spanning vanaf potentiometer pin 0VVCC
ADC waarde uitgelezen door Arduino 01023
Andere waarde geconverteerd door Arduino VALUE_MINVALUE_MAX

Bedradingsschema

Arduino Nano Potentiometer bedrading schema

This image is created using Fritzing. Click to enlarge image

Hoe Programmeer Ik Voor Potentiometer

  • Lees de waarde uit van een input pin, verbonden met de output pin van de potentiometer, met de analogRead() functie.
analog_value = analogRead(A5);
  • Gebruik de map() functie om de hoek van de potentiometer aan te passen.
angle = map(analog_value, 0, 1023, 0, ANGLE_MAX);
  • Pas de spanning aan volgens het niveau van de potentiometer.
voltage = map(analog_value, 0, 1023, 0, VCC);
  • Herschalen naar een waarde die beheersbaar of instelbaar is (bijvoorbeeld volume van een stereo, helderheid, snelheid van een DC-motor ...)
value = map(analog_value, 0, 1023, VALUE_MIN, VALUE_MAX);
  • Bijvoorbeeld: de helderheid van een LED aanpassen. Zoals in deze tutorial wordt vermeld, kan de helderheid van een LED geregeld worden met een PWM-waarde van 0 (altijd UIT) tot 255 (altijd AAN). We kunnen dus de analoge waarde mappen naar de helderheid van de LED (van UIT tot de felste stand) als volgt:
brightness = map(analog_value, 0, 1023, 0, 255);

Als u de LED wilt aanpassen van zwak nachtlicht tot het helderste niveau,

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

※ Notiz:

De map() functie is alleen toepasbaar om een analoge waarde te herschalen naar een int of long type. Als de regelbare waarde van het type float is, dient floatMap() gebruikt te worden in plaats van map().

De floatMap() functie: Het is een functie die een lijst met floats als argument neemt en een nieuwe lijst met hetzelfde aantal elementen teruggeeft, waarbij elk element het resultaat is van het toepassen van de gegeven functie op het overeenkomende element van de oorspronkelijke lijst.

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 Nano Code

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-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 function runs once on reset or power-up void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); } // The loop function repeats indefinitely. void loop() { // read the input on analog pin A5: int analog_value = analogRead(A5); // Rescale to potentiometer's voltage (from 0V to 5V): float voltage = floatMap(analog_value, 0, 1023, 0, 5); // print out the value you read: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

Snel Aan de Slag

  • Kopieer de code en open deze met de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino Nano te sturen.
Arduino IDE Upload Code
  • 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 Uzélf Uit

Gebruik de potentiometer om een van deze projecten te realiseren:

Extra Kennis

  • De GND- en VCC-pinnen kunnen zonder specifieke conventie gewisseld worden. Wel is het belangrijk om te weten dat de spanningswaarde op de output pin wordt omgekeerd wanneer deze pinnen van plaats wisselen.

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!