Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

En av de enkleste og mest populære måten å få til en lineær bevegelse er ved bruk av servoer. En servo består av en elektrisk motor, en arm som gir den lineære bevegelsen, et gir med utveksling som gjør at bevegelsen ikke blir for rask, et potmeter som gir tilbakemelding om posisjonen, og kontrollelektronikk som styrer det hele. Du gir servoen beskjed til hvilken posisjon den skal gå. Posisjonen angis i grader. Servoen styres av pulser, og må derfor være tilkoblet en utgang som kan bruke PWM. I Arduino følger det med et bibliotek med funksjoner som kan brukes for å styre servoer. Dette biblioteket må inkluderes i programkoden. 

I dette eksempelet skal vi bruke et potmeter og styre vinkelen på servoen med potmeteret. Det vil si at vi kobler opp potmeteret på en analog inngang (5), og leser av verdien, som er et tall mellom 0 og 1023. Deretter bruker vi map for å regne det om til et tall mellom 0 og 180. Dette fordi servoen vi bruker i eksempelet har arbeidsområde på 180 grader. Servoen kobles til pinne 9 som har PWM.

 

Info
titleFarge på ledninger

En servo har tre ledninger. En for +5V, en for jord og en for signal. +5V er som regel rød. Jord er som regel svart, men kan være brun. Signal er som regel gul, hvit eller oransje.

 

Denne eksempelkoden ligger også i biblioteket vårt, PLabExamples/examples/05.Servo/Servo.

Code Block
languagecpp
titleEksempel med styring av servo med potmeter
#include <Servo.h>    // Inkluderer Servo-iblioteket i koden


Servo minServo;       // Lager et servo-objekt


const int potPin = A5;
const int servoPin = 9;
int potVerdi;
int vinkel;


void setup(){
  minServo.attach(servoPin); // Knytter servo-objektet til pinne 9
}
 
void loop(){
  potVerdi = analogRead(potPin);
  vinkel = map(potVerdi, 0, 1023, 0, 179);
  minServo.write(vinkel);
  delay(15);
}

 

Det er viktig å være klar over at servoer kan trekke mer strøm enn hva Arduino klarer å levere på en utgang. Derfor må man ofte koble opp +5V fra en annen kraftkilde. Da er det viktig at denne strømkilden har felles jord med Arduino. Et triks som kan fungere er å koble opp en kondensator i parallell med strømforsyninga til servoen. Denne lagrer en viss ladning som kan være nok til å få servoen i gang. 

Her er det viktig å passe på at spenningen ikke overgår det som servoen tåler. Hvis batteriet eller annen kraftkilde har høyere spenning må man koble inn en spenningsregulator. 

Merkespenning for ulike servoer:

Tower Pro SG90: 3.0 - 7.2V

Tower Pro MG995: 4.8 - 7.2V

Hitech HS 422: 4.8 - 6.0V

DFRobot DF05BB: 4.8 - 6.0V

NewServo

Det er også viktig å være klar over at biblioteket Servo kan kræsje med andre biblioteker. Se informasjon om Arduino bibliotek for mer informasjon. Vi har derfor lagd NewServo. NewServo bruker ikke timere, men har den effekten at man ikke kan gjøre noe annet mens servoen flytter seg.

Eksempelkode for NewServo finnes i biblioteket vårt, PLabExamples/examples/05.Servo/NewServo.

Oppkobling gjøres slik:

 

Noen servoer i forskjellg størrelse og utførelse.

 

Oppkobling.

Arduino med prototypingshield med potmeter og servo koblet opp.

Oppkobling av servo med ekstern kraftkilde.