INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Servo Positionierung klappt nicht
30.03.2015, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2015 10:06 von Bitklopfer.)
Beitrag #9
RE: Servo Positionierung klappt nicht
(30.03.2015 09:43)Hallmackenreuther schrieb:  Das ist der komplette Code, den ich derzeit verwende:

Code:
#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(9);  // attaches the servo on pin 9 to the servo object
}


void loop()
{
    myservo.write(30);              // tell servo to go to position in variable 'pos'

    delay(2000);

    myservo.write(0);    

    delay(2000);    // tell servo to go to position in variable 'pos'

  
}

Der Servo sollte doch jetzt auf 30 Grad fahren und dann wieder zurück ? Macht er aber nicht.
Wenn ich einen Wert ab 90 eingebe, dann fährt er immer 180 Grad ...

Hi,
..öhm...also ich weis nun nicht genau was die Servo Lib so alles macht.
ABER Servoimpulse müßen alle 20 Millisekunden generiert werden. Du hast da delays mit 2000 Millisekunden zwischen den Servobefehlen....also wenn du mich frägst liegt da der Hase im Pfeffer....
Und hier nun die übliche Leier... delays raus und die Pausen mit "Blinken ohne delay" - gibts in der IDE als Beispielsketch - ersetzen. Dann sollte das gehen.
lg
bk

(30.03.2015 10:00)Eichner schrieb:  Hallo,
hast du die Masse des Servo mit der Masse des Arduino verbunden?

Gruß Sven

...und nicht vergessen das Servo ggf. mit einer separaten +5V Quelle verbinden weil bei den Servo Anlaufströmen könnten zu große Störungen auf der 5V Leitung den Prozessor aus dem Takt bringen...sprich reseten...
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 10:06
Beitrag #10
RE: Servo Positionierung klappt nicht
Deklariere den Pin 9 noch vor dem Attach als OUTPUT, vielleicht hilft das weiter.
Gruß Sven

Nichts auf der Welt ist unnütz, es kann im schlimmsten Fall immer noch als schlechtes Beispiel dienen.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 10:43
Beitrag #11
RE: Servo Positionierung klappt nicht
Das mit den 20ms macht die Library von sich aus. Es wird laut Doku die Position angefahren, die man als Wert übergibt.

In dem Fall also 30 Grad und 0 Grad.

Externe Stromversorgung ist vorhanden, Masse der Quelle und Arduino ist verbunden, die Spannungsquelle ist stabil.

Zitat Doku:

Zitat:Writes a value to the servo, controlling the shaft accordingly. On a standard servo, this will set the angle of the shaft (in degrees), moving the shaft to that orientation. On a continuous rotation servo, this will set the speed of the servo (with 0 being full-speed in one direction, 180 being full speed in the other, and a value near 90 being no movement).

es ist kein 360 Grad Servo.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 11:33
Beitrag #12
RE: Servo Positionierung klappt nicht
(30.03.2015 10:43)Hallmackenreuther schrieb:  Das mit den 20ms macht die Library von sich aus. Es wird laut Doku die Position angefahren, die man als Wert übergibt.
....

..also mit den 20mS wo die Lib machen soll bin ich mir nicht sicher...weil schau mal diesen Beispielcode an wo ich auch arduino.cc gefunden habe:
Code:
// Controlling a servo position using a potentiometer (variable resistor)
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

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

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

...letzte Zeile ist dann ganz klar das delay für die 20mS, also +/- ein bischen Toleranz ist da zulässig.
Teste doch einfach mal diesen Sketch oder eben diesen:
Code:
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.


#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

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

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 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>=1; 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
  }
}
..dann sollte sich so langsam Ergebnise einstellen..
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 12:06
Beitrag #13
RE: Servo Positionierung klappt nicht
Ja, danke, das war ja meine Vorlage Big Grin

In dem Sketch ist nichts anders, nur, dass der Servo grundsätzlich 180 Grad bewegt wird und zwischen den einzelnen Graden ein Delay eingebaut ist, damit er langsamer dreht.

In der letzten Zeile steht ja obendrein im Kommentar noch dazu, dass er nur darauf wartet, dass der Servo in die Position fährt, das hat mit der Pulsweite meiner Meinung nach garnichts zu tun Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 13:48 (Dieser Beitrag wurde zuletzt bearbeitet: 30.03.2015 13:53 von Thorsten Pferdekämper.)
Beitrag #14
RE: Servo Positionierung klappt nicht
Hi,
die Servo-Lib macht das mit den 20ms tatsächlich alleine. Das geht über Timer-Interrupts und funktioniert auch, wenn man delay(10000) oder sowas hinschreibt. Probleme gibt's in der Regel nur, wenn man versucht, den oder die Timer für was anderes zu verwenden. Das ist aber hier nicht der Fall.
Ich kenne jetzt nicht alle Servos, aber möglicherweise sind das Servos, die nicht die üblichen 1000-2000us-Impulse brauchen. Hast Du eine dazu passende Fernsteuerung mit Empfänger, mit dem die Servos funktionieren? Dann könnte man da mal ausmessen, was der Empfänger tatsächlich so an die Servos meldet.
Wenn nicht, dann experimentiere mal mit Servo.writeMicroseconds. Fang' mal mit 1500 an und taste Dich hoch bzw. runter.
Gruß,
Thorsten

EDIT: Natürlich 1000-2000 und nicht 1500-2500us...

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 15:06
Beitrag #15
RE: Servo Positionierung klappt nicht
Danke, das ist mal ein Ansatz, hast du vielleicht eine Empfehlung für mich, welche Servos ohne Probleme mit der Arduino funktionieren ? Darf auch gerne etwas mehr kosten, hauptsache, funktioniert.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.03.2015, 15:15
Beitrag #16
RE: Servo Positionierung klappt nicht
Hi,
ich weiß, dass meine Spektrum-Anlage zur Servo-Lib kompatibel ist, aber ich habe bisher nur ESCs und ein kleines Billig-Servo aus einem Starter-Kit angesteuert. Das hat alles geklappt, nützt Dir aber wahrscheinlich wenig.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Star ATtiny Servo SOS SOS hansanne1310 16 277 Gestern 15:46
Letzter Beitrag: hansanne1310
  Servo über Temperatur steuern querkopf71 3 84 07.12.2016 19:21
Letzter Beitrag: hotsystems
  Arduino lässt sich nicht installieren bergfrei 4 155 20.11.2016 18:34
Letzter Beitrag: bergfrei
  Arduino Mega 2560 läuft nicht Wolfgang50 6 191 13.11.2016 10:50
Letzter Beitrag: Wolfgang50
  Ardublock übertragt nicht an IDE oder UNO R3 tobi83 5 363 16.10.2016 14:07
Letzter Beitrag: Pit
  ATtiny und Servo Bibliothek malsehen 9 317 15.10.2016 18:09
Letzter Beitrag: malsehen
  Upload funktioniert nicht Levi 5 250 22.09.2016 20:19
Letzter Beitrag: hotsystems
  ESP8266 tuts nicht sowerum 7 397 19.09.2016 21:01
Letzter Beitrag: sowerum
  If-Bedingung funktioniert nicht bei Serial1.write Datatom 6 227 16.09.2016 20:36
Letzter Beitrag: Datatom
  Servo soll nur in Ruhelage stoppen Sven1996 1 243 19.08.2016 14:37
Letzter Beitrag: StephanBuerger

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste