It seems you have forgotten #include <Servo.h> at first line.
This is the German part of the forum, so language should be German.
Good luck
Ehm ja... da alle Websiten/Tutorials auf englisch sind, hat mein Gehirn wohl nicht zurück auf Deutsch geschaltet.
#include <Servo.h>
Da muss ich anscheinend wohl doch nochmal ins Windows Bootcampt STRG + C und STRG + V üben
Der fehler lag nicht an dem einbinden, das wäre auch peinlich.
Erste Annahme: Der Fehler besteht weiter? (Du schreibst, es 'lag' nicht an der fehlenden Servo.h)
Ganz weit ausgeholt:
Dein Servo kann die Position '1' nicht erreichen und fährt voll auf Bock/auf das mechanische Ende
Würde ich dann aber trotzdem nicht als "won't stop spinning" umschrieben.
Wenn ich ihn auf einen Wert zwischen ca. 10 und 170 setze, dreht er sich auf die entsprechende Gradzahl
90 = ausgangsposition,
0 = quer mit der Spitzle nach links und
180 = quer mit der Spitzle nach rechts.
Aber ich komme nicht an die Werte 0 bzw 180 ran da der Servo ab 10/170 nicht mehr aufhört sich zu drehen.
Lorus:
Wenn ich ihn auf einen Wert zwischen ca. 10 und 170 setze, dreht er sich auf die entsprechende Gradzahl
90 = ausgangsposition,
0 = quer mit der Spitzle nach links und
180 = quer mit der Spitzle nach rechts.
Aber ich komme nicht an die Werte 0 bzw 180 ran da der Servo ab 10/170 nicht mehr aufhört sich zu drehen.
-Lorus
Bei dem Modell gar nicht. Dieser Servo kann sich nicht weiter Drehen als zwischen 10 und 170.
Grüße Uwe
Lorus:
Das schon, aber ich kann die Gradzahl nicht wie davor genau festsetzen sondern der Servo dreht sich fröhlich weiter.
-Lorus
Das mit der Gradzahl solltest Du eh nicht so ernst nehmen. Die servo-lib setzt die Werte 0-180 für die Ansteuerung des Servos in Pulsbreiten von 544µs - 2400µs um. Was dein Servo dann daraus macht ist eine ganz andere Sache. 'Offiziell' geht der Bereich bei Servos eh nur von 1-2ms. Sehr viele Servos machen aber auch mehr mit. Aber der Bereich den die servo-Lib da standardmässig nutzt ist für die meisten dann doch zuviel.
Ein analoges Servo fährt dann hart an den Anschlag und versucht weiter zu drehen. Das ist aber nicht sehr gesund für das Servo. Digitale Servos ignorieren Pulsbreiten ausserhalb ihres Bewegungsbereiches einfach.
Die Grenzwerte für die Pulsbreiten kann man bei der servo-lib übrigens einschränken ( bei attach als zusätzliche Parameter ) Damit kannst Du erreichen, dass der Bereich von 0-180 dann auch komplett für dein Servo passt ( aber 0-180 Grad sind das dann immer noch nicht - es gibt nur wenige Servos die das wirklich können )
Gibt es sonst noch eine einfache Möglichkeit den Servo 90° zu drehen?
-Lorus
z.B.myServo.attach( 9, 800, 2200 );beschränkt den Bereich auf 0,8-2,2ms
Wieweit dein Servo drehen kann bestimmt die Mechanik, da kann die Ansteuerung nichts dran ändern. Wie gesagt, +/- 90Grad können die meisten nicht.
Edit: Du kannst beim myServo.write() auch direkt die Pulsbreite in µs angeben anstatt den 'Pseudo-Grad'. So kannst Du z.B. feststellen, was dein Servo noch ordentlich mitmacht.
ms = Millisekunden, oder tausendstel Sekunden
Eine Sekunde hat 1000 ms
µs = Mikro-Sekunden, oder millionstel Sekunde
Eine ms hat 1000 µs, eine Sekunde hat 1000000 µs
0,8ms = 800µs
2,2ms = 2200µs
Ein normales Servo hat den Einstellbereich 1ms ... 2ms, also eine Mindestlänge des Impuls von 1000µs und eine maximale Länge von 2000µs.
Ob und wie viel Dein Servo mehr kann, oder ob die Grenzen Deines Servo sogar noch innerhalb der normalen Werte liegen, kannst nur Du ausmessen.
Eine Schleife, lasse von 1500 (µs = Mittelstellung) runterzählen, bis Du auf Block gefahren bist (immer Anzeige des Wert im Terminal), nach Tastendruck Sprung auf 1500 und in die andere Richtung, bis Du wieder eine Taste betätigst.
Die so gefundenen End-Werte kannst Du dann in Dein Programm einarbeiten.
Was dabei wie viele Grad entspricht ... wird sich so nicht direkt umrechnen lassen - auch hier wirst Du um eine Messung, blöd gesprochen: Geodreieck, nicht herum kommen.
MicroBahner:
... +/- 90Grad können die meisten nicht.
Was einen wie mich wundert, weil ich dachte, dass (Modellbau-) Servos, die nicht gerade billig sind, wenigstens das können, was man als Hobby-Ingenieur erwarten darf.
Was soll's. Früher hieß es wohl mal „Hauptsache, das hält ewig“, heute ist es wohl eher „Hauptsache, es passt nicht“ (gerne aus Fernost). Da können die noch so lange in D studiert und hunderte von Doktortiteln gekauft und Baupläne kopiert haben.
Oder ist es technisch unmöglich etwas zu bauen, das sich über einen Bereich von 180° bewegt, wenn man eine passende Rechteckspannung anlegt?! In diesem Fall bitte ich um Entschuldigung. Vielleicht sind 180° ja auch zu viel verlangt.
Jetzt suche ich mir keines der Servos mehr raus - aber über 180° sollten Die können, da der 'Sperr-Knubbel' mechanisch an ein und dem selben Gehäuse-Teil anstößt.
Ok, man könnte den 'Knubbel' auch so groß machen, daß keine 10° mehr gehen ...
gregorss:
Was einen wie mich wundert, weil ich dachte, dass (Modellbau-) Servos, die nicht gerade billig sind, wenigstens das können, was man als Hobby-Ingenieur erwarten darf.
Hallo Gregor,
wieso meinst Du, dass man das erwarten darf? Weil die Entwickler der Servo-Lib diesen Bereich von 0..180 eingeführt haben? Servos wurden nicht für den Arduino entwickelt.
Modellbauservos sind für die Ansteuerung von Rudern, Lenkungen, Drosselklappen oder ähnlichem entwickelt worden. Die werden über eine in den Servoarm eingehängte Stellstange betätigt. Durch den Hebelarm wird die Drehbewegung des Servo in Zug und Druckkräfte an der Stellstange umgesetzt. Dabei sind Drehbewegungen von +/- 90° um die Mittelstellung kontraproduktiv, denn in den Endbereichen würde die Stellstange nur seitlich bewegt, ohne dass nennenswert Zug- oder Druckkräfte umgewandelt werden können. Befinden sich noch weitere Umlenkhebel im Stellweg, so könnten die sogar verkanten.
Deshalb sind die Standard-Servos für einen Drehbereich von +/-60Grad spezifiziert, denn in dem Bereich funktioniert die Umsetzung Drehbewegung->Linearbewegung noch effektiv.
Natürlich ist der tatsächliche Bewegungsbereich etwas größer, denn man braucht ja noch etwas 'Luft' und ein Servo sollte auch nicht gegen seine Anschläge laufen, das tut der Mechanik nicht gut. +/-90Grad macht aber für einen Standard-Servo keinen Sinn, und die kann man deshalb auch nicht erwarten ( auch wenn es welche gibt, die da rankommen ).
Klar gibt es auch Spezialservos für alle möglichen Sonderfälle, die haben dann gegebenenfalls einen größeren Stellbereich, oder sogar gar keine Anschläge ( z.B. Ankerwindenservos ).
gelabelt von 'MR.RC'
sollte Denen entsprechen:
eBay: 182477701782 /eBay-Link
Mein Servo hat über 180° Stellbereich, nicht gemessen, nur durch händisches Verdrehen 'ermittelt'.
Dann habe ich noch Servos in Blau, Die bei eBay sowohl mit SG90 wie mit 9G bezeichnet sind.
Hier sind keine Daten auf dem Servo, bei eBay steht Da etwas mehr:
Material: Plastic
Operating Speed (4.8V no load): 0.12sec / 60 degrees
Operating Speed (6.0V no load): 0.10sec / 60 degrees
Torque (4.8V): 1.6 kg/cm
Temperature Range: - 30 to + 60℃
Dead Band Width: 5us
Operation Voltage: 4.8 - 6.0 Volts
Dimension: approx. 2.3cm×1.22cm×2.9cm/0.91×0.48×1.14in
Cable length: approx. 25cm/9.84in
Weight: approx. 12g (include accessories)
Mein Servo davon hat ebenfalls mehr als 180° Verstellbereich, wenngleich hier der Bereich kleiner aussieht, aber definitiv über 180°.
Und in welchen Bereichen kannst du diese Servos mit dem Arduino verstellen? Weil ausser der mechanischen Begrenzung, die durchaus auch bei 270° liegen kann, gibt es vielleicht auch noch eine elektronische, wie bereits weiter oben schon erwähnt
Hallo,
das mit dem mechanischen Verdrehen ist eigentlich keine gute Idee, wenn überhaupt sollte man sehr behutsam vorgehen - das Kunststoffgetriebe eines billg-Servos ist da schnell hinüber.
Der mechanische Stellbereich sagt aber noch nicht wirklich was über den elektrisch nutzbaren Bereich.
Ich habe das jetzt auch mal 'gaaanz vorsichtig ' bei 3 verschiedenen Servos ermittelt. Elektrisch mit der Servo-Demo aus der IDE, die den Servo einfach zwischen 0 und 180 hin- und herfährt.
billig-Servo, analog (Y-3009)
mechanischer Stellbereich etwas über 180Grad
elektrisch: ca 170Grad
2)einfacher digital-Servo ( blueBird BMS-371DD ):
mechanisch: ca 160 Grad,
elektrisch ca 150Grad
2)ein etwas besserer DigitalServo ( EMAX ES09MD) , schon mit Metallgetriebe und Kugellager:
mechanisch: KEIN Anschlag ( lässt sich komplett durchdrehen )
elektrisch: etwas mehr als 120Grad ( ziemlich genau die oben erwähnten +/- 60 Grad )
Bei den beiden Digital-Servos werden die extremen Pulsbreiten ( kurz und lang) die die Servo-Lib erzeugt, bereits ignoriert, da bleibt das Servo einfach an seiner eigenen elektrischen Endstellung stehen.