Servmotor-Kontrolo: Kompleta Gvido
Ĉefaj Lernajoj:
Definito de Servmotor-Kontrolo: Kontrolo de servmotoro permesas precizan manipulon de pozicio, rapido kaj akcelero de la motoro per elektronikaj signaloj.
Retroinforma Meĥanismo: La retroinforma sistemo, ofte potenciometro aŭ enkodilo, certigas ke la eligo de la motoro konformas al la kontrolo enigo precize.
PWM-Signalo: Impuls-larĝeckomando (PWM) estas esenca por difini la pozicion de la servo per variado de la daŭro de elektraj impulsoj.
Arduino kaj Servmotoroj: Uzo de Arduino-plaketo estas populara kaj efika maniero programi kaj kontroli servmotorojn kun minimuma aparataro.
Aplikoj de Servmotoroj: Servmotoroj estas esencaj por projektoj kiuj postulas precizan poziciokontrolon, ekzemple robotiko kaj aŭtomatigitaj sistemoj.
Servmotoro estas motoro dizainita por alta precizeco kaj akurateco en rotacio. Ĝi malsamas de tipa DC-motoro pro sia kapablo teni specifan pozicion anstataŭ kontinua rotacio. Tiu eco faras servmotorojn ideajn por robotiko, aŭtomatigo kaj hobiprojektoj.
Ĉi tiu artikolo klarigas kiel funkcias la kontrolado de servmotoroj, la diversaj tipoj de servmotoroj, kaj diversaj kontrolmetodoj kaj aparatoj. Ĝi ankaŭ donas ekzemplojn de apliko kaj projektoj de servmotoroj.
Kio estas Servmotoro?
Servmotoro estas difinita kiel aktuatoro, kiu permesas precizan kontrolon de pozicio (angulo), rapido kaj akcelero. Tipa servmotoro konsistas el tri ĉefaj komponantoj: DC-motoro, kontrolcirkvito kaj retroinforma aparato.
La DC-motoro povigas la servon kaj konektiĝas al radoj, kiuj reduktas la rapidon kaj pligrandigas la momanton sur la eliga akso.

La eliga akso estas la parto de la servo, kiu turniĝas kaj movas la ŝargon.
La kontrolcirkvito estas respondeca pri ricevi kaj prilabori la enigosignalojn de ekstera kontrolilo. Tiuj signaloj diras al la servo, kia pozicio, rapido aŭ direkto devas esti atingita. La kontrolcirkvito ankaŭ sendas energion al la DC-motoro por drivi ĝin.
La retroinforma aparato kutime estas potenciometro aŭ enkodilo, kiu mezuras la aktualan pozicion de la eliga akso.

La retroinforma aparato transdonas poziciodatumojn reen al la kontrolcirkvito, kiu tiam adaptas la energion de la DC-motoro por alini la realan pozicion kun la dezirata pozicio de la enigosignalo.
La retroinforma ciklo inter la kontrolcirkvito kaj la retroinforma aparato certigas, ke la servo povas precize moviĝi al kaj teni iun ajn pozicion en sia movospaco.
Kiel Kontroli Servmotoron?
Servmotoroj estas kontrolitaj per sendado de PWM (impuls-larĝeckomanda) signalo al la signallineo de la servo. PWM estas tekniko, kiu rapide ŝaltas signalon on-on kaj kreigas impulsojn de diversaj larĝecoj. La larĝeco de la impulsoj determinas la pozicion de la eliga akso.
Ekzemple, se vi sendas PWM-signalon kun impulslarĝeco de 1.5 milisekundoj (ms), la servo moviĝos al la neŭtrala pozicio (90 gradoj).

Se vi sendas PWM-signalon kun impulslarĝeco de 1 ms, la servo moviĝos al la minimuma pozicio (0 gradoj). Se vi sendas PWM-signalon kun impulslarĝeco de 2 ms, la servo moviĝos al la maksimuma pozicio (180 gradoj).
La PWM-signalo havas frekvenco de 50 Hz, kio signifas, ke ĝi ripetas ĉiujn 20 ms. La impulslarĝeco povas varias de 1 ms ĝis 2 ms en ĉi tiu periodo.
Estas multaj manieroj generi kaj sendi PWM-signalojn al servmotoroj. Iuj el la plej komunaj metodoj estas:
Uzo de Arduino-plaketo aŭ alia mikrokontrolilo
Uzo de potenciometro aŭ alia analoga sensoro
Uzo de joy-sticko aŭ alia cifereca enigilo
Uzo de dediĉa servo-kontrolilo aŭ sturilo
En la sekvaĵaj sekcioj, ni esploros ĉiun el ĉi tiuj metodoj pli detale kaj vidu kelkajn ekzemplojn de ilia funkcio.
Kontrolo de Servmotoro per Arduino
Arduino estas unu el la plej populaj platformoj por kontroli servmotorojn. Arduino-plaketetoj havas internajn PWM-eligojn, kiujn oni povas uzi por sendi signalojn al servoj. Arduino ankaŭ havas Servo-bibliotekon, kiu faciligas la skribadon de kodpor servo-kontrolo.
Por kontroli servmotoron per Arduino, vi bezonas:
Arduino-plaketon (kiel Arduino UNO)
Standardan servmotoron (kiel SG90)
Saldkablajn filojn
Breadboard (opcia)
La ruĝa filo de la servo konektiĝas al 5V sur la Arduino-plaketo. La nigra filo de la servo konektiĝas al GND sur la Arduino-plaketo. La blanka filo de la servo konektiĝas al pino 9 sur la Arduino-plaketo.
Por programi la Arduino-plaketon, vi bezonas uzi la Arduino IDE (enrete aŭ loka). Vi povas uzi unu el la ekzemploj de la Servo-biblioteko aŭ skribi vian propran kodon.
La jena kodo montras kiel balanci servmotoron for kaj reen tra 180 gradoj uzante for-loop:
#inkludu <Servo.h> // Inkludigu la Servo-bibliotekon
Servo myservo; // Kreu Servo-objekton
int pos = 0; // Variablo por pozicio
void setup() {
myservo.attach(9); // Konektu Servo-objekton al pino 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Ciklu de 0 al 180 gradoj
myservo.write(pos); // Skribu pozicion al Servo-objekto
delay(15); // Atendu 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Ciklu de 180 al 0 gradoj
myservo.write(pos); // Skribu pozicion al Servo-objekto
delay(15); // Atendu 15 ms
}
}
Ĉi tiu kodo uzas du ciklojn por inkrementi kaj dekrementi la pozici-varian de 0 al 180 gradoj kaj inverse. Ĝi tiam skribas ĉi tiun valoron al la Servo-objekto per myservo.write(pos). Ĝi ankaŭ aldonas atendon de 15 ms inter ĉiu paŝo por malrapidi la movon.
Alŝutu ĉi tiun kodon al via Arduino-plaketo per la Alŝutbutono de la IDE, kaj rigardu kiel via servmotoro balancos for kaj reen glate.
Kontrolo de Servmotoro per Potenciometro
Potenciometro estas analoga sensoro, kiu povas variigi sian reziston depende de kiel multe vi turnas sian knobon. Vi povas uzi potenciometron kiel enigilo por kontroli servmotoron.
Por kontroli servmotoron per potenciometro, vi bezonas:
Arduino-plaketon (kiel Arduino UNO)
Standardan servmotoron (kiel SG90)
Potenciometron (10k Ohmoj)
Saldkablajn filojn
Breadboard
La ĉabloskemo por konekti potenciometron kaj servmotoron al Arduino-plaketo estas montrita sube:
La ruĝa filo de la potenciometro konektiĝas al 5V sur la Arduino-plaketo. La nigra filo de la potenciometro konektiĝas al GND sur la Arduino-plaketo. La verda filo de la potenciometro konektiĝas al pino A0 sur la Arduino-plaketo.
La ruĝa filo de la servo konektiĝas al 5V sur alia linio sur la breadboard. La nigra filo de la servo konektiĝas GND sur alia linio sur la breadboard. La blanka filo de la servo konektiĝas al pino D9 sur alia linio sur la breadboard.
Por programi vian Arduino-plaketon, vi bezonas uzi la saman kodon kiel en la antaŭa ekzemplo, sed ŝanĝi kelkajn liniojn:
#inkludu <Servo.h> // Inkludigu la Servo-bibliotekon
Servo myservo; // Kreu Servo-objekton
int potpin = A0; // Pino konektita al potenciometro
int val = 0; // Variablo por legi la valoron de la potenciometro
void setup() {
myservo.attach(9); // Konektu Servo-objekton al pino D9
}
void loop() {
val = analogRead(potpin); // Legu valoron de la potenciometro (0 -1023)
val = map(val,0,1023,0,180); // Mapu la valoron en la amplekson (0 -180)
myservo.write(val); // Skribu la mapitan valoron al la Servo-objekto
delay(15); // Atendu 15 ms
}
Ĉi tiu kodo uzas la analogRead(potpin) funkcion por legi la valoron de la potenciometro konektita al pino A0. Ĝi tiam uzas la map(val,0,1023,0,180) funkcion por mapigi la valoron en la amplekson (0 -180). Ĝi tiam skribas la mapitan valoron al la Servo-objekto per myservo.write(val) funkcio. Ĝi ankaŭ aldonas atendon, same kiel en la antaŭa ekzemplo.
Vi povas alŝuti ĉi tiun kodon al via Arduino-plaketo per la Alŝutbutono de la IDE. Vi devus vidi, ke via servmotoro moviĝas laŭ la pozicio de la knob de la potenciometro.
Kontrolo de Servmotoro per Joy-Sticko
Joy-sticko estas cifereca enigilo, kiu povas detekti la direkton kaj grandon de moviĝo laŭ du aksoj. Vi povas uzi joy-stickon por kontroli servmotoron per mapigo de la x-akso de la joy-sticko al la angulo de la servo.
Por kontroli servmotoron per joy-sticko, vi bezonas la jenan:
Arduino-plaketon (kiel Arduino UNO)
Standardan servmotoron (kiel SG90)
Joy-stickon (kiel KY-023)
Saldkablajn filojn
Breadboard
La ĉabloskemo por konekti joy-stickon kaj servmotoron al Arduino-plaketo estas montrita sube:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
La ruĝa filo de la joy-sticko konektiĝas al 5V sur la Arduino-plaketo. La nigra filo de la joy-sticko konektiĝas al GND sur la Arduino-plaketo. La verda filo de la joy-sticko konektiĝas al pino A0 sur la Arduino-plaketo.
La ruĝa filo de la servo konektiĝas al 5V sur alia linio sur la breadboard. La nigra filo de la servo konektiĝas GND sur alia linio sur la breadboard. La blanka filo de la servo konektiĝas al pino D9 sur alia linio sur la breadboard.
Por programi vian Arduino-plaketon, vi bezonas uzi la saman kodon kiel en la antaŭa ekzemplo, sed ŝanĝi kelkajn liniojn:
#inkludu <Servo.h> // Inkludigu la Servo-bibliotekon
Servo myservo; // Kreu Servo-objekton
int joyX = A0; // Pino konektita al la x-akso de la joy-sticko
int val = 0; // Variablo por legi la valoron de la joy-sticko
void setup() {
myservo.attach(9); // Konektu Servo-objekton al pino 9