Jump to content

Verzögerungszeit Servo Brick


ufechner
 Share

Recommended Posts

Hallo,

wir arbeiten an einer Flugdrachen-Steuerung (siehe www.kitepower.eu) und benötigen dafür drei Servo Ausgänge. Als Steuer- Computer verwenden wir einen Electrum 100 (400 Mhz ARM Linux) Rechner, auf dem ein QT/C++ basierter Autopilot ausgeführt wird. Leider haben wir keine drei PWM Ausgänge mehr zur Verfügung und überlegen, ob wir einen Servo-Brick via USB anschließen könnten.

 

Wichtigste Anforderung:

Die Verzögerungszeit zwischen dem Absetzen eines Steuerbefehls vom C++ Programm im Steuercomputer und dem Ende des PWM Pulses (mit der neuen Pulslänge) darf nicht größer als 10 ms sein. Andernfalls kann die "control loop" instabil werden.

Wie groß ist diese Verzögerung (worst case) bei der momentanen Implementierung?

 

Mit besten Grüßen:

 

Uwe Fechner

PhD researcher Kite Control

TU Delft, Niederlande

Link to comment
Share on other sites

Wir sind da natürlich Abhängig vom Scheduling auf dem Linux Board. An und für sich sieht der USB Standard vor, dass einmal pro ms der Brick gepollt wird. Dadurch wäre eine maximale Verzögerungszeit von 1ms + 1µs (Bearbeitszeit auf dem Servo Brick) gegeben.

 

Was der Linux Kernel jetzt aber macht wenn nicht genug Rechenpower da ist das ganze durchzuführen, kann ich nicht sagen :).

Link to comment
Share on other sites

Das klingt ja erstmal vielversprechend. Unser Linux-Kernel hat eine maximale Latency of 200 µs, und wir achten darauf, das die Systemlast unter 50% liegt, so das die Verzögerung durch das Hauptprogramm gering bleiben sollte.

 

Frage:

Arbeitet die PWM Puls- Erzeugung synchron oder asynchron?

Bei 50 Hz Pulsfrequenz und einem freilaufenden Puls-Generator würde sich schon allein aufgrund der Betriebsart eine worst-case Verzögerung von 20 ms ergeben (genau dann wenn gerade ein Impuls gesendet wurde und in dem Moment ein neuer Steuerbefehl eintrifft).

 

Wir benötigen eine Implementierung bei der spätestens 7 ms nach dem Eintreffen eines neuen Steuerbefehls ein neuer Impuls abgegeben wird, ggf. unter Beachtung einer Mindestzeit zwischen zwei Impulsen.

 

Wir haben eine mittlere update Frequenz der Steuerbefehle von 40 Hz und können eine Zeitspanne von 20 bis 30 ms zwischen zwei Steuerbefehlen garantieren.

 

Mfg:

 

Uwe

Link to comment
Share on other sites

Ah. Das ist schlecht. Eine neue Pulsweite wird erst nach ablaufen einer Periode gesetzt. Alles andere wäre für einen Servo auch nicht das richtige verhalten.

 

Welche Auflösung braucht denn das PWM? 50Hz ließe sich ja auch mit einem IO4 Bricklet erreichen.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...