This tutorial is part of: Servomotoren
Alle video's over servomotoren die hiermee verband houden, staan hier vermeld. Links naar andere video's vindt u onder dit artikel.
Arduino Servo Motorbesturing met een Potentiometer
In deze tutorial zullen we verkennen hoe we een servomotor kunnen aansturen met een potentiometer en een Arduino. Het doel is om een eenvoudige schakeling te creëren waarbij de positie van de servo wordt aangepast op basis van de rotatie van de potentiometer. Aan het einde van dit project heb je een werkend model dat de servohoek soepel varieert van 0 tot 180 graden terwijl je de potentiometer draait. Dit is een geweldige manier om de basisprincipes van analoge invoer en servocontrole in Arduino te begrijpen.
Om dit te bereiken, zullen we een Arduino-bord, een servomotor en een potentiometer gebruiken. De potentiometer fungeert als een variabele weerstand en biedt een analoge invoer aan de Arduino, die vervolgens de positie van de servomotor dienovereenkomstig zal bepalen. Dit project is niet alleen leuk, maar ook educatief, omdat het belangrijke concepten in elektronica en programmeren demonstreert. Voor een meer diepgaande uitleg, zorg ervoor dat je de video bekijkt (in video om 00:00).
Hardware Uitleg
In dit project zijn de belangrijkste componenten de Arduino-bord, de servomotor en de potentiometer. De Arduino is de hersenen van de operatie, die invoer verwerkt en uitvoer controleert. De servomotor is wat fysiek zal bewegen op basis van de commando's die het ontvangt van de Arduino. De potentiometer kan 1k ohm tot 1M ohm zijn en stelt gebruikers in staat om een variabele invoer te geven die vertaalt naar servobeweging.
De servomotor werkt door een PWM (Pulse Width Modulation) signaal te ontvangen dat de gewenste positie aangeeft. De potentiometer, wanneer deze wordt gedraaid, verandert zijn weerstand, die door de Arduino wordt gelezen als een analoge spanning. Servomotoren werken met 5V. Werkt niet met 3,3V. Deze spanning wordt vervolgens in kaart gebracht naar het bewegingsbereik van de servomotor, wat een soepele beweging van 0 graden tot 180 graden mogelijk maakt.
Datasheet details voor SG90 servo motor
| Fabrikant | Parallax |
|---|---|
| Onderdeelnummer | SG90 |
| Logica/IO spanning | 5 V |
| Voedingsspanning | 4,8-6 V |
| Uitgangsstroom (per kanaal) | ~500 mA |
| Piekstroom (per kanaal) | 1 A |
| PWM frequentie richtlijnen | 50 Hz |
| Ingangslogische drempels | 0,5 V (laag), 2,5 V (hoog) |
| Spanningsval / RDS(on)/ verzadiging | 0,5 V bij 500 mA |
| Thermische limieten | 0°C tot 60°C |
| Pakket | Standaard 9g Servo |
| Notities / varianten | Veel gebruikt in RC-toepassingen |
- Zorg ervoor dat de servo zijn maximale stroomwaarde niet overschrijdt.
- Gebruik een koellichaam als de servo continu bij hoge belastingen werkt.
- Sluit de potentiometer aan op een analoge pin voor nauwkeurige metingen.
- Wees voorzichtig met de timing van het PWM-signaal voor de servo-besturing.
- Controleer het bewegingsbereik van de servo om fysieke obstructies te vermijden.
Bedradinginstructies


Voor deze opstelling moet je de componenten als volgt aansluiten:
Verbind de middelste pin (veegcontact) van de potentiometer met de analoge pin van de Arduino.A0. De andere twee pinnen van de potentiometer moeten worden aangesloten op5VenGNDaan de Arduino. Voor de servomotor, verbind de rode draad met5V, de zwarte draad naarGND, en de gele of witte draad naar digitale pin9op de Arduino. Deze opstelling stelt de potentiometer in staat om een analoge invoer naar de Arduino te geven, die de positie van de servomotor op basis van die invoer zal regelen.
Zorg ervoor dat je alle verbindingen controleert en ervoor zorgt dat de servo niet wordt belemmerd in zijn bewegingsbereik. Als je een ander Arduino-model gebruikt, bevestig dan dat de pintoewijzingen voor de analoge invoer en servo-uitgang compatibel zijn.
Codevoorbeelden en Stappenplan
Hieronder staat een fragment van de code die de servo initialiseert en de waarde van de potentiometer leest:
#include
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
In deze code voegen we de Servo-bibliotheek toe en maken we een servo-object genaamdmyservoDe servo is bevestigd aan pin9, wat ons in staat stelt het te bedienen met deze pin.
void loop() {
int sensorValue = analogRead(A0); // read the potentiometer
pos = map(sensorValue, 0, 1023, 0, 180); // map to servo position
myservo.write(pos); // move servo to position
delay(15); // waits 15ms for the servo to reach the position
}
In de loopfunctie lezen we de potentiometerwaarde van pinA0en map het van zijn bereik (0-1023) naar het bereik van de servo (0-180 graden). Demyservo.write(pos)de opdracht verplaatst de servo naar de gewenste positie op basis van de rotatie van de potentiometer.
Demonstratie / Wat te Verwachten
Wanneer je dit programma uitvoert, zou je de servomotor soepel van 0 naar 180 graden moeten zien bewegen terwijl je de potentiometer draait. Als de servo niet beweegt zoals verwacht, controleer dan de bedrading en zorg ervoor dat de potentiometer correct functioneert. Zorg er daarnaast voor dat de Arduino goed van stroom is voorzien en dat de code zonder fouten is geüpload. Je kunt verwachten dat de servo de positie van de potentiometer in real-time weergeeft (in video om 02:00).
Videotijdstempels
- 00:00- Inleiding tot het project
- 01:30- Uitleg over de hardwareconfiguratie
- 03:45- Draadinstructies
- 05:00- Code doorloop
- 07:30- Demonstratie van het voltooide project
This tutorial is part of: Servomotoren
- Controlling a Servo with Push Buttons Using Arduino
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controlling a Servo with a Potentiometer Using Arduino
- Controlling a Servo with Potentiometer and LCD1602 using Arduino
- Controlling Servo Motors Using an Infrared Remote with Arduino
- Servo-positie besturen met handgebaren voor Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Arduino Code and Video for PCA9685 16-Channel 12-Bit Servo Controller V1
- Build an Arduino Servo Toggle Switch with a Push Button
/**
*Original source: Arduino IDE
* Arduino Project: Controlling the servo position
* This code is used with a video tutorial for Robojax.com
* Published on April 24, 2017, from Ajax, ON, Canada.
* Written/Edited by Ahmad Shamshiri
* Watch the video on YouTube: https://youtu.be/kZ9b31gVemc
* View tutorial page for this code https://robojax.com/RJT8
* Controlling a servo position using a potentiometer (variable resistor)
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
Hulpmiddelen en referenties
Nog geen middelen.
Bestanden📁
Datasheet (pdf)
-
sg90_serveo_motor_datasheet
sg90_serveo_motor_datasheet.pdf0.13 MB