Hur man styr servomotorn med Arduino

Hur Man Styr Servomotorn Med Arduino



Servomotorer är en typ av elektrisk anordning som kan ändra eller rotera ett föremåls position med stor precision. I början användes de för att styra RC-planets vingar ögonblick senare tog de sig till robotik, humanoida robotar och många automationsprojekt. Till skillnad från stegmotorer är deras rörelse begränsad mellan 0o till 180o.

Vanligtvis har servomotorer armar som kan styras med Arduino. Servomotorer består av ett styrsystem som ger respons om motoraxelns aktuella position tillåter denna återkoppling att röra sig med stor precision.

Servomotor Pinout

Vanligtvis har de flesta servomotorer tre stift:







  • Vcc-stift (normalt rött 5V)
  • GND-stift (normalt svart 0V)
  • Ingångssignalstift (ta emot PWM-signal från Arduino)



Funktion av servomotor

Vi kan styra servomotorn genom att ansluta Vcc-stiftet till 5V och GND-stiftet till 0V. På den gula färgterminalen tillhandahåller vi en PWM signal som styr servomotorns rotationsvinkel. Bredden på PWM-signalen ger oss vinkeln med vilken motorn kommer att rotera sin arm.



Om vi ​​tittar på databladet för servomotorer får vi följande parametrar:





  • PWM signal tidsperiod
  • Minsta bredd för PWM
  • Maximal bredd för PWM

Alla dessa parametrar är fördefinierade i Arduino Servo-biblioteket.

Servomotorer med Arduino

Servomotorer är superenkla att styra med Arduino, tack vare Servobibliotek som hjälper oss att anpassa vår kod efter behov och låter oss rotera servoarmen i önskad vinkel.



Alla de tre parametrarna som nämns ovan är fixerade i Servo-biblioteket. Genom att använda dessa parametrar kan vi styra vinkeln på servomotorn på följande sätt:

  • Om PWM-signalens bredd = WIDTH_MAX kommer servo att rotera till 180o
  • Om PWM-signalens bredd = WIDTH_MIIN kommer servo att rotera till 0o
  • Om PWM-signalens bredd ligger däremellan WIDTH_MAX och WIDTH_MIN , kommer servomotorn att rotera mellan 0o och 180o

Vi kan generera en önskad PWM-signal på några av Arduino-stiften. PWM-signal kommer att ges vid ingångssignalstiftet på servomotorn. Ansluter de återstående två stiften av servo till 5v och GND på Arduino.

Hur man styr servomotorn med Arduino

Här kommer jag att förklara hur vi kan ansluta och programmera vår servomotor med Arduino. Allt du behöver är:

  • Arduino UNO
  • USB B-kabel
  • Servomotor
  • Bygeltrådar

Hur man programmerar Servo med Arduino

Följande är några enkla steg:

Steg 1: Inkludera fördefinierat servobibliotek:

# omfatta < Servo.h >

Steg 2: Skapa servoobjekt:

Servo myservo;

Tips: Om du styr mer än en servomotor måste du skapa fler servoobjekt:

Servo myservo1;
Servo myservo2;

Steg 3: Ställ in kontrollstift (9) på Arduino Uno som skickar PWM-signal till ingångssignalporten på servo:

myservo.attach ( 9 ) ;

Steg 4: Vrid servomotorns vinkel till önskat värde till exempel 90o:

myservo.write ( pos ) ;

Arduino kod

Öppna servomotorexempelprogram från Arkiv>Exempel>Servo>Svepa , öppnas ett nytt fönster som visar oss vår servoskiss:

#include

Servo myservo; // servoobjekt skapas för styrande servomotor
int pos = 0 ; // för att lagra servoposition skapas en ny variabel
ogiltig installation ( ) {
myservo.attach ( 9 ) ; // det här kommer att uppsättning Arduino stift 9 för PWM-utgång
}
tom slinga ( ) {
för ( pos = 0 ; pos = 0 ; pos -= 1 ) { // går från 180 till 0 grader
myservo.write ( pos ) ; // säg till servo att gå till 'pos'-position
dröjsmål ( 5 ) ; // väntar för 5 ms så servo kan nå till position
}
}

När programmet väl har kompilerats och laddats upp kommer servomotorn att börja rotera långsamt från startposition 0 grader till 180 grader, en grad i taget precis som steg. När motorn har avslutat 180 graders rotation kommer den att starta sin rotation i motsatt riktning mot sin startpunkt, dvs 0 grader.

Schema

Hur man styr servomotorn med hjälp av en potentiometer

Vi kan även styra servomotorns position för hand. För att göra detta behöver vi en Potentiometer . Potentiometern har tre stift. Anslut de två yttre stiften till 5V Vcc och GND på Arduino och mitten till A0-stiftet på Arduino-kortet.

Hur man programmerar servo med potentiometer

Det mesta av skissen för potentiometer är densamma som i föregående exempel. Den enda skillnaden är en ny variabel val och understift definieras före installations- och loopsektionen av koden.

int potpin = A0;
int val;

I loopsektion används analog stift A0 för att avläsa värden för Potentiometer med funktion analogRead() . Arduino-kort innehåller 10-bitars ADC (Analog to Digital Converter) som ger oss värden mellan 0 och 1023 beroende på vilken position potentiometern är:

val = analogRead ( understift ) ;

Slutligen har vi använt Karta() funktion för att mappa om siffror från 0 till 1023 enligt vinkeln på servo som vi vet servomotorer kan bara rotera mellan 00 och 1800.

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

Arduino kod

Öppna rattskiss tillgänglig i Arduino IDE, gå till Filer>Exempel>Servo>Vred . Ett nytt fönster öppnas som visar oss vår rattskiss för servo:

#include
Servo myservo; // Skapa ett servoobjektnamn myservo
int potpin = A0; // definiera analogt stift för potentiometer
int val; // variabel som kommer läsa analoga stiftvärden för potentiometer

ogiltig installation ( ) {
myservo.attach ( 9 ) ; // definierad stift 9 för PWM-ingångssignal för servo på Arduino
}
tom slinga ( ) {
val = analogRead ( understift ) ; // läser av värdet från potentiometern ( värde mellan 0 och 1023 )
val = karta ( val, 0 , 1023 , 0 , 180 ) ; // skala värdet som ska användas med servo ( värde mellan 0 och 180 )
myservo.write ( val ) ; // ställer in servoposition med skalat värde
dröjsmål ( femton ) ; // väntar för servo för att komma till position
}

Ovanstående kod hjälper oss att styra servomotoraxeln med potentiometer, axeln kommer att rotera mellan 0 och 180 grader. Vi kan också hålla hastigheten tillsammans med servoriktningen som använder den.

Kretsdiagram

Hur många servomotorer kan jag ansluta med Arduino?

Maximalt antal servomotorer som Arduino UNO kan hantera är upp till 12 med Arduino-bibliotek för servo, och max. 48 servon kan kopplas ihop med kort som Mega.

Dricks: Vi kan köra servo direkt med Arduino-ström men kom ihåg om servomotorer drar mer än 500mA då kan ditt Arduino-kort automatiskt återställas och tappa ström. Det rekommenderas att alltid använda en dedikerad strömförsörjning för servomotorer.

Slutsats

I den här handledningen har vi täckt styrmekanismen för servomotorer med Arduino. Vi täckte grunderna för att styra servoposition och hastighet med potentiometer. Nu har du fått en idé om servo och möjligheterna för din robotik, RC-projekt och automatisering med servo är oändliga.