38

Servomotor

[Seeed Studio Grove – Servo]

Ein Servomotor verfügt über eine interne Regelung, sodass von außen nur eine Position angeben werden muss, die er selbstständig anfährt und hält (trotz Krafteinwirkung). Er kann dadurch sehr genaue Positionen anfahren, ist aber nicht für endloses Drehen ausgelegt. Der Motor wird direkt oder mit Hilfe des Grove Shields an einen Arduino angeschlossen und über Pulsweitenmodulation (PWM) angesteuert.

Der hier abgebildete Servomotor kann in einem begrenzten Winkelbereich rotieren und somit unter anderem Zeiger oder Hebel bewegen. So kann beispielsweise die Lenkung eines ferngesteuerten Autos mithilfe von Servomotoren bewegt werden.

Alle weiteren Hintergrundinformationen, sowie ein Beispielaufbau und alle notwendigen Programmbibliotheken sind auf dem offiziellen Wiki (bisher nur in englischer Sprache) von Seeed Studio zusammengefasst. Zusätzlich findet man über alle gängigen Suchmaschinen durch die Eingabe der genauen Komponentenbezeichnungen entsprechende Projektbeispiele und Tutorials.

Wichtige Hinweise:

Je nach Motoraufbau kann der maximale Aktionsradius des Motors variieren. In vielen Fällen erreicht der Motor nicht die angegebene Gesamtrotation von 180°. Ist dies der Fall, kann es zu unerwartetem Verhalten (Zucken, Rattern, Spannungsabfall, Wärmeentwicklung…) führen, wenn der Motor in die Extrempositionen gedreht wird. Aus diesem Grund wird empfohlen, den Motor nur in einem Bereich von ca. 10° bis 170° zu bewegen.

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 https://arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(5);  // attaches the servo on pin 5 to the servo object
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

 

 

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

 

Wichtige Links für die ersten Schritte:

Projektbeispiele:

Weiterführende Hintergrundinformationen:

ZU ALLEN MATERIALIEN