ESP32 - Servo Motor aangestuurd door Potentiometer

Deze handleiding legt uit hoe u ESP32 gebruikt in combinatie met een servo motor en een potentiometer. Meer specifiek is de hoek van een servo motor recht evenredig met de waarde die wordt uitgelezen van een potentiometer.

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Servomotor
1×Potentiometer
1×(Alternatief) Potentiometer Kit
1×(Alternatief) Potentiometer Module met Knop
1×Breadboard (experimenteerprint)
1×Jumper draden
1×(Optioneel) DC Power Jack
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

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 Servo Motor en Potentiometer

We hebben aparte tutorials over servo motor en potentiometer. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over hardware pinout, werkingsprincipe, bekabeling naar ESP32 en ESP32 code… Leer meer over deze onderwerpen via de volgende links:

Bedradingsschema

ESP32 Servo Motor Potentiometer Bedradingsschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-servo-motor-controlled-by-potentiometer */ #include <ESP32Servo.h> #define PIN_POTENTIOMETER 36 // ESP32 pin GPIO36 (ADC0) onnected to potentiometer #define PIN_SERVO 26 // ESP32 pin GPIO26 onnected to servo motor Servo myServo; // create servo object to control a servo 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); myServo.attach(PIN_SERVO); // attaches ESP32 pin to the servo object } void loop() { // reads the value of the potentiometer (value between 0 and 4095) int analogValue = analogRead(PIN_POTENTIOMETER); // scales it to use it with the servo (value between 0 and 180) int angle = map(analogValue, 0, 4095, 0, 180); // sets the servo position according to the scaled value myServo.write(angle); // print out the value Serial.print("Analog value: "); Serial.print(analogValue); Serial.print(" => Angle: "); Serial.println(angle); delay(100); }

Snelle Stappen

  • Als u ESP32 voor het eerst gebruikt, bekijk dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Maak de bedrading volgens bovenstaand schema.
  • Verbind de ESP32-module met uw PC via een micro USB-kabel.
  • Open Arduino IDE op uw PC.
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Klik op het Libraries icoon in de linkerzijbalk van de Arduino IDE.
  • Typ ESP32Servo in het zoekveld en zoek de servo bibliotheek van Kevin Harrington, John K. Bennett.
  • Klik op Install om de servo motor bibliotheek voor ESP32 te installeren.
ESP32 servo motor bibliotheek
  • Kopieer de bovenstaande code en plak deze in Arduino IDE.
  • Compileer en upload de code naar de ESP32 door te klikken op de Upload knop in Arduino IDE.
Arduino IDE Code Uploaden
  • Open de Seriële Monitor in Arduino IDE.
Seriële Monitor openen in Arduino IDE
  • Stel de potentiometer af.
  • Kijk hoe de servo motor draait.
  • Bekijk het resultaat op de Seriële Monitor. Dit ziet eruit als volgt:
COM6
Send
Analog value: 0 => Angle: 0 Analog value: 85 => Angle: 14 Analog value: 201 => Angle: 35 Analog value: 286 => Angle: 50 Analog value: 370 => Angle: 65 Analog value: 444 => Angle: 78 Analog value: 521 => Angle: 91 Analog value: 608 => Angle: 106 Analog value: 690 => Angle: 121 Analog value: 793 => Angle: 139 Analog value: 907 => Angle: 159 Analog value: 4095 => Angle: 180 Analog value: 4095 => Angle: 180
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Regel-voor-regel Code Uitleg

De bovenstaande ESP32 code bevat uitleg per regel. Lees alstublieft de opmerkingen in de code!

※ Notiz:

Deze tutorial maakt gebruik van de functie analogRead() om waarden uit te lezen van een ADC (Analog-to-Digital Converter) die verbonden is met een potentiometer. De ESP32 ADC is geschikt voor projecten die GEEN hoge nauwkeurigheid vereisen. Voor projecten die wel precieze metingen nodig hebben, let op het volgende:

  • De ESP32 ADC is niet perfect nauwkeurig en kan kalibratie vereisen voor correcte resultaten. Elk ESP32 board kan iets afwijken, dus u dient de ADC per bord te kalibreren.
  • Kalibratie kan lastig zijn, vooral voor beginners, en levert mogelijk niet altijd de gewenste exacte resultaten op.

Voor projecten met hoge precisie kunt u overwegen een externe ADC (bijv. ADS1115) te gebruiken met de ESP32, of een Arduino te gebruiken, die doorgaans een betrouwbaardere ADC heeft. Wilt u toch de ESP32 ADC kalibreren, raadpleeg dan de ESP32 ADC Calibration Driver

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten over het aansluiten en programmeren van de servo motor met potentiometer op ESP32.

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