Paano Kontrolin ang Servo Motor gamit ang Arduino

Paano Kontrolin Ang Servo Motor Gamit Ang Arduino



Mga Servo Motors ay isang uri ng de-koryenteng aparato na maaaring baguhin o paikutin ang posisyon ng isang bagay na may mahusay na katumpakan. Sa simula sila ay ginamit upang kontrolin ang RC plane wings makalipas ang ilang sandali ay tumungo sila sa robotics, humanoid robot at maraming mga proyekto sa automation. Hindi tulad ng mga stepper motor ang kanilang paggalaw ay limitado sa pagitan ng 0o hanggang 180o.

Karaniwan, ang mga servo motor ay may mga armas na maaaring kontrolin gamit ang Arduino. Ang mga servo motor ay binubuo ng isang control system na nagbibigay puna tungkol sa kasalukuyang posisyon ng motor shaft ang feedback na ito ay nagbibigay-daan upang ilipat sa mahusay na katumpakan.

Servo Motor Pinout

Karaniwan, karamihan sa mga servo motor ay may tatlong pin:







  • Vcc Pin (Karaniwan ay Pula 5V)
  • GND Pin (Normally Black 0V)
  • Input Signal Pin (Tumanggap ng PWM signal mula sa Arduino)



Paggawa ng Servo Motor

Makokontrol natin ang servo motor sa pamamagitan ng pagkonekta sa Vcc pin sa 5V at GND pin sa 0V. Sa terminal ng dilaw na kulay, nagbibigay kami ng a PWM signal na kumokontrol sa umiikot na anggulo ng servo motor. Ang lapad ng signal ng PWM ay nagbibigay sa amin ng anggulo kung saan iikot ng motor ang braso nito.



Kung titingnan natin ang Datasheet ng servo motors, makakakuha tayo ng mga sumusunod na parameter:





  • Panahon ng signal ng PWM
  • Pinakamababang lapad para sa PWM
  • Pinakamataas na lapad para sa PWM

Ang lahat ng mga parameter na ito ay paunang natukoy sa Arduino Servo library.

Servo Motors na may Arduino

Ang mga servo motor ay napakadaling kontrolin gamit ang Arduino, salamat sa Servo Library na tumutulong sa amin na i-customize ang aming code ayon sa pangangailangan at nagpapahintulot sa amin na paikutin ang servo arm sa gusto naming anggulo.



Ang lahat ng tatlong Parameter na nabanggit sa itaas ay naayos sa Servo library. Sa pamamagitan ng paggamit ng mga parameter na ito, maaari naming kontrolin ang anggulo ng servo motor sa sumusunod na paraan:

  • Kung ang lapad ng signal ng PWM = WIDTH_MAX, ang servo ay iikot sa 180o
  • Kung ang lapad ng signal ng PWM = WIDTH_MIIN, ang servo ay iikot sa 0o
  • Kung ang lapad ng signal ng PWM ay nasa pagitan WIDTH_MAX at WIDTH_MIN , ang servo motor ay iikot sa pagitan ng 0o at 180o

Maaari tayong bumuo ng nais na PWM signal sa ilan sa mga Arduino pin. Ang PWM signal ay ibibigay sa input signal pin ng servo motor. Pagkonekta sa natitirang dalawang pin ng servo sa 5v at GND ng Arduino.

Paano Kontrolin ang Servo Motor gamit ang Arduino

Dito ko ipapaliwanag kung paano natin maikokonekta at maprograma ang ating servo motor gamit ang Arduino. Ang kailangan mo lang ay:

  • Arduino UNO
  • USB B cable
  • Servo motor
  • Mga wire ng jumper

Paano Mag-program ng Servo gamit ang Arduino

Ang mga sumusunod ay ilang simpleng hakbang:

Hakbang 1: Isama ang paunang natukoy na servo library:

# isama < Servo.h >

Hakbang 2: Lumikha ng Servo Object:

Servo myservo;

Tip: Kung nagkokontrol ka ng higit sa isang servo motor, kailangan mong gumawa ng higit pang mga servo object:

Servo myservo1;
Servo myservo2;

Hakbang 3: Itakda ang control pin (9) sa Arduino Uno na nagpapadala ng PWM signal sa Input signal port ng servo:

myservo.attach ( 9 ) ;

Hakbang 4: I-rotate ang anggulo ng servo motor sa nais na halaga halimbawa 90o:

myservo.sumulat ( pos ) ;

Arduino Code

Buksan ang programa ng halimbawa ng servo motor mula sa File>Halimbawa>Servo>Sweep , magbubukas ang isang bagong window na nagpapakita sa amin ng aming servo sketch:

#include

Servo myservo; // servo object ay nilikha para sa pagkontrol ng servo motor
int pos = 0 ; // upang mag-imbak ng posisyon ng servo isang bagong variable ay nilikha
walang bisang setup ( ) {
myservo.attach ( 9 ) ; // kalooban na ito itakda Arduino pin 9 para sa PWM output
}
walang laman na loop ( ) {
para sa ( pos = 0 ; pos = 0 ; pos -= 1 ) { // mula sa 180 sa 0 degrees
myservo.sumulat ( pos ) ; // sabihin sa servo na pumunta sa 'pos' na posisyon
pagkaantala ( 5 ) ; // naghihintay para sa 5 ms upang maabot ng servo ang posisyon
}
}

Kapag ang program ay pinagsama-sama at na-upload, ang servo motor ay magsisimulang umiikot nang mabagal mula sa panimulang posisyon na 0 degrees hanggang 180 degrees, isang degree sa isang pagkakataon tulad ng mga hakbang. Kapag nakumpleto na ng motor ang 180-degree na pag-ikot, sisimulan nito ang pag-ikot nito sa tapat na direksyon patungo sa panimulang punto nito i.e., 0 degree.

Schematics

Paano Kontrolin ang Servo Motor gamit ang Potentiometer

Maaari rin nating kontrolin ang posisyon ng servo motor sa pamamagitan ng kamay. Upang gawin ito kailangan namin ng a Potensyomiter . Ang potentiometer ay may tatlong pin. Ikonekta ang dalawang panlabas na pin sa 5V Vcc at GND ng Arduino at gitnang isa sa A0 pin sa Arduino board.

Paano Mag-program ng Servo gamit ang Potentiometer

Karamihan sa sketch para sa potentiometer ay pareho sa nakaraang halimbawa. Ang tanging pagkakaiba ay isang bagong Variable val at subpin ay tinukoy bago ang setup at loop na seksyon ng code.

int potpin = A0;
int val;

Sa loop section analog pin A0 ay ginagamit upang basahin ang mga halaga para sa Potentiometer na may function analogRead() . Ang mga Arduino board ay naglalaman ng 10-bit ADC (Analog to Digital Converter) na nagbibigay sa amin ng mga halaga sa pagitan ng 0 at 1023 depende sa kung anong posisyon ang potentiometer:

val = analogRead ( subpin ) ;

Sa wakas, nagamit na namin mapa() function upang muling i-map ang mga numero mula 0 hanggang 1023 ayon sa anggulo ng Servo gaya ng alam natin na ang mga Servo motor ay maaari lamang iikot sa pagitan ng 00 at 1800.

val = mapa ( val, 0 , 1023 , 0 , 180 ) ;

Arduino Code

Buksan ang knob sketch na available sa Arduino IDE, pumunta sa Mga File>Mga Halimbawa>Servo>Knob . Magbubukas ang isang bagong window na nagpapakita sa amin ng aming knob sketch para sa servo:

#include
Servo myservo; // Paglikha ng isang servo object name myservo
int potpin = A0; // pagtukoy ng analog pin para sa potensyomiter
int val; // variable alin kalooban basahin mga halaga ng analog na pin para sa potensyomiter

walang bisang setup ( ) {
myservo.attach ( 9 ) ; // tinukoy na pin 9 para sa PWM input signal ng servo sa Arduino
}
walang laman na loop ( ) {
val = analogRead ( subpin ) ; // nagbabasa ng halaga mula sa potentiometer ( halaga sa pagitan 0 at 1023 )
val = mapa ( val, 0 , 1023 , 0 , 180 ) ; // sukatin ang halaga na gagamitin sa servo ( halaga sa pagitan 0 at 180 )
myservo.sumulat ( val ) ; // nagtatakda ng posisyon ng servo na may naka-scale na halaga
pagkaantala ( labinlima ) ; // naghihintay para sa ang servo para makarating sa posisyon
}

Ang code sa itaas ay makakatulong sa amin na kontrolin ang servo motor shaft gamit ang potentiometer, ang baras ay iikot sa pagitan ng 0 at 180 degrees. Maaari din nating mapanatili ang bilis kasama ang direksyon ng servo gamit ito.

Circuit Diagram

Ilang Servo Motors ang maaari kong Ikonekta sa Arduino?

Ang maximum na bilang ng mga servo motor na kayang hawakan ng Arduino UNO ay hanggang 12 na may Arduino library para sa servo, at maximum na 48 servos maaaring konektado sa mga board tulad ng Mega.

Tip: Maaari naming direktang patakbuhin ang servo gamit ang Arduino current ngunit tandaan kung ang mga servos motor ay gumuhit ng higit sa 500mA pagkatapos ay ang iyong Arduino board ay maaaring awtomatikong mag-reset at mawalan ng kuryente. Inirerekomenda na palaging gumamit ng nakalaang power supply para sa mga servo motor.

Konklusyon

Sa tutorial na ito, tinakpan namin ang mekanismo ng pagkontrol ng mga servo motor na may Arduino. Sinakop namin ang mga pangunahing kaalaman sa pagkontrol sa posisyon at bilis ng servo gamit ang potentiometer. Ngayon ay mayroon ka nang ideya tungkol sa servo at ang mga posibilidad para sa iyong robotics, RC projects at automation gamit ang servo ay walang katapusan.