Stjórning servo motorar: Komplett leiðbeining
Aðal læringar:
Skilgreining á stjórnun servo motorar: Stjórnun servo motorar leyfir nákvæma stjórn á staðsetningu, hraða og hröðun motorar með þróunarsignálum.
Tilbakaflækjar kerfi: Tilbakaflækjar kerfi, oft potensímetri eða kóðari, tryggja að úttak motorar passi nákvæmlega við stjórninntak.
PWM signál: Pulsbreiddastýring (PWM) er mikilvæg til að setja staðsetningu servo með breytingu á lengd elektríska plúsa.
Arduino og servo motorar: Notkun Arduino borðs er vinsælt og hagnýtt aðferð til að forritast og stjórna servo motorum með lágmarkshlutafhengingu.
Notkun servo motorar: Servo motorar eru nauðsynlegir fyrir verkefni sem krefjast nákvæmur stjórnar yfir staðsetningu, eins og róbótfræði og sjálfvirkar kerfi.
Servo motor er motorur sem er hönnuður fyrir há nákvæmi og réttindi í snúningi. Hann munsturkar frá vanalegu DC motori af sinni fögnu að halda ákveðnu stöðu frekar en snúa ótíðarlega. Þessi eiginleiki gerir servo motor gildan fyrir róbótfræði, sjálfvirkni og hagkerfi.
Þetta grein skýrir hvernig stjórnun servo motorar virkar, mismunandi tegundir servo motorar og ýmsar stjórnaraðferðir og tæki. Hún veitir einnig dæmi um notkun servo motorar og verkefni.
Hvað er servo motor?
Servo motor er skilgreindur sem virkur sem leyfir nákvæmu stjórn yfir staðsetningu (horn), hraða og hröðun. Vanalegur servo motor bestur af þrem helstu hlutum: DC motor, stjórnarkerfi og tilbakaflækjar tæki.
DC motorur dreifir servo og tengist hringum sem draga niður hraða og auka orku á úttakssvani.

Úttakssvanurinn er það hlutbundið af servo sem snýst og fer eftir byrjun.
Stjórnarkerfið er ábyrg fyrir að taka við og vinna úr inntökum frá ytri stýringarkerfi. Þessar inntökur segja servo hvaða staða, hraði eða átt hann á að fara. Stjórnarkerfið sendir líka orku til DC motorar til að dreifa hann.
Tilbakaflækjar tækið er oft potensímetri eða kóðari sem mælir núverandi staða úttakssvans.

Tilbakaflækjar tækið sendir staðgöngu gögn aftur til stjórnarkerfisins, sem síðan stillir orku DC motorar til að samræma raunverulega staða við önskuða staða frá inntakssignalinu.
Tilbakaflækjalínan milli stjórnarkerfisins og tilbakaflækjar tækisins tryggir að servo geti nákvæmlega færst til og haldið allri staða innan sinns sveiflusviðs.
Hvernig á að stjórna servo motori?
Servo motorar eru stjórnaðir með því að senda PWM (pulsbreiddastýring) signál til signallínunnar servo. PWM er aðferð sem skiptir signali á og af hraðlega til að búa til plús af mismunandi breidd. Breidd plúsa ákvarðar staða úttakssvans.
Til dæmis, þegar þú sendir PWM signál með plúsabreidd 1,5 millisekúndu (ms), mun servo færast til miðju stöðunar (90 gráður).

Þegar þú sendir PWM signál með plúsabreidd 1 ms, mun servo færast til lægsta stöðunar (0 gráður). Þegar þú sendir PWM signál með plúsabreidd 2 ms, mun servo færast til hámarksstöðunar (180 gráður).
PWM signali hefur tíðni 50 Hz, sem merkir að hann endurtakast hver 20 ms. Plúsabreiddin getur brottast frá 1 ms til 2 ms innan þessa tíma.
Það eru mörg leið til að framleiða og senda PWM signali til servo motorar. Einfaldasta aðferðirnar eru:
Með notkun Arduino borðs eða annar mikrostýringarkerfi
Með notkun potensímetris eða annar analogsensor
Með notkun spili eða annar digitalt inntaks tæki
Með notkun sérstakt servo stýringarkerfi eða dreifingarkerfi
Í eftirfarandi kaflum skoðum við hverja af þessum aðferðum nánar og sjáum nokkrar dæmi um hvernig þær virka.
Stjórnun servo motorar með Arduino
Arduino er eitt af vinsælustu stofnum fyrir stjórnun servo motorar. Arduino borð hafa innbyggða PWM úttak sem má nota til að senda signali til servó. Arduino hefur einnig Servo bókasafn sem gerir það auðvelt að skrifa forrit fyrir servo stýringu.
Til að stjórna servo motori með Arduino þarftu:
Arduino borð (eins og Arduino UNO)
Vanalegan servo motor (eins og SG90)
Jumper vírum
Brotaborð (valkvætt)
Rauða vírin frá servo tengist 5V á Arduino borðinu. Svarta vírin frá servo tengist GND á Arduino borðinu. Hvít vírin frá servo tengist pinni 9 á Arduino borðinu.
Til að forrita Arduino borðið þarftu að nota Arduino IDE (online eða offline). Þú getur notað eitt af dæminum frá Servo bókasafninu eða skrifað þitt eigið forrit.
Eftirfarandi kóði sýnir hvernig á að sveipa servo motor upp og niður yfir 180 gráður með notkun for lykkju:
#include <Servo.h> // Include Servo library
Servo myservo; // Create Servo object
int pos = 0; // Variable for position
void setup() {
myservo.attach(9); // Attach Servo object to pin 9
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Loop from 0 to 180 degrees
myservo.write(pos); // Write position to Servo object
delay(15); // Wait 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Loop from 180 to 0 degrees
myservo.write(pos); // Write position to Servo object
delay(15); // Wait 15 ms
}
}
Þessi kóði notar tvær lykkjur til að hækka og lægka stöðugildi frá 0 til 180 gráður og öfugt. Hann skrifar svo þetta gildi í Servo object með myservo.write(pos). Hann bætir einnig við biðtíma 15 ms á milli hverrar skrefar til að hægna færslu.
Sendaðu þennan kóða á þitt Arduino borð með Upload hnappinn í IDE, og horfdut svo á að þinn servo motor sveipist upp og niður sléttilega.
Stjórnun servo motorar með potensímetri
Potensímetri er analog sensor sem getur breytt viðmoti sínu eftir því hversu mikið þú snýr spakann. Þú getur notað potensímetra sem inntakstæki til að stjórna servo motori.
Til að stjórna servo motori með potensímetri þarftu:
Arduino borð (eins og Arduino UNO)
Vanalegan servo motor (eins og SG90)
Potensímetri (10k Ohms)
Jumper vírum
Brotaborð
Dráttaskema fyrir tengingu potensímetra og servo motor við Arduino borð er sýnt hér fyrir neðan:
Rauða vírin frá potensímetranum tengist 5V á Arduino borðinu. Svarta vírin frá potensímetranum tengist GND á Arduino borðinu. Græna vírin frá potensímetranum tengist pinni A0 á Arduino borðinu.
Rauða vírin frá servo tengist 5V á öðru röð á brotaborðinu. Svarta vírin frá servo tengist GND á öðru röð á brotaborðinu. Hvít vírin frá servo tengist pinni D9 á öðru röð á brotaborðinu.
Til að forrita Arduino borðið þarftu að nota sama kóða og í fyrra dæminu en breyta nokkrum línum:
#include <Servo.h> // Include Servo library
Servo myservo; // Create Servo object
int potpin = A0; // Pin connected to potentiometer
int val = 0; // Variable for reading potentiometer value
void setup() {
myservo.attach(9); // Attach Servo object pin D9
}
void loop() {
val = analogRead(potpin); // Read value from potentiometer (0 -1023)
val = map(val,0,1023,0,180); // Map value range (0 -180)
myservo.write(val); // Write mapped value Servo object
delay(15); // Wait 15 ms
}
Þessi kóði notar analogRead(potpin) fallið til að lesa gildi frá potensímetrinu tengdu við pinni A0. Hann notar svo map(val,0,1023,0,180) fallið til að mynda gildisbil frá 0 -1023 gráðum. Hann skrifar svo myndað gildi í Servo object með myservo.write(val) fallinu. Hann bætir einnig við biðtíma eins og í fyrra dæminu.
Þú getur sent þennan kóða á þitt Arduino borð með Upload hnappinn í IDE. Þú ættir að sjá að þinn servo motor fer eftir spaki potensímetrans.
Stjórnun servo motorar með spili
Spili er digitalt inntaks tæki sem getur markað stefnu og magn færslu á tveimur ásum. Þú getur notað spil til að stjórna servo motor með því að mynda x-ás spilsins á horn servo motorar.
Til að stjórna servo motori með spili þarftu eftirfarandi:
Arduino borð (eins og Arduino UNO)
Vanalegan servo motor (eins og SG90)
Spilamódul (eins og KY-023)
Jumper vírum
Brotaborð
Dráttaskema fyrir tengingu spilamóduls og servo motor við Arduino borð er sýnt hér fyrir neðan:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Rauða vírin frá spilamódulinu tengist 5V á Arduino borðinu. Svarta vírin frá spilamódulinu tengist GND á Arduino borðinu. Græna vírin frá spilamódulinu tengist pinni A0 á Arduino borðinu.
Rauða vírin frá servo tengist 5V á öðru röð á brotaborðinu. Svarta vírin frá servo tengist GND á öðru röð á brotaborðinu. Hvít vírin frá servo tengist pinni D9 á öðru röð á brotaborðinu.
Til að forrita Arduino borðið þarftu að nota sama kóða og í fyrra dæminu en breyta nokkrum línum:
#include <Servo.h> // Include Servo library
Servo myservo; // Create Servo object
int joyX = A0; // Pin connected to joystick x-axis
int val = 0; // Variable for reading joystick value