Servomotorbesturing: Een Complete Gids
Belangrijkste inzichten:
Definitie van Servomotorbesturing: Servomotorbesturing stelt een precieze manipulatie van de motorkoppeling, snelheid en versnelling via elektronische signalen mogelijk.
Feedback Mechanisme: Het feedbacksysteem, vaak een potentiometer of encoder, zorgt ervoor dat de motoruitvoer exact overeenkomt met het controle-ingangssein.
PWM Signaal: Pulse-width modulatie (PWM) is cruciaal voor het instellen van de servo's positie door de duur van elektrische pulsen te variëren.
Arduino en Servomotoren: Het gebruik van een Arduino-bord is een populaire en effectieve manier om servomotoren te programmeren en te besturen met minimale hardware-installatie.
Toepassingen van Servomotoren: Servomotoren zijn essentieel voor projecten die nauwkeurige positiële besturing vereisen, zoals robotica en geautomatiseerde systemen.
Een servomotor is een motor ontworpen voor hoge precisie en nauwkeurigheid in rotatie. Hij verschilt van een typische DC-motor door zijn vermogen om een specifieke positie vast te houden in plaats van continu te draaien. Deze eigenschap maakt servomotoren ideaal voor robotica, automatisering en hobbyprojecten.
Dit artikel legt uit hoe servomotorbesturing werkt, de verschillende soorten servomotoren en diverse bestuursmethoden en -apparaten. Het geeft ook voorbeelden van toepassingen en projecten met servomotoren.
Wat is een Servomotor?
Een servomotor wordt gedefinieerd als een actuator die een precieze besturing van positie (hoek), snelheid en versnelling mogelijk maakt. Een typische servomotor bestaat uit drie hoofdcomponenten: een DC-motor, een controlecircuit en een feedbackapparaat.
De DC-motor drijft de servo aan en is verbonden met tandwielen die de snelheid verlagen en het koppel op de uitgangsschacht verhogen.

De uitgangsschacht is het deel van de servo dat roteert en de belasting beweegt.
Het controlecircuit is verantwoordelijk voor het ontvangen en verwerken van ingangssignalen van een externe controller. Deze signalen vertellen de servo welke positie, snelheid of richting hij moet aannemen. Het controlecircuit stuurt ook stroom naar de DC-motor om deze aan te drijven.
Het feedbackapparaat is meestal een potentiometer of een encoder die de huidige positie van de uitgangsschacht meet.

Het feedbackapparaat brengt de positiedata terug naar het controlecircuit, dat vervolgens de stroom van de DC-motor aanpast om de werkelijke positie in lijn te brengen met de gewenste positie van het ingangssein.
De feedbacklus tussen het controlecircuit en het feedbackapparaat zorgt ervoor dat de servo zich nauwkeurig kan verplaatsen naar en elke positie binnen zijn bewegingsbereik kan handhaven.
Hoe kun je een Servomotor Besturen?
Servomotoren worden bestuurd door een PWM (pulse-width modulation) signaal naar de signaallijn van de servo te sturen. PWM is een techniek die een signaal snel aan- en uitschakelt om pulsen van verschillende breedtes te creëren. De breedte van de pulsen bepaalt de positie van de uitgangsschacht.
Bijvoorbeeld, wanneer je een PWM-signaal met een pulsbreedte van 1,5 milliseconden (ms) stuurt, zal de servo naar de neutrale positie (90 graden) bewegen.

Wanneer je een PWM-signaal met een pulsbreedte van 1 ms stuurt, zal de servo naar de minimale positie (0 graden) bewegen. Wanneer je een PWM-signaal met een pulsbreedte van 2 ms stuurt, zal de servo naar de maximale positie (180 graden) bewegen.
Het PWM-signaal heeft een frequentie van 50 Hz, wat betekent dat het elke 20 ms herhaalt. De pulsbreedte kan varieren van 1 ms tot 2 ms binnen deze periode.
Er zijn veel manieren om PWM-signalen naar servomotoren te genereren en te sturen. Enkele van de meest voorkomende methoden zijn:
Het gebruik van een Arduino-bord of een andere microcontroller
Het gebruik van een potentiometer of een ander analoog sensor
Het gebruik van een joystick of een ander digitaal invoerapparaat
Het gebruik van een speciale servocontroller of driver
In de volgende secties zullen we elke van deze methoden in meer detail verkennen en enkele voorbeelden zien van hoe ze werken.
Een Servomotor Besturen met Arduino
Arduino is een van de meest populaire platforms voor het besturen van servomotoren. Arduino-borden hebben ingebouwde PWM-uitgangen die gebruikt kunnen worden om signalen naar servos te sturen. Arduino heeft ook een Servo-bibliotheek waarmee het eenvoudig is om code voor servo-besturing te schrijven.
Om een servomotor te besturen met Arduino, heb je nodig:
Een Arduino-bord (zoals Arduino UNO)
Een standaard servomotor (zoals SG90)
Springdraden
Een broodbord (optioneel)
De rode draad van de servo sluit aan op 5V op het Arduino-bord. De zwarte draad van de servo sluit aan op GND op het Arduino-bord. De witte draad van de servo sluit aan op pin 9 op het Arduino-bord.
Om het Arduino-bord te programmeren, heb je de Arduino IDE (online of offline) nodig. Je kunt een van de voorbeelden uit de Servo-bibliotheek gebruiken of je eigen code schrijven.
De volgende code laat zien hoe je een servomotor heen en weer laat zwaaien over 180 graden met behulp van een for-lus:
#include <Servo.h> // Inclusief Servo bibliotheek
Servo myservo; // Maak Servo object
int pos = 0; // Variabele voor positie
void setup() {
myservo.attach(9); // Koppel Servo object aan pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Lus van 0 tot 180 graden
myservo.write(pos); // Schrijf positie naar Servo object
delay(15); // Wacht 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Lus van 180 tot 0 graden
myservo.write(pos); // Schrijf positie naar Servo object
delay(15); // Wacht 15 ms
}
}
Deze code gebruikt twee lussen om de positievariabele te verhogen en te verlagen van 0 tot 180 graden en vice versa. Het schrijft deze waarde vervolgens naar het Servo-object met behulp van myservo.write(pos). Het voegt ook een vertraging van 15 ms toe tussen elke stap om de beweging te vertragen.
Upload deze code naar je Arduino-bord met de Upload-knop in de IDE, en kijk hoe je servomotor gladjes heen en weer zwaait.
Een Servomotor Besturen met Potentiometer
Een potentiometer is een analoog sensor die zijn weerstand kan variëren afhankelijk van hoeveel je de knop omdraait. Je kunt een potentiometer gebruiken als invoerapparaat voor het besturen van een servomotor.
Om een servomotor te besturen met een potentiometer, heb je nodig:
Een Arduino-bord (zoals Arduino UNO)
Een standaard servomotor (zoals SG90)
Een potentiometer (10k Ohm)
Springdraden
Een broodbord
Het bedradingsschema voor het verbinden van een potentiometer en een servomotor met een Arduino-bord is hieronder getoond:
De rode draad van de potentiometer sluit aan op 5V op het Arduino-bord. De zwarte draad van de potentiometer sluit aan op GND op het Arduino-bord. De groene draad van de potentiometer sluit aan op pin A0 op het Arduino-bord.
De rode draad van de servo sluit aan op 5V op een andere rij op het broodbord. De zwarte draad van de servo sluit aan op GND op een andere rij op het broodbord. De witte draad van de servo sluit aan op pin D9 op een andere rij op het broodbord.
Om je Arduino-bord te programmeren, heb je dezelfde code nodig als in het vorige voorbeeld, maar enkele regels moeten worden aangepast:
#include <Servo.h> // Inclusief Servo bibliotheek
Servo myservo; // Maak Servo object
int potpin = A0; // Pin verbonden met potentiometer
int val = 0; // Variabele voor het lezen van de potentiometerwaarde
void setup() {
myservo.attach(9); // Koppel Servo object aan pin D9
}
void loop() {
val = analogRead(potpin); // Lees waarde van potentiometer (0 -1023)
val = map(val,0,1023,0,180); // Map waardebereik (0 -180)
myservo.write(val); // Schrijf gemapte waarde naar Servo object
delay(15); // Wacht 15 ms
}
Deze code gebruikt de analogRead(potpin) functie om de waarde van de potentiometer verbonden met pin A0 te lezen. Het gebruikt vervolgens de map(val,0,1023,0,180) functie om het waardebereik van 0 -1023 graden te mappen. Het schrijft de gemapte waarde naar het Servo-object met behulp van de myservo.write(val) functie. Het voegt ook een vertraging toe, net zoals in het vorige voorbeeld.
Je kunt deze code uploaden naar je Arduino-bord met de Upload-knop in de IDE. Je zou moeten zien dat je servomotor beweegt volgens de knoppositie van de potentiometer.
Een Servomotor Besturen met Joystick
Een joystick is een digitale invoerapparaat dat de richting en grootte van de beweging langs twee assen kan detecteren. Je kunt een joystick gebruiken om een servomotor te besturen door de x-as van de joystick te mappen naar de hoek van de servo.
Om een servomotor te besturen met een joystick, heb je het volgende nodig:
Een Arduino-bord (zoals Arduino UNO)
Een standaard servomotor (zoals SG90)
Een joystickmodule (zoals KY-023)
Springdraden
Een broodbord
Het bedradingsschema voor het verbinden van een joystickmodule en een servomotor met een Arduino-bord is hieronder getoond:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
De rode draad van de joystickmodule sluit aan op 5V op het Arduino-bord. De zwarte draad van de joystickmodule sluit aan op GND op het Arduino-bord. De groene draad van de joystickmodule sluit aan op pin A0 op het Arduino-bord.
De rode draad van de servo sluit aan op 5V op een andere rij op het broodbord. De zwarte draad van de servo sluit aan op GND op een andere rij op het broodbord. De witte draad van de servo sluit aan op pin D9 op een andere rij op het broodbord.
Om je Arduino-bord te programmeren, heb je dezelfde code nodig als in het vorige voorbeeld, maar enkele regels moeten worden aangepast:
#include <Servo.h> // Inclusief Servo bibliotheek
Servo myservo; // Maak Servo object
int joyX = A0; // Pin verbonden met joystick x-as
int val = 0; // Variabele voor het lezen van de joystickwaarde
void setup() {
myservo.attach(9); // Koppel Servo object aan pin 9
}
void loop() {
val = analogRead(joyX); // Lees waarde van joystick x-as (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Map waardebereik (0 - 180)
myservo.write(val); // Schrijf gemapte waarde naar Servo object
delay(15); // Wacht 15 ms
}
Deze code