Prog Shield Servo
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:
Servo-stikkenes placering på Programmerings-Shieldet, med angivelse af ben 10 og 11
Servostikkenes SKAL vendes som det ses her:
Servo-stikkenes orientering, så de forsynes rigtigt
Referencer
- ↑ Servo beskrivelse fra Arduinos hjemmeside