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.h und Digitalservos
12.03.2015, 18:54
Beitrag #9
RE: Servo.h und Digitalservos
(12.03.2015 18:50)fs82 schrieb:  Hallo bk,

sowas ähnliches hab ich auch schon versucht und damit kein brauchbares Resultat erzielt. Ich gebe allerdings zu, dass ich die Periodenlänge von 20ms nicht via if-Abfrage sondern mit einem zusätzlichen delay() gelöst hatte. Allerdings soll die Periodenlänge nicht so relevant sein (laut google), da wären die Servos relativ kulant. Wichtig ist die Länge des Impulses und da liegt meines Erachtens der Hase im Pfeffer. Das klappt mit dem delay(), was ja über den Timer0 gesteurt wird, nicht 100% reproduzierbar und deswegen zittern die Digitalservos. Ich vermute dem Analogservo ist das einfach egal, weil er die Feinheiten eh nicht auflösen kann. Aber das Digitalservo zittert dann halt.

Gruß
Fabian

also bei mir zitterte da nichts... hast du es auch mit "delayMicroseconds(); " programmiert gehabt ? Den Interval mach ich in dem Fall nach dem Beispiel Blinken ohne Delay.
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
12.03.2015, 18:59 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2015 19:05 von fs82.)
Beitrag #10
RE: Servo.h und Digitalservos
Hallo bk,

ich ziehe meine Aussage von eben zurück. Das funktioniert tatsächlich. Unglaublich, hätte ich wirklich nicht gedacht.
Code:
int currentMillisImp = 0;
int previousMillisImp = 0;

void setup() {
    pinMode(9,OUTPUT);
}
void loop() {
    currentMillisImp = millis();
    if (currentMillisImp - previousMillisImp > 18)
    {
        previousMillisImp = currentMillisImp;
        digitalWrite(9, 1);
        delayMicroseconds(1200);
        digitalWrite(9, 0);
     }
}

Edit: Ich muss das ein wenig einschränken, hab eben mal den zweiten Servo dazugenommen und verschiedene Positionen angefahren. Bei 9 von 10 ist kein Zittern zu spüren, aber es gibt ein paar vereinzelte wo er doch ganz leicht zittert.

Gruß
Fabian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.03.2015, 19:03
Beitrag #11
RE: Servo.h und Digitalservos
(12.03.2015 18:03)fs82 schrieb:  Leider ist die Dokumentation der Bibliothek nicht so richtig gelungen, wie ich finde. Ich versteh z.B. nicht wozu ich die Variable SERVO_FRAME_SPACE...
Soweit ich das verstehe behandelt das Teil einfach den "letzten" Servo-Kanal als Framespace. D.h. SERVO_FRAME_SPACE ist tatsächlich die Anzahl der Servos und man gibt in setFrameSpaceA einfach an, wie lange das Teil wartet, bis er mit dem ersten Servo wieder anfängt. Die Lib macht eigentlich nichts anderes, als einen Dummy-Servo-Kanal anzulegen und die angegebene Zeit fix vorzugeben.

Zitat: b) muss ich das eventuell für jeden Servo einzeln setzen.
Nein, das geht nicht. Es werden immer die einzelnen Kanäle abgearbeitet und dann der Framespace.

Zitat:Jedenfalls ohne den Aufruf der setFrameSpaceA-Funktion gehts gar nicht Dodgy
Ich kann mir vorstellen, dass es dann Deinen Servos zu schnell wird. Meine ESCs schaffen 500Hz, aber das kann nicht unbedingt jedes Servo.

Zitat:Aber egal, wichtig ist ja ob die Servos zittern oder nicht. Leider muss ich konstatieren...
Versuch mal sowas wie
Code:
setFrameSpaceA(SERVO_FRAME_SPACE,2000);
Das ergibt dann etwas zwischen 167 und 250 Hz. Das sollten Deine Servos können und müsste das Zittern reduzieren.
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
12.03.2015, 19:12
Beitrag #12
RE: Servo.h und Digitalservos
(12.03.2015 19:03)Thorsten Pferdekämper schrieb:  Versuch mal sowas wie
Code:
setFrameSpaceA(SERVO_FRAME_SPACE,2000);
Das ergibt dann etwas zwischen 167 und 250 Hz. Das sollten Deine Servos können und müsste das Zittern reduzieren.

Mmh tut mir leid, aber ich hab nach wie vor ein sporadisches, ganz leichtes Zittern, nur etwas schwächer in der Amplitude als bei der Servo.h.

Gruß
Fabian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.03.2015, 19:44
Beitrag #13
RE: Servo.h und Digitalservos
Tja, wenn man mal nach "digitalservo zittern" sucht, dann findet man einige mögliche Ursachen. Ich bin mir nicht sicher, ob das wirklich was mit der Arduino-Ansteuerung zu tun hat.

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
12.03.2015, 20:10 (Dieser Beitrag wurde zuletzt bearbeitet: 12.03.2015 20:11 von fs82.)
Beitrag #14
RE: Servo.h und Digitalservos
(12.03.2015 19:44)Thorsten Pferdekämper schrieb:  Tja, wenn man mal nach "digitalservo zittern" sucht, dann findet man einige mögliche Ursachen. Ich bin mir nicht sicher, ob das wirklich was mit der Arduino-Ansteuerung zu tun hat.
Klar, aber ich hab die gängigsten Varianten schon ausprobiert, wie gesagt an einer Graupner MX12 laufen die einwandfrei und Kondensatoren bis 470μF bringen auch nichts. Darüber hinaus liefert die Nutzung der pwm Routine der TimerOne Bibliothek ein einwandfreies Ergebnis, also bin ich mir zu 90% sicher das es an der Signalerzeugung liegt.

(12.03.2015 18:27)Bitklopfer schrieb:  du kannst den Servoimpuls auch zu Fuß programmieren ganz ohne Library.
Die Methode funktioniert überraschend gut, beißt sich aber leider mit den erforderlichen Implementierungen zur Nutzung meines Gyroskops (MPU6050, Bibliothek von Jeff Rowberg), sodass sie ebenfalls nicht in Frage kommt. Schade, wäre sehr schön einfach und effektiv gewesen.

Danke für die Unterstützung
Fabian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.03.2015, 20:27
Beitrag #15
RE: Servo.h und Digitalservos
Hi,
kann es sein, dass Dir da manchmal ein Interrupt vom MPU6050 dazwischenkommt, oder hast Du das ohne MPU6050 getestet?
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
12.03.2015, 20:41
Beitrag #16
RE: Servo.h und Digitalservos
Hi,
ich hab alle Varianten zunächst als Minimalbeispiel getestet, also ohne MPU6050. Die Variante mit dem selbst generierten Servoimpuls von Bitklopfer hab ich vorhin mal in meine Programm mit MPU6050 übernommen und da zittern die Servos extrem. Nachdem ich sukzessive den MPU6050 Code herausgelöscht habe und schlussendlich keiner mehr drin war, waren die Servos auch wieder ruhig. Würde also mit ziemlicher Sicherheit davon ausgehen, dass da irgendwo ein Interrupt vom MPU6050 dazwischenfunkt.

Gruß
Fabian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ATtiny und Servo Bibliothek malsehen 9 303 15.10.2016 18:09
Letzter Beitrag: malsehen
  Servo soll nur in Ruhelage stoppen Sven1996 1 235 19.08.2016 14:37
Letzter Beitrag: StephanBuerger
  Steuern von 4 Servo mittels eines Taster und eines Potis Jackie09 17 751 16.07.2016 11:43
Letzter Beitrag: Binatone
  Servo und PWM Ausgabe F2Ingo 4 490 17.06.2016 14:53
Letzter Beitrag: F2Ingo
  Hilfe bei Servo-steuerung Innocence 7 803 23.02.2016 11:00
Letzter Beitrag: hotsystems
  Servo.h lässt sich nicht einbinden ^^ EvilBen 5 694 08.02.2016 18:07
Letzter Beitrag: hotsystems
  Weichensteuerung mit Servo RCudino 21 3.014 05.01.2016 18:04
Letzter Beitrag: Markus0815
  Servo per Serieller Mointor ansteuern iggy 1 814 03.08.2015 03:08
Letzter Beitrag: yasi
  Fehler bei Servo-Bennenung?? Leberwurst 2 729 11.06.2015 05:33
Letzter Beitrag: Bitklopfer
  Geschwindigkeit modifizierter Servo zu hoch murdok1980 11 2.701 25.05.2015 10:41
Letzter Beitrag: murdok1980

Gehe zu:


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