Servo Motor Kontrola: Orokorra Gida
Nagusiko Ikuspegiak:
Servo Motor Kontrolaren Definizioa: Servo motor kontrolak elektroniko segnalekin motor posizioa, abiadura eta azelerazioa zehazki manipulatzea ahalbidetzen du.
Feedback Mekanismoa: Feedback sistema, askotan potentiometro edo kodekatzaile bat, motorren irteera zehazki kontrol sarbidea egokitzen duela ziurtatzen du.
PWM Segnala: Pulse-width modulation (PWM) teknika elektrikoko pulsu enparrutza aldatuz servoaren posizioa ezarriko da.
Arduino eta Servo Motorak: Arduino taula baten erabilera servo motorak programatzeko eta kontrolatzeko modu arrakasta eta hardware txikiagorekin egiteko modu oso erabili beharrezkoa da.
Servo Motorren Aplikazioak: Servo motorrek posizio kontrol zehatza behar duten proiektuetan, robotikan eta sistemen automatizatuak bezalako.
Servo motorea biraketa zehatz eta zehatzentasunez diseinatutako motore bat da. DC motore tipikoa berdina da, baina biraketa jarraitua egin beharrean posizio jakin bat mantentzea dute. Eremu hori servo motorak robotikarako, automatizazioa eta hobion proiektuetan ideala bihurtzen ditu.
Artikulu honek servo motor kontrola funtzionatzen duen moduaz, servo motor mota desberdinak, eta kontrol metodo eta gailu desberdinak azaltzen ditu. Gainera, servo motor aplikazioen eta proiektuen adibideak ematen ditu.
Zer Da Servo Motorea?
Servo motorea posizioa (angelua), abiadura eta azelerazioa kontrolatzeko aktuatzailea da. Servo motore tipikoak hiru osagai nagusi ditu: DC motore bat, kontrol zirkuitua eta feedback gailua.
DC motoreak servoari indar eman eta gearren artean konexioa egiten du, abiadura murriztuta eta momentua handituz output shaft-ean.

Output shaft-a servoaren zati bat da, biraketa egiten duena eta karga mugitzen duena.
Kontrol zirkuituak kanpo kontrolagaitik jasotako eta prozesatutako sarrera segnalekin burutzen du. Segnal hauek servoari zer posizio, abiadura edo norabidean joateko esaten dizkie. Kontrol zirkuituak ere DC motoreari indar eman nahi duenean.
Feedback gailua askotan potentiometro edo kodekatzaile bat da, output shaft-aren uneko posizioa neurtzen duena.

Feedback gailuak posizio datuak kontrol zirkuituan itzultzen ditu, orduan DC motorearen indarra egokitu eta posizio erreala sarrera segnalarekin bat etorri dadin.
Kontrol zirkuituaren eta feedback gailuaren arteko feedback buklerak servoak bere mugimendu barruko edozein posizio zehatz eta mantentzea ahalbidetzen du.
Servo Motorra Nola Kontrolatu?
Servo motorak PWM (pulse-width modulation) segnala bidali izan behar du servoaren signal line-an. PWM teknika segnala aktibatzen eta desaktibatzen da neurri askotan, pulsu enparrutza desberdinak sortzeko. Pulsu enparrutza determinatzen du output shaft-aren posizioa.
Adibidez, 1.5 milisekundo (ms) enparrutza duen PWM segnala bidali duzunean, servo neutral posizioa hartuko du (90 gradua).

1 ms enparrutza duen PWM segnala bidali duzunean, servo minimo posizioa hartuko du (0 gradua). 2 ms enparrutza duen PWM segnala bidali duzunean, servo maximo posizioa hartuko du (180 gradua).
PWM segnala 50 Hz-en maiztasunarekin, hau da, 20 ms-en periodo bakoitzeko. Enparrutza 1 ms-tik 2 ms-ra bitartean aldakorrean alda daiteke.
PWM segnalen generatzeko eta bidalitzeko modu anitz daude. Batzuk dira:
Arduino taula edo beste microcontroler bat erabiliz
Potentiometro edo beste sensor analogik bat erabiliz
Joystick edo beste sarrera digital bat erabiliz
Dedikatutako servo kontrolagailu edo driver bat erabiliz
Hurrengo atalean, metode horiek ulertzeko xehetasun gehiago ikusiko ditugu eta adibide batzuk ikusiko ditugu.
Servo Motorra Arduino Bidez Kontrolatzea
Arduino servo motorak kontrolatzeko plataforma arrakasta da. Arduino taulak PWM irteera barne ditu, servoei segnala bidali ahal izateko. Arduino Servo liburutegia servo kontrola kodea idazteko erraza egin dezake.
Servo motorea Arduino bidez kontrolatzeko beharko dituzu:
Arduino taula bat (Arduino UNO bezala)
Servo motore estandarra (SG90 bezala)
Jumper kableak
Breadboard bat (aukerakoa)
Servoaren kable gorria 5V-ren ardatzari lotzen da Arduino taulan. Servoaren kable beltza GND-ren ardatzari lotzen da Arduino taulan. Servoaren kable zuria pin 9-n lotzen da Arduino taulan.
Arduino taula programatzeko, Arduino IDE (online edo offline) erabiliz egin behar duzu. Servo liburutegiko adibide bat erabil dezakezu edo zure kodea idatzi.
Kode hau servo motorea 180 gradutan atzerantz eta aurrerantz mugitzea erakusten du for loop baten bidez:
#include <Servo.h> // Inkludeatu Servo liburutegia
Servo myservo; // Sortu Servo objektua
int pos = 0; // Aldagai posizioa
void setup() {
myservo.attach(9); // Lotu Servo objektua pin 9-rekin
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // Loop 0-tik 180 gradu arte
myservo.write(pos); // Idatzi posizioa Servo objektuan
delay(15); // Itxaron 15 ms
}
for (pos = 180; pos >= 0; pos -= 1) { // Loop 180-tik 0 gradu arte
myservo.write(pos); // Idatzi posizioa Servo objektuan
delay(15); // Itxaron 15 ms
}
}
Kode hau bi loop erabiltzen ditu posizio aldagaiak 0-tik 180 gradu arte eta alderantziz. Orduan balio hau Servo objektuan idatzi egiten du myservo.write(pos) erabiliz. Gainera, 15 ms itxaropena gehitzen du mugimendua lasterretu dezan.
Kode hau Arduino taulara IDE-ko Upload botoiarekin igazi, eta zure servo motorea 180 gradu arte mugitzen duela ikusiko duzu.
Servo Motorra Potentiometro Bidez Kontrolatzea
Potentiometroa sensor analogik bat da, zinean errotatzearen arabera resistentzia aldatzen duena. Potentiometroa servo motore bat kontrolatzeko sarrera gailu gisa erabil daiteke.
Servo motorea potentiometro bidez kontrolatzeko beharko dituzu:
Arduino taula bat (Arduino UNO bezala)
Servo motore estandarra (SG90 bezala)
Potentiometro bat (10k Ohm)
Jumper kableak
Breadboard bat
Potentiometro eta servo motore bat Arduino taularekin konektatzeko diagrama honakoa da:
Potentiometroaren kable gorria 5V-ren ardatzari lotzen da Arduino taulan. Potentiometroaren kable beltza GND-ren ardatzari lotzen da Arduino taulan. Potentiometroaren kable berdea pin A0-n lotzen da Arduino taulan.
Servoaren kable gorria 5V-ren ardatzari lotzen da breadboard-en beste hilobaten batean. Servoaren kable beltza GND-ren ardatzari lotzen da breadboard-en beste hilobaten batean. Servoaren kable zuria pin D9-n lotzen da breadboard-en beste hilobaten batean.
Arduino taula programatzeko, aurreko adibideko kodea erabil behar duzu, baina lerro batzuk aldatu behar dira:
#include <Servo.h> // Inkludeatu Servo liburutegia
Servo myservo; // Sortu Servo objektua
int potpin = A0; // Pin potentiometroarekin konektatuta
int val = 0; // Aldagai potentiometroaren balioa irakurtzeko
void setup() {
myservo.attach(9); // Lotu Servo objektua pin D9-rekin
}
void loop() {
val = analogRead(potpin); // Irakurri potentiometroaren balioa (0 -1023)
val = map(val,0,1023,0,180); // Mapatu balio eremua (0 -180)
myservo.write(val); // Idatzi mapatutako balioa Servo objektuan
delay(15); // Itxaron 15 ms
}
Kode hau analogRead(potpin) funtzioa erabiltzen du potentiometroaren balioa irakurtzeko, pin A0-rekin konektatuta. Ondoren, map(val,0,1023,0,180) funtzioa erabiltzen du balio eremua 0-1023-tik 0-180 gradu arte mapatzeko. Ondoren, mapatutako balioa Servo objektuan idatzi egiten du myservo.write(val) funtzioa erabiliz. Gainera, 15 ms itxaropena gehitzen du, aurreko adibidean bezala.
Kode hau Arduino taulara IDE-ko Upload botoiarekin igazi. Zure servo motorea potentiometroaren zinearen posizioaren arabera mugitzen duela ikusiko duzu.
Servo Motorra Joystick Bidez Kontrolatzea
Joystick sarrera digital bat da, bi ardatzen direkzioa eta magnitudea detektatzeko aukera ematen duena. Joystick servo motore bat kontrolatzeko erabil daiteke, joystick-en x ardatza servoaren angeluarekin mapatuz.
Servo motorea joystick bidez kontrolatzeko beharko dituzu hurrengoak:
Arduino taula bat (Arduino UNO bezala)
Servo motore estandarra (SG90 bezala)
Joystick modulua (KY-023 bezala)
Jumper kableak
Breadboard bat
Joystick modulua eta servo motore bat Arduino taularekin konektatzeko diagrama honakoa da:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Joystick moduluko kable gorria 5V-ren ardatzari lotzen da Arduino taulan. Joystick moduluko kable beltza GND-ren ardatzari lotzen da Arduino taulan. Joystick moduluko kable berdea pin A0-n lotzen da Arduino taulan.
Servoaren kable gorria 5V-ren ardatzari lotzen da breadboard-en beste hilobaten batean. Servoaren kable beltza GND-ren ardatzari lotzen da breadboard-en beste hilobaten batean. Servoaren kable zuria pin D9-n lotzen da breadboard-en beste hilobaten batean.
Arduino taula programatzeko, aurreko adibideko kodea erabil behar duzu, baina lerro batzuk aldatu behar dira:
#include <Servo.h> // Inkludeatu Servo liburutegia
Servo myservo; // Sortu Servo objektua
int joyX = A0; // Pin joystick-en x ardatzarekin konektatuta
int val = 0; // Aldagai joystickaren balioa irakurtzeko
void setup() {
myservo.attach(9); // Lotu Servo objektua pin 9-rekin
}
void loop() {
val = analogRead(joyX); // Irakurri joystick-en x ardatzaren balioa (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Mapatu balio eremua (0 - 180)