Hopp til innhald
Nynorsk

Emne

Sensorer og aktuatorer

Fagstoff

Servomotor

Ein servomotor er ein saktegåande motor som vanlegvis berre kan rotere ei halv omdreiing.

Beskriving

Ein servomotor er ein type motor som kan dreie akslinga til ein bestemd vinkel eller rotere med ein definert fart.

Dreiinga skjer ved at servoen får pulsar. Pulslengda bestemmer dreievinkelen. Ei pulslengde på 1,5 ms (1,5 millisekund) gir ein vinkel på 90 gradar, som er midtstilling.

Pulsane må gjentakast med jamne mellomrom, omtrent som når vi pulsbreiddemodulerer eit signal. I det illustrerte dømet under blir signalet sendt ut kvart 20. millisekund. Det vil då seie at signalet blir oppdatert med ein frekvens på 50 Hz, altså 50 gonger i sekundet.

Vi koplar derfor styreleidninga til servomotoren til ein utgang som har funksjon for pulsbreidde (PWM), til dømes port 9. Pinnar som kan nyttast med PWM-signal, er merkte med teiknet .

Bruksområde

Ein servomotor kan brukast som ein aktuator for ein mikrokontrollar. Vanlegvis roterer han berre 180 gradar, han går ikkje konstant rundt som ein vanleg motor.

Servomotorar blir til dømes brukt

  • i modellfly for å styre side- og høgderor og vengeklaffar

  • i ventilasjonsanlegg i bilar for å justere luftstraumen

  • i mange robotar som har rørlege armar

  • i ventilasjonsluker på varmepumper og i ulike låsemekanismar

Klarer du å finne andre døme på apparat og maskiner der ein servomotor er montert?

Kopling

Ein servomotor har tre tilkoplingar:

  • Han skal ha 5 V (pluss) spenning inn.

  • Han skal koplast til GND (jording).

  • Han skal få eit styresignal frå ein digital PWM-port. I dette tilfellet har vi valt port 9.

Viss ein skal nytte mange servomotorar, kan det vere formålstenleg å montere eit spesialdesigna skjold på Arduinoen som kan styre fleire servomotorar.

Koplingsskjema

Under finn du eit døme på eit koplingsskjema. I skjemaet er det teikna inn ein servomotor som er kopla til ein Arduino på punkta 5V, GND og D9. Det er òg montert ein motstand på 1 kΩ (1 kiloohm) i GND-kretsen.

Programmering

Ved bruk av ein servomotor må programmet hente inn eit førehandslaga program (eit bibliotek) med fleire spesialtilpassa kommandoar. Denne programkoden blir ikkje vist, men han ligg i bakgrunnen og gjer det enklare å programmere rørsla til motoren.

Dei fleste servomotorane blir styrte av biblioteket "Servo.h". I programdømet nedanfor roterer servoen fram og tilbake mellom 0 og 180 gradar. Dette skjer ved at variabelen pos. aukar med 1 kvar gong programmet blir køyrt.

Når servomotoren når 180 gradar, begynner programmet å trekke 1 frå variabelen kvar gong programmet blir køyrt. Når variabelverdien er nede i null igjen, startar prosessen på nytt.

Kodedøme

#include <Servo.h> // Hentar inn bibliotek for servomotorar

int pos= 0; // Set startposisjon til posisjon 0

Servo servo_9; // Vel pinne for styringssignal for servomotoren

void setup()

{

servo_9.attach(9, 500, 2500); //Set styring på pinne 9, og oppgir minimum og maksimum pulsbreidde i mikrosekund for høvesvis 0 og 180 gradar

}

void loop()

{

// Roterer servoen med ei oppløysing (indeksering) på 1 grad.

for (pos= 0; pos <= 180; pos += 1) {

// Gir servomotoren beskjed om å gå til posisjonen lagra i variabelen 'pos'

servo_9.write(pos);

delay(15); //Ventar i 15 millisekund slik at servomotoren kjem til rett posisjon

}

for (pos= 180; pos >= 0; pos -= 1) {

// Gir servomotoren beskjed om å gå til posisjonen lagra i variabelen 'pos'

servo_9.write(pos);

delay(15); //Ventar i 15 millisekund slik at servomotoren kjem til rett posisjon

}

}

Skrive av Roger Rosmo.
Sist oppdatert 25.02.2026