Prog Shield Servo

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
Eksempel på en lilleservo der kan fungere på Prog-shieldet

En Servo Motor er en motor, hvor det sidder en gearet DC-motor, der kan køre en aksel til en bestemt position inden for et bestemt vinkel-interval (0-60 grader, 0-180 grader eller 0-360 grader), når servoren er kommet til den position der er angivet bliver den stående der. Styringen er nærmere beskrevet under Servo, men sorftwaren der er lavet til PIC microcontroller.

Software

Der er lavet et lille eksempel med to servoer ud fra Arduinos standard bibliotek[1], der ligger i denne ZIP-fil. Biblioteket skulle gerne ligge i en standard installation til Arduino, ellers kan det downloades og installeres som beskrevet under Arduinos biblioteker.

Anvendelsen af softwaren

Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere to objekter, et til hver sin servo.

#include <Servo.h>

Servo myservo1;  // create servo object to control a servo
Servo myservo2;  // create servo object to control a servo

Inde i setup() skal der sættes gang i objektet ved hjælp af attach-metoden, der tilknytter dem til ben 10 og 11 som vist her:

void setup() {
  myservo1.attach(10);  // attaches the servo on pin 10 to the servo object
  myservo2.attach(11);  // attaches the servo on pin 11 to the servo object
}

I loop() læses først en værdi fra potentiometeret. Denne skaleres om til 0-180 grader, hvorefter de to servoer positioneres ud fra det, med den lille krølle, at de køres modsat hinanden.

void loop() {
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo1.write(val);                 // sets the servo position according to the scaled value
  myservo2.write(180 - val);           // sets the servo position opposit
  delay(15);                           // waits for the servo to get there
}

Yderligere muligheder i softwaren

Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende servomotorerne på:

attach()
write()
writeMicroseconds()
read()
attached()
detach()

Hardware

Princippet i styringen af servoen er ikke så kompliceret, men man kan sagtens risikere at man ikke kan får det til at fungere, fordi motoren trækker for meget strøm - Arduinoen kan kun levere ca. 350 mA, og selv en lille servo kan sagtens trække 500 mA, så her vil man være nødt til at lave noget eksternt strømforsyning til opstillingen.

Layout

Servostikkenes placering på programmerings-shieldet kan ses her:
Layout-servo1.png
Servo-stikkenes placering på Programmerings-Shieldet, med angivelse af ben 10 og 11

Servostikkenes SKAL vendes som det ses her:
Layout-servo2.png
Servo-stikkenes orientering, så de forsynes rigtigt

Referencer

  1. Servo beskrivelse fra Arduinos hjemmeside