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
  Servo Ansteuerung SOFTHARD 1 118 19.09.2017 12:50
Letzter Beitrag: MicroBahner
  NeoPixels: Sketch will nicht - Problem mit delay? Zabsi 5 271 22.08.2017 15:17
Letzter Beitrag: Tommy56
  BME280 - Luftdruckoffset nicht einstellbar ? Stargazer 17 872 13.08.2017 15:38
Letzter Beitrag: hotsystems
  Servo mit einem Taster und 433mhz steuern Thor Wallhall 63 2.632 29.07.2017 11:02
Letzter Beitrag: Thor Wallhall
  Arduino I2C Servo MarcelTitan 8 701 14.07.2017 10:09
Letzter Beitrag: Tommy56
  Ich komme mit millis nicht weiter !!! Gonmaus 8 637 09.07.2017 21:24
Letzter Beitrag: Tommy56
  WEMOS Motorshield funzt nicht Rumpl-X 8 458 07.06.2017 21:10
Letzter Beitrag: Tommy56
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 742 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  433mHz Funkmodule senden/empfangen nicht metzgefa 2 651 06.05.2017 13:30
Letzter Beitrag: metzgefa
  SD Karte wird nicht erkannt Maxi290997 6 384 31.03.2017 06:05
Letzter Beitrag: Bitklopfer

Gehe zu:


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