Pagkontrol sa Servo Motor: Kompletong Ginagamit
Pangunahing Natutunan:
Nakatukoy ang Pagkontrol ng Servo Motor: Ang pagkontrol ng servo motor ay nagbibigay ng mahusay na pag-aari ng posisyon, bilis, at pagtaas ng bilis ng motor sa pamamagitan ng elektronikong signal.
Mechanismo ng Feedback: Ang sistema ng feedback, kadalasang potentiometer o encoder, ay siguradong ang output ng motor ay tumpak na tumutugon sa kontrol na input.
PWM Signal: Ang pulse-width modulation (PWM) ay mahalaga para sa pagtatakda ng posisyon ng servo sa pamamagitan ng pagbabago ng haba ng electrical pulses.
Arduino at Servo Motors: Ang paggamit ng Arduino board ay isang sikat at epektibong paraan para magprogram at kontrolin ang mga servo motors nang may minimal na setup ng hardware.
Mga Application ng Servo Motors: Mahalaga ang mga servo motors para sa mga proyekto na nangangailangan ng tumpak na kontrol ng posisyon, tulad ng robotics at automated systems.
Ang servo motor ay isang motor na disenyo para sa mataas na presisyon at katotohanan sa pag-ikot. Ito ay iba mula sa typical na DC motor dahil sa kanyang kakayahang manahan sa isang tiyak na posisyon kaysa sa patuloy na pag-ikot. Ang feature na ito ay ginagawa ang mga servo motors na ideal para sa robotics, automation, at hobby projects.
Ang artikulong ito ay nagpapaliwanag kung paano gumagana ang pagkontrol ng servo motor, ang iba't ibang uri ng servo motors, at iba't ibang paraan at aparato ng pagkontrol. Ito din ay nagbibigay ng mga halimbawa ng mga application at proyekto ng servo motor.
Ano ang Servo Motor?
Ang servo motor ay inilalarawan bilang isang aktuator na nagbibigay ng mahusay na kontrol sa posisyon (angle), bilis, at pagtaas ng bilis. Ang tipikal na servo motor ay binubuo ng tatlong pangunahing komponente: DC motor, control circuit, at feedback device.
Ang DC motor ay nagbibigay ng lakas sa servo at konektado sa mga gear na nagbabawas ng bilis at nagpapataas ng torque sa output shaft.

Ang output shaft ay bahagi ng servo na umiikot at gumagalaw ng load.
Ang control circuit ay responsable sa pagtanggap at pagproseso ng mga input signals mula sa external controller. Ang mga signals na ito ay nagsasabi sa servo kung anong posisyon, bilis, o direksyon na pupuntahan. Ang control circuit din ay nagpapadala ng lakas sa DC motor para i-drive ito.
Ang feedback device ay karaniwang potentiometer o encoder na nagsusukat ng kasalukuyang posisyon ng output shaft.

Ang feedback device ay nagpapasa ng data ng posisyon pabalik sa control circuit, kaya ito ay nag-aadjust sa lakas ng DC motor upang i-align ang aktwal na posisyon sa desired position mula sa input signal.
Ang feedback loop sa pagitan ng control circuit at feedback device ay siguradong ang servo ay maaaring tumpakin at panatilihin ang anumang posisyon sa loob ng range of motion nito.
Paano Kontrolin ang Servo Motor?
Ang mga servo motors ay kontrolihin sa pamamagitan ng pagpadala ng PWM (pulse-width modulation) signal sa signal line ng servo. Ang PWM ay isang teknik na nagbabago ng signal nang mabilis upang lumikha ng mga pulso ng iba't ibang haba. Ang haba ng mga pulso ay nagdetermina ng posisyon ng output shaft.
Halimbawa, kapag ikaw ay nagpadala ng PWM signal na may pulse width ng 1.5 milliseconds (ms), ang servo ay lalipat sa neutral position (90 degrees).

Kapag ikaw ay nagpadala ng PWM signal na may pulse width ng 1 ms, ang servo ay lalipat sa minimum position (0 degrees). Kapag ikaw ay nagpadala ng PWM signal na may pulse width ng 2 ms, ang servo ay lalipat sa maximum position (180 degrees).
Ang PWM signal ay may frequency ng 50 Hz, kaya ito ay umuulit bawat 20 ms. Ang pulse width ay maaaring magbago mula 1 ms hanggang 2 ms sa loob ng periodong ito.
Maraming paraan para bumuo at magpadala ng PWM signals sa mga servo motors. Ang ilan sa pinakakaraniwang mga paraan ay:
Gamit ang Arduino board o ibang microcontroller
Gamit ang potentiometer o ibang analog sensor
Gamit ang joystick o ibang digital input device
Gamit ang dedicated servo controller o driver
Sa mga sumusunod na seksyon, kami ay sasalamin sa bawat isa ng mga paraan na ito nang mas detalyado at makita ang ilang mga halimbawa kung paano sila gumagana.
Pagkontrol ng Servo Motor gamit ang Arduino
Ang Arduino ay isa sa pinakasikat na platform para sa pagkontrol ng mga servo motors. Ang mga Arduino boards ay may built-in na PWM outputs na maaaring gamitin para magpadala ng signals sa servos. Ang Arduino din ay may Servo library na nagpapadali ng paglikha ng code para sa pagkontrol ng servo.
Para kontrolin ang servo motor gamit ang Arduino, kailangan mo ng:
Isang Arduino board (tulad ng Arduino UNO)
Isang standard na servo motor (tulad ng SG90)
Jumper wires
Isang breadboard (optional)
Ang red wire mula sa servo ay konektado sa 5V sa Arduino board. Ang black wire mula sa servo ay konektado sa GND sa Arduino board. Ang white wire mula sa servo ay konektado sa pin 9 sa Arduino board.
Para programin ang Arduino board, kailangan mong gamitin ang Arduino IDE (online o offline). Maaari kang gumamit ng isang halimbawa mula sa Servo library o mag-isip ng sarili mong code.
Ang sumusunod na code ay nagpapakita kung paano sweepin ang servo motor back and forth sa 180 degrees gamit ang for loop:
#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
}
}
Ang code na ito ay gumagamit ng dalawang loops para i-increment at i-decrement ang position variable mula 0 hanggang 180 degrees at vice versa. Ito ay pagkatapos ay isinusulat ang value na ito sa Servo object gamit ang myservo.write(pos). Ito din ay nagdaragdag ng delay ng 15 ms sa bawat step upang baguhin ang bilis ng paggalaw.
Uploadin ang code na ito sa iyong Arduino board gamit ang Upload button sa IDE, at panoodin kung paano ang iyong servo motor ay sumweep back and forth smoothly.
Pagkontrol ng Servo Motor gamit ang Potentiometer
Ang potentiometer ay isang analog sensor na maaaring magbago ng resistance depende kung gaano ka babagyan mo ang knob nito. Maaari kang gumamit ng potentiometer bilang isang input device para sa pagkontrol ng servo motor.
Para kontrolin ang servo motor gamit ang potentiometer, kailangan mo ng:
Isang Arduino board (tulad ng Arduino UNO)
Isang standard na servo motor (tulad ng SG90)
Isang potentiometer (10k Ohms)
Jumper wires
Isang breadboard
Ang wiring diagram para sa koneksyon ng potentiometer at servo motor sa Arduino board ay ipinapakita sa ibaba:
Ang red wire mula sa potentiometer ay konektado sa 5V sa Arduino board. Ang black wire mula sa potentiometer ay konektado sa GND sa Arduino board. Ang green wire mula sa potentiometer ay konektado sa pin A0 sa Arduino board.
Ang red wire mula sa servo ay konektado sa 5V sa isa pang row sa breadboard. Ang black wire mula sa servo ay konektado sa GND sa isa pang row sa breadboard. Ang white wire mula sa servo ay konektado sa pin D9 sa isa pang row sa breadboard.
Para programin ang iyong Arduino board, kailangan mong gamitin ang parehong code sa nakaraang halimbawa ngunit baguhin ang ilang lines:
#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
}
Ang code na ito ay gumagamit ng analogRead(potpin) function para basahin ang value mula sa potentiometer na konektado sa pin A0. Ito pagkatapos ay gumagamit ng map(val,0,1023,0,180) function upang map ang value range mula 0 -1023 degrees. Ito pagkatapos ay isinusulat ang mapped value sa Servo object gamit ang myservo.write(val) function. Ito din ay nagdaragdag ng delay, ang parehas ng nakaraang halimbawa.
Maaari kang uploadin ang code na ito sa iyong Arduino board gamit ang Upload button sa IDE. Dapat mong makita ang iyong servo motor na galaw ayon sa posisyon ng knob ng potentiometer.
Pagkontrol ng Servo Motor gamit ang Joystick
Ang joystick ay isang digital input device na maaaring matukoy ang direksyon at magnitude ng paggalaw sa dalawang axes. Maaari kang gumamit ng joystick upang kontrolin ang servo motor sa pamamagitan ng pag-map ng x-axis ng joystick sa angle ng servo.
Para kontrolin ang servo motor gamit ang joystick, kailangan mo ng sumusunod:
Isang Arduino board (tulad ng Arduino UNO)
Isang standard na servo motor (tulad ng SG90)
Isang joystick module (tulad ng KY-023)
Jumper wires
Isang breadboard
Ang wiring diagram para sa koneksyon ng joystick module at servo motor sa Arduino board ay ipinapakita sa ibaba:
!https://www.makerguides.com/wp-content/uploads/2019/01/Servo-motor-control-with-Arduino-and-joystick-wiring-diagram.png
Ang red wire mula sa joystick module ay konektado sa 5V sa Arduino board. Ang black wire mula sa joystick module ay konektado sa GND sa Arduino board. Ang green wire mula sa joystick module ay konektado sa pin A0 sa Arduino board.
Ang red wire mula sa servo ay konektado sa 5V sa isa pang row sa breadboard. Ang black wire mula sa servo ay konektado sa GND sa isa pang row sa breadboard. Ang white wire mula sa servo ay konektado sa pin D9 sa isa pang row sa breadboard.
Para programin ang iyong Arduino board, kailangan mong gamitin ang parehong code sa nakaraang halimbawa ngunit baguhin ang ilang lines:
#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
void setup() {
myservo.attach(9); // Attach Servo object to pin 9
}
void loop() {
val = analogRead(joyX); // Read value from joystick x-axis (0 - 1023)
val = map(val, 0, 1023, 0, 180); // Map value range (0 - 180)
myservo.write(val); // Write mapped value to Servo object
delay(15); // Wait 15 ms
}
Ang code na