Servomotorin ohjaus: Kattava opas
Tärkeät oppimispisteet:
Servomotorin ohjaus määritelty: Servomotorin ohjaus mahdollistaa tarkan motorin sijainnin, nopeuden ja kiihtyvyyden manipuloinnin sähköisillä signaaleilla.
Palautemekanismi: Palautteena toimii usein potentiometri tai enkooderi, joka varmistaa, että motorin tuotanto täsmää ohjaussignaalilla tarkasti.
PWM-signaali: Pulsivaltakirjoituksen (PWM) avulla voidaan asettaa servon sijaintia vaihtamalla sähköisten pulssien kesto.
Arduino ja servomotorit: Arduino-taulukon käyttö on suosittu ja tehokas tapa ohjelmoida ja ohjata servomotorit vähällä laitteistoasetuksella.
Servomotorien sovellukset: Servomotorit ovat olennaisia projekteille, jotka vaativat tarkkaa sijaintiohjausta, kuten robotiikassa ja automatisoituissa järjestelmissä.
Servomotori on motori, joka on suunniteltu korkealle tarkkuudelle ja tarkkuudelle pyörimässä. Se eroaa tyypillisestä DC-motorista sen kyvyn ylläpitää tiettyä sijaintia eikä pyöri jatkuvasti. Tämä ominaisuus tekee servomotorista ideaalisen robotiikkaan, automaatioon ja harrastusprojekteihin.
Tässä artikkelissa selitetään, miten servomotorin ohjaus toimii, erilaiset servomotorit ja erilaiset ohjausmenetelmät ja laitteet. Siinä myös annetaan esimerkkejä servomotorien sovelluksista ja projekteista.
Mikä on servomotori?
Servomotori määritellään aktuaatoriksi, joka mahdollistaa tarkan sijainnin (kulma), nopeuden ja kiihtyvyyden ohjaamisen. Tyypillinen servomotori koostuu kolmesta pääkomponentista: DC-motorista, ohjauskierroksesta ja palautelaiteesta.
DC-motori toimittaa servolle voiman ja yhdistetään vähentäviin pinnoihin, jotka vähentävät nopeutta ja lisäävät torquetta ulostuloventtiiliin.

Ulostuloventtiili on servon osa, joka pyörähtää ja liikuttaa kuormaa.
Ohjauskierros on vastuussa ulkoisen ohjaimen syöttämien ja prosessoiden signaalien vastaanottamisesta. Nämä signaalit kertovat servolle, mikä sijainti, nopeus tai suunta on liikutettava. Ohjauskierros lähettää myös voiman DC-motorille ajamaan sitä.
Palautelaite on yleensä potentiometri tai enkooderi, joka mittailee ulostuloventtiilin nykyistä sijaintia.

Palautelaite välittää sijaintitiedot takaisin ohjauskierrokselle, joka sitten säätää DC-motorin voimaa saavuttaakseen halutun sijainnin syöttösignaalista.
Ohjauskierroksen ja palautelaitemekanismin välillä oleva palautelooppi varmistaa, että servo voi tarkasti liikkua ja ylläpitää minkä tahansa sijaintia sen liikkeen rajoissa.
Miten ohjata servomotoria?
Servomotorit ohjataan lähettämällä PWM (pulsivaltakirjoitus)-signaali servon signaalin viivalle. PWM on teknikka, jossa signaalia päälle ja pois pistetään nopeasti luodaksensa eri leveyksiä olevia pulssie. Pulssien leveys määrää ulostuloventtiilin sijainnin.
Esimerkiksi, kun lähetät PWM-signaalin, jonka pulssileveys on 1,5 millisekuntia (ms), servo liikkuu neutraaliin sijaintiin (90 astetta).

Kun lähetät PWM-signaalin, jonka pulssileveys on 1 ms, servo liikkuu minimisijaintiin (0 astetta). Kun lähetät PWM-signaalin, jonka pulssileveys on 2 ms, servo liikkuu maksimisijaintiin (180 astetta).
PWM-signaalin taajuus on 50 Hz, joka tarkoittaa, että se toistuu joka 20 ms. Pulssileveys voi vaihdella 1 ms:stä 2 ms:iin tässä ajanjakson sisällä.
On monia tapoja luoda ja lähettää PWM-signaaleja servomotoriin. Joitakin yleisimpiä menetelmiä ovat:
Arduino-taulukon tai muun mikrokontrollerin käyttö
Potentiometrin tai muun analogisen anturin käyttö
Joystickin tai muun digitaalisen syöttölaitteen käyttö
Omistettyjen servon ohjaimeiden tai kuljettajien käyttö
Seuraavissa osioissa tutkimme näitä menetelmiä yksityiskohtaisemmin ja näemme joitakin esimerkkejä siitä, miten ne toimivat.
Servomotorin ohjaus Arduinolla
Arduino on yksi suosituimmista alustoista servomotorien ohjaamiseen. Arduino-taulukoissa on sisäänrakennettuja PWM-ulkoputoksia, joita voidaan käyttää servoihin lähettämään signaaleja. Arduinoilla on myös Servo-kirjasto, joka helpottaa koodin kirjoittamista servon ohjaamiseen.
Servomotorin ohjaamiseksi Arduinolla tarvitset:
Arduino-taulukon (esim. Arduino UNO)
Standardin servomotorin (esim. SG90)
Yhdistelyjohdot
Levyteline (valinnainen)
Servon punainen johto yhdistetään Arduino-taulukon 5V:hen. Servon musta johto yhdistetään Arduino-taulukon GND:ään. Servon valkoinen johto yhdistetään Arduino-taulukon pin 9:een.
Arduino-taulukon ohjelmointiin tarvitset Arduino IDE:n (online tai offline). Voit käyttää yhtä Servo-kirjaston esimerkkeistä tai kirjoittaa oman koodisi.
Seuraava koodi näyttää, miten servomotoria liikutetaan takaisin ja eteenpäin 180 astetta for-silmukan avulla:
#include <Servo.h> // Sisällytä Servo-kirjasto
Servo myservo; // Luo Servo-objekti
int pos = 0; // Muuttuja sijainnille
void setup() {
myservo.attach(9); // Liitä Servo-objekti pin 9:een
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Silmukka 0:sta 180 astettaan
myservo.write(pos); // Kirjoita sijainti Servo-objektiin
delay(15); // Odota 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Silmukka 180:sta 0 astettaan
myservo.write(pos); // Kirjoita sijainti Servo-objektiin
delay(15); // Odota 15 ms
}
}
Tämä koodi käyttää kahta silmukkaa lisäämään ja vähentämään sijaintimuuttujan arvoa 0:sta 180 astettaan ja päinvastoin. Se kirjoittaa tämän arvon Servo-objektiin käyttäen myservo.write(pos):ia. Lisäksi se lisää 15 ms:n viiveen kuhunkin askeleeseen hidastamaan liikettä.
Lähetä tämä koodi Arduino-taulukkollesi käyttämällä IDE:n Lähetä-painiketta, ja katso, miten servomotorisi liikkuu takaisin ja eteenpäin sileästi.
Servomotorin ohjaus potentiometrilla
Potentiometri on analoginen anturi, joka voi vaihtaa vastustustaan riippuen siitä, kuinka paljon kierrät sen nuppua. Voit käyttää potentiometria syöttölaitteena servomotorin ohjaamiseen.
Servomotorin ohjaamiseksi potentiometrilla tarvitset:
Arduino-taulukon (esim. Arduino UNO)
Standardin servomotorin (esim. SG90)
Potentiometrin (10k Ohm)
Yhdistelyjohdot
Levyteline
Potentiometrin ja servomotorin yhdistämiseen Arduino-taulukkoon käytetty piirikaavio näytetään alla:
Potentiometrin punainen johto yhdistetään Arduino-taulukon 5V:hen. Potentiometrin musta johto yhdistetään Arduino-taulukon GND:ään. Potentiometrin vihreä johto yhdistetään Arduino-taulukon pin A0:een.
Servon punainen johto yhdistetään toiseen riville levytetissä 5V:hen. Servon musta johto yhdistetään toiseen riville levytetissä GND:ään. Servon valkoinen johto yhdistetään toiseen riville levytetissä pin D9:een.
Arduino-taulukon ohjelmointiin tarvitset edellisen esimerkin saman koodin, mutta muuta muutamia rivejä:
#include <Servo.h> // Sisällytä Servo-kirjasto
Servo myservo; // Luo Servo-objekti
int potpin = A0; // Pin, johon potentiometri on yhdistetty
int val = 0; // Muuttuja potentiometrin arvon lukemiseen
void setup() {
myservo.attach(9); // Liitä Servo-objekti pin D9:een
}
void loop() {
val = analogRead(potpin); // Lue arvo potentiometrista (0 -1023)
val = map(val,0,1023,0,180); // Mappa arvoraja (0 -180)
myservo.write(val); // Kirjoita mappattu arvo Servo-objektiin
delay(15); // Odota 15 ms
}
Tämä koodi käyttää analogRead(potpin)-funktiota lukeakseen arvon potentiometrista, joka on yhdistetty pin A0:een. Se käyttää sitten map(val,0,1023,0,180)-funktiota mappaamaan arvorajan 0 -1023:sta 0 -180:een astetta. Se kirjoittaa sitten mappatun arvon Servo-objektiin käyttäen myservo.write(val)-funktiota. Lisäksi se lisää 15 ms:n viiveen, kuten edellisessä esimerkissä.
Voit lähettää tämän koodin Arduino-taulukkollesi käyttämällä IDE:n Lähetä-painiketta. Sinun pitäisi nähdä, että servomotorisi liikkuu potentiometrin nupun sijainnin mukaan.
Servomotorin ohjaus joystickilla
Joystick on digitaalinen syöttölaitte, joka voi havaita liikkeen suunnan ja magnitudin kahdella akselilla. Voit käyttää joystickia servomotorin ohjaamiseen mappamalla joystickin x-akselin servon kulmaan.
Servomotorin ohjaamiseksi joystickilla tarvitset seuraavat:
Arduino-taulukon (esim. Arduino UNO)
Standardin servomotorin (esim. SG90)
Joystick-moduulin (esim. KY-023)
Yhdistelyjohdot
Levyteline
Joystick-moduulin ja servomotorin yhdistämiseen Arduino-taulukkoon käytetty piirikaavio näytetään alla:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Joystick-moduulin punainen johto yhdistetään Arduino-taulukon 5V:hen. Joystick-moduulin musta johto yhdistetään Arduino-taulukon GND:ään. Joystick-moduulin vihreä johto yhdistetään Arduino-taulukon pin A0:een.
Servon punainen johto yhdistetään toiseen riville levytetissä 5V:hen. Servon musta johto yhdistetään toiseen riville levytetissä GND:ään. Servon valkoinen johto yhdistetään toiseen riville levytetissä pin D9:een.
Arduino-taulukon ohjelmointiin tarvitset edellisen esimerkin saman koodin, mutta muuta muutamia rivejä:
#include <Servo.h> // Sisällytä Servo-kirjasto
Servo myservo; // Luo Servo-objekti
int joyX = A0; // Pin, johon joystickin x-akseli on yhdistetty