Servo Motor Kontrole: 'n Volledige Gids
Kernleerstukke:
Servo Motor Kontrole Gedefinieer: Servo motor kontrole stel die presiese manipulasie van motorposisie, spoed en versnelling deur elektroniese signale in.
Terugvoer Mekanisme: Die terugvoersisteem, dikwels 'n potensiometer of encoder, verseker dat die motor se uitset presies met die beheer inset ooreenstem.
PWM Signaal: Pulse-width modulering (PWM) is krities vir die instelling van die servo se posisie deur die duur van elektriese pulse te verander.
Arduino en Servo Motore: Die gebruik van 'n Arduino bord is 'n gewilde en effektiewe manier om servo motore te programmeer en te beheer met minimale hardeware opstelling.
Toepassings van Servo Motore: Servo motore is noodsaaklik vir projekte wat akkurate posisionele beheer vereis, soos robotika en outomatiseringstelsels.
'n Servo motor is 'n motor wat ontwerp is vir hoë presisie en akkuraatheid in rotasie. Dit verskil van 'n tipiese DC motor deur sy vermoë om 'n spesifieke posisie te handhaaf eerder as voortdurend te draai. Hierdie kenmerk maak servo motore ideaal vir robotika, outomatisering, en hobbyste projekte.
Hierdie artikel verduidelik hoe servo motor beheer funksioneer, die verskillende tipes servo motore, en verskeie beheermetodes en toestelle. Dit gee ook voorbeelde van servo motor toepassings en projekte.
Wat is 'n Servo Motor?
'n Servo motor word gedefinieer as 'n aktuator wat presiese beheer van posisie (hoek), spoed, en versnelling toelaat. 'n Tipiese servo motor bestaan uit drie hoofkomponente: 'n DC motor, 'n beheersirkuit, en 'n terugvoertoestel.
Die DC motor drijf die servo en sluit aan by radertande wat die spoed verminder en die koppel op die uitsetas verhoog.

Die uitsetas is die deel van die servo wat roteer en die lading beweeg.
Die beheersirkuit is verantwoordelik vir die ontvang en verwerk van invoersignale van 'n eksterne beheerder. Hierdie signal gee die servo inligting oor watter posisie, spoed, of rigting beweeg moet. Die beheersirkuit stuur ook krag na die DC motor om dit te drijf.
Die terugvoertoestel is gewoonlik 'n potensiometer of 'n encoder wat die huidige posisie van die uitsetas meet.

Die terugvoertoestel gee posisie data terug na die beheersirkuit, wat dan die DC motor se krag pas om die werklike posisie met die gewenste posisie van die invoersignaal te laat ooreenstem.
Die terugvoerlus tussen die beheersirkuit en die terugvoertoestel verseker dat die servo akkuraat kan beweeg na en enige posisie binne sy bewegingbereik handhaaf.
Hoe om 'n Servo Motor te Beheer?
Servo motore word beheer deur 'n PWM (pulse-width modulering) signaal na die signaallyn van die servo te stuur. PWM is 'n tegniek wat 'n signaal vinnig inskakel en uitskakel om pulse van verskillende breedtes te skep. Die breedte van die pulse bepaal die posisie van die uitsetas.
Byvoorbeeld, wanneer jy 'n PWM signaal met 'n pulsbreedte van 1,5 milliseconde (ms) stuur, sal die servo na die neutrale posisie (90 grade) beweeg.

Wanneer jy 'n PWM signaal met 'n pulsbreedte van 1 ms stuur, sal die servo na die minimum posisie (0 grade) beweeg. Wanneer jy 'n PWM signaal met 'n pulsbreedte van 2 ms stuur, sal die servo na die maksimum posisie (180 grade) beweeg.
Die PWM signaal het 'n frekwensie van 50 Hz, wat beteken dit herhaal elke 20 ms. Die pulsbreedte kan varieer van 1 ms tot 2 ms binne hierdie tydperk.
Daar is baie maniere om PWM signal te genereer en na servo motore te stuur. Sommige van die mees algemene metodes is:
Met 'n Arduino bord of 'n ander mikrobestuurder
Met 'n potensiometer of 'n ander analoog sensor
Met 'n joystick of 'n ander digitale invoestoestel
Met 'n gespesialiseerde servo bestuurder of drywer
In die volgende afdelings sal ons elkeen van hierdie metodes in meer detail ondersoek en sien sommige voorbeelde van hoe hulle werk.
Beheer van 'n Servo Motor met Arduino
Arduino is een van die mees gewilde platforms vir die beheer van servo motore. Arduino bord het ingeboude PWM-uitsette wat gebruik kan word om signal na servos te stuur. Arduino het ook 'n Servo-biblioteek wat dit maklik maak om kode vir servo beheer te skryf.
Om 'n servo motor met Arduino te beheer, sal jy nodig hê:
'n Arduino bord (soos Arduino UNO)
'n Standaard servo motor (soos SG90)
Springdraad
'n Broodplank (opsioneel)
Die rooi draad van die servo sluit aan by 5V op die Arduino bord. Die swart draad van die servo sluit aan by GND op die Arduino bord. Die wit draad van die servo sluit aan by pin 9 op die Arduino bord.
Om die Arduino bord te programmeer, sal jy die Arduino IDE (online of offline) moet gebruik. Jy kan een van die voorbeelde van die Servo biblioteek gebruik of jou eie kode skryf.
Die volgende kode wys hoe om 'n servo motor terug en vorentoe te beweeg oor 180 grade met 'n for-lus:
#include <Servo.h> // Sluit Servo biblioteek in
Servo myservo; // Skep Servo objek
int pos = 0; // Veranderlike vir posisie
void setup() {
myservo.attach(9); // Koppel Servo objek aan pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Lus van 0 tot 180 grade
myservo.write(pos); // Skryf posisie na Servo objek
delay(15); // Wag 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Lus van 180 tot 0 grade
myservo.write(pos); // Skryf posisie na Servo objek
delay(15); // Wag 15 ms
}
}
Hierdie kode gebruik twee lusse om die posisieveranderlike van 0 tot 180 grade en vice versa te verhoog en te verlaag. Dit skryf dan hierdie waarde na die Servo objek met myservo.write(pos). Dit voeg ook 'n wag van 15 ms tussen elke stap by om die beweging te vertraag.
Laai hierdie kode op jou Arduino bord met behulp van die Upload-knoppie van die IDE, en kyk toe jou servo motor glad en vloeiend heen en weer beweeg.
Beheer van 'n Servo Motor met Potentiometer
'n Potentiometer is 'n analoog sensor wat sy weerstand kan verander afhangende van hoeveel jy sy knop draai. Jy kan 'n potentiometer as 'n invoestoorapparaat gebruik om 'n servo motor te beheer.
Om 'n servo motor met 'n potentiometer te beheer, sal jy nodig hê:
'n Arduino bord (soos Arduino UNO)
'n Standaard servo motor (soos SG90)
'n Potentiometer (10k Ohms)
Springdraad
'n Broodplank
Die bedraadskaft vir die aansluiting van 'n potentiometer en 'n servo motor aan 'n Arduino bord word hieronder getoon:
Die rooi draad van die potentiometer sluit aan by 5V op die Arduino bord. Die swart draad van die potentiometer sluit aan by GND op die Arduino bord. Die groen draad van die potentiometer sluit aan by pin A0 op die Arduino bord.
Die rooi draad van die servo sluit aan by 5V op 'n ander ry op die broodplank. Die swart draad van die servo sluit aan by GND op 'n ander ry op die broodplank. Die wit draad van die servo sluit aan by pin D9 op 'n ander ry op die broodplank.
Om jou Arduino bord te programmeer, sal jy dieselfde kode as in die vorige voorbeeld gebruik, maar 'n paar lyne verander:
#include <Servo.h> // Sluit Servo biblioteek in
Servo myservo; // Skep Servo objek
int potpin = A0; // Pin verbonden met potentiometer
int val = 0; // Veranderlike vir lees van potentiometer waarde
void setup() {
myservo.attach(9); // Koppel Servo objek aan pin D9
}
void loop() {
val = analogRead(potpin); // Lees waarde van potentiometer (0 -1023)
val = map(val,0,1023,0,180); // Kaart waarde bereik (0 -180)
myservo.write(val); // Skryf gekarte waarde na Servo objek
delay(15); // Wag 15 ms
}
Hierdie kode gebruik die analogRead(potpin) funksie om die waarde van die potentiometer wat aan pin A0 aangesluit is, te lees. Dit gebruik dan die map(val,0,1023,0,180) funksie om die waarde bereik van 0 -1023 na 0 -180 grade te kaart. Dit skryf dan die gekarte waarde na die Servo objek met die myservo.write(val) funksie. Dit voeg ook 'n wag van 15 ms by, net soos in die vorige voorbeeld.
Jy kan hierdie kode op jou Arduino bord laai met behulp van die Upload-knoppie in die IDE. Jy sou jou servo motor moenie beweeg sien volgens die knopposisie van die potentiometer nie.
Beheer van 'n Servo Motor met Joystick
'n Joystick is 'n digitale invoestoorapparaat wat die rigting en grootte van beweging langs twee asse kan opspoor. Jy kan 'n joystick gebruik om 'n servo motor te beheer deur die x-as van die joystick te kaart op die hoek van die servo.
Om 'n servo motor met 'n joystick te beheer, sal jy die volgende nodig hê:
'n Arduino bord (soos Arduino UNO)
'n Standaard servo motor (soos SG90)
'n Joystick module (soos KY-023)
Springdraad
'n Broodplank
Die bedraadskaft vir die aansluiting van 'n joystick module en 'n servo motor aan 'n Arduino bord word hieronder getoon:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Die rooi draad van die joystick module sluit aan by 5V op die Arduino bord. Die swart draad van die joystick module sluit aan by GND op die Arduino bord. Die groen draad van die joystick module sluit aan by pin A0 op die Arduino bord.
Die rooi draad van die servo sluit aan by 5V op 'n ander ry op die broodplank. Die swart draad van die servo sluit aan by GND op 'n ander ry op die broodplank. Die wit draad van die servo sluit aan by pin D9 op 'n ander ry op die broodplank.
Om jou Arduino bord te programmeer, sal jy dieselfde kode as in die vorige voorbeeld gebruik, maar 'n paar lyne verander:
#include <Servo.h> // Sluit Servo biblioteek in
Servo myservo; // Skep Servo objek
int joyX = A0; // Pin verbonden met joystick x-as
int val = 0; // Veranderlike vir lees van joystick waarde
void setup() {
myservo.attach(9); // Koppel Servo objek aan pin 9
}
void loop() {
val = analogRead(joyX); // Lees waarde van joystick x-as (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Kaart waarde bereik (0 - 180)
myservo.write(val); // Sk