ufechner Posted July 11, 2012 at 05:20 PM Share Posted July 11, 2012 at 05:20 PM 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 Quote Link to comment Share on other sites More sharing options...
borg Posted July 11, 2012 at 05:37 PM Share Posted July 11, 2012 at 05:37 PM 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 . Quote Link to comment Share on other sites More sharing options...
ufechner Posted July 11, 2012 at 05:45 PM Author Share Posted July 11, 2012 at 05:45 PM 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 Quote Link to comment Share on other sites More sharing options...
borg Posted July 11, 2012 at 06:33 PM Share Posted July 11, 2012 at 06:33 PM 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. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.