Servo Beispiel

Dependencies:   Servo mbed

https://developer.mbed.org/media/cache/components/components/200x200xservoproduct.jpg.200x200_q85.jpg.pagespeed.ic.J23xm2NZAi.webp

Der Servo (auch Rudermaschine) hat die Aufgabe, entsprechend dem Signal, dass er vom Empfänger erhält, die Ruder (oder andere Komponenten am Modell) zu stellen.

Servo lassen sich, in der Regel, von 0 - 180° bewegen. Der entsprechende Stellwinkel wird mittels eines Wert von 0.0 bis 1.0 angegeben.

Es gibt analoge und digitale Servo's. Der Unterschied liegt darin, dass digitale Servo erst anfangen den Stellwinkel zu wechseln, wenn ein sauberes Signal anliegt.

Servo haben einen Stellmoment bzw. die Stellkraft, z.B. 9 Gramm, welche nicht überschritten werden sollte.

Servo benötigt die Servo Library. Diese Steuert einen Servo mittels PWM Signal an.

Anwendungen

  • Steuerung von Roboterarmen
  • Modellflugzeuge
  • Schalten von Weichen auf der Modelleisenbahn

Anschlussbelegung (Servo - Shield)

Der Servo wird mit 5V betrieben und kann direkt auf einen der Servo Header (D9 oder D10) gesteckt werden. Das orange Kabel zeigt nach links

Committer:
stefan1691
Date:
Wed May 20 12:12:00 2015 +0000
Revision:
2:fbe80f505ced
Parent:
1:32f0eb92121b
Servo kalibrieren, damit er die vollen 180? verwendet.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 1:32f0eb92121b 1 /** Servo am Digital Pin D9.
stefan1691 1:32f0eb92121b 2 Das orange Kabel (Signal) ist links.
marcel1691 0:e6f25efb6af9 3 */
marcel1691 0:e6f25efb6af9 4 #include "mbed.h"
marcel1691 0:e6f25efb6af9 5 #include "Servo.h"
marcel1691 0:e6f25efb6af9 6
stefan1691 1:32f0eb92121b 7 Servo servo( D9 );
marcel1691 0:e6f25efb6af9 8
marcel1691 0:e6f25efb6af9 9 int main()
marcel1691 0:e6f25efb6af9 10 {
stefan1691 2:fbe80f505ced 11 // Servo kalibrieren, damit er die vollen 180° verwendet.
stefan1691 2:fbe80f505ced 12 servo.calibrate ( 0.0009, 180.0);
stefan1691 2:fbe80f505ced 13
marcel1691 0:e6f25efb6af9 14 while ( 1 )
marcel1691 0:e6f25efb6af9 15 {
marcel1691 0:e6f25efb6af9 16 // Servo langsam bewegen (immer in der Mitte Anfangen mit Tests, sonst besteht die Gefahr von Schäden)
stefan1691 2:fbe80f505ced 17 for ( float p = 0.2f; p <= 0.8f; p += 0.0001f )
marcel1691 0:e6f25efb6af9 18 {
marcel1691 0:e6f25efb6af9 19 servo = p;
marcel1691 0:e6f25efb6af9 20 wait(0.001);
marcel1691 0:e6f25efb6af9 21 }
marcel1691 0:e6f25efb6af9 22 wait( 1.0 );
marcel1691 0:e6f25efb6af9 23 // und die andere Seite
stefan1691 2:fbe80f505ced 24 for ( float p = 0.8f; p >= 0.2f; p -= 0.0001f )
marcel1691 0:e6f25efb6af9 25 {
marcel1691 0:e6f25efb6af9 26 servo = p;
marcel1691 0:e6f25efb6af9 27 wait(0.001);
marcel1691 0:e6f25efb6af9 28 }
marcel1691 0:e6f25efb6af9 29 wait( 1.0 );
marcel1691 0:e6f25efb6af9 30 }
marcel1691 0:e6f25efb6af9 31 }
marcel1691 0:e6f25efb6af9 32