mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Integrator läuft voll - warum?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Zyrano D. (kickflip)


Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe einen Beschleunigungssensor auf Piezobasis, den ich in meiner 
Regelstruktur integriere, um auf die Geschwindigkeit zu kommen. Jetzt 
habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie 
"volllaufen"?

Was genau läuft da voll? Was ist mit dem "volllaufen" gemeint?

Ich denke, dass das irgendwie an der oberen Integrationsgrenze liegt, 
die ja nicht vorhanden ist und der Wert dann irgendwann gegen unendlich 
läuft, oder?

Viele Grüße

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Zyrano D. schrieb:
> ...die ja nicht vorhanden ist und der Wert dann irgendwann gegen unendlich
> läuft, oder?


Zumindest wenn die Eingangswerte nicht gleichanteilfrei sind. Genau.

Um genau zu sein läuft der Integrator dann bei einer praktischen 
Implementierung nicht gegen unendlich, sondern läuft entweder über 
(Integer) oder verliert komplett seine Reaktionsfähigkeit, wenn der 
Exponnent so groß ist, dass jeder Summand nur noch weggerundet wird 
(float).

: Bearbeitet durch User
von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Der Input eines Integrators ist in den seltensten Fällen exakt gleich 
Null.

Dann kommt noch hinzu, dass außer im µP, der Integrator selbst nicht 
ideal ist.

Somit ist es, ohne Korrekturmaßnahmen "normal", dass ein Integrator in 
Richtung einer der Extreme läuft.
Oder anders ausgedrückt: Fast nichts, über einen längeren Zeitraum, 
ergibt etwas.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Kommt halt auf das an, was du integrierst. Bei normalen Regelungen muss 
da im Betrieb nix resettet werden. Das regelt sich aus ;-)

Aber wenn du ganz stumpf einen Einheitssprung auf einen Integrator gibst 
und dann einfach wartest, dann laeuft der halt los... und stoesst in der 
realen Welt irgendwann an seine Grenzen und integriert nicht mehr so, 
wie er sollte.
Nur sollte sowas in einer geschlossenen Regelschleife nicht passieren.

Gruss
WK

von Burkhard (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Zyrano D. schrieb:

> Jetzt
> habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie
> "volllaufen"?

Überall kann nicht sein :-)

In der Literatur gibt es den Begriff des "leaky integrators", s.a. 
https://en.wikipedia.org/wiki/Leaky_integrator . Hier wird ein drohender 
Überlauf dadurch verhindert, dass bei jedem Zeitschritt ein fester 
Anteil abgezogen wird bzw. in einer analogen Schaltung ein hoher 
Widerstand parallel zum Kondensator im Rückkopplungspfad geschaltet 
wird.

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Übrigens:
Ich würde einen Integrator nur in Sonderfällen "resetten".
Das würde ja Null bedeuten.
Ich würde den Maximalwert begrenzen.
Bei +max oder -max bleiben nämlich zwei Sachen erhalten:
1. Das Vorzeichen der Richtung
2. Im Gegensatz zu Null, die Info: "Viel".

von A. Z. (donvido)


Bewertung
0 lesenswert
nicht lesenswert
Zyrano D. schrieb:
> Hi,
>
> ich habe einen Beschleunigungssensor auf Piezobasis, den ich in meiner
> Regelstruktur integriere, um auf die Geschwindigkeit zu kommen. Jetzt
> habe ich überall gelesen, dass ich Integratoren resetten müsste, da sie
> "volllaufen"?

Du kannst durch Integration die Geschwindigkeit bestimmen. Du musst aber 
einen Abgleich mit bekannten oder sicher erkennbaren Zuständen machen, 
eben weil du den Gleichanteil im Beschleunigungssignal nie perfekt 
rausfiltern kannst.
Das heißt im Stillstand muss der Integrator auf 0 resettet werden, 
sofern du Stillstand sicher identifizieren kannst. Sonst sagt dir dein 
Messsignal dass du dich rückwärts bewegst, obwohl du an der 
Bushaltestelle sitzt.

Man gleicht auch gerne Gyroskope mit Beschleunigungssensoren (Vektor der 
Erdbeschleunigung) und Magnetometern ab, da der Lagewinkel durch die 
Integratordrift irgendwann wegläuft. Das nennst sich dann u.a. 
Sensorfusion.

edit: Du könntest zum Beispiel deinen Beschelunigungssensor mit einem 
einfachen Fahrradtacho "fusionieren". Dann hast du das beste aus beiden 
Bereichen. Mit dem Tacho die exakte Geschwindigkeit und mit dem 
Beschleunigungssensor Messwerte zwischen der Abtastung des Tachos.

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Sebastian S. schrieb:
> Übrigens:
> Ich würde einen Integrator nur in Sonderfällen "resetten".
> Das würde ja Null bedeuten.
> Ich würde den Maximalwert begrenzen.
> Bei +max oder -max bleiben nämlich zwei Sachen erhalten:
> 1. Das Vorzeichen der Richtung
> 2. Im Gegensatz zu Null, die Info: "Viel".

Genau so.

von Zyrano D. (kickflip)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die vielen Kommentare. Ich glaube die sind sehr hilfreich, 
aber mag einer vielleicht nochmal eine Ebene tiefer anfangen?

Also ich verstehe, wie ein Beschleunigungssensor auf Piezobasis 
funktioniert und ich weiß, dass ich in meiner zyklischen zeitdiskreten 
Regelstruktur über Integration auf die Geschwindigkeit komme. Ich nulle 
den Sensor immer am Anfang jedes Zyklus.

Was genau da vollläuft habe ich leider nicht genau verstanden. :D

von A. Z. (donvido)


Bewertung
0 lesenswert
nicht lesenswert
Nimm das Beschleunigungssignal, integriere es und lass den Sensor mal ne 
Weile liegen. Irgendwann zeigt dein Aufbau eine Geschwindigkeit ungleich 
0 mit Tendenz in eine Richtung. -> Dein Integrator läuft voll.

Versuch doch jetzt noch zusätzlich aus der Geschwindigkeit die Position 
zu bestimmen. ;)

von Andreas B. (bitverdreher)


Bewertung
0 lesenswert
nicht lesenswert
Zyrano D. schrieb:
> Ich nulle
> den Sensor immer am Anfang jedes Zyklus.

Das kannst Du nur machen wenn sich der Sensor exakt in the richtigen 
Position befindet (Soll=Ist Wert)

> Was genau da vollläuft habe ich leider nicht genau verstanden. :D
Ganz einfach: Der Wert des Integrals. Irgendwann ist halt die Grenze der 
Zahlendarstellung erreicht, je nachdem wieviele Bytes Du für diese 
Zahlendarstellung opferst.

von Dergute W. (derguteweka)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Zyrano D. schrieb:
> aber mag einer vielleicht nochmal eine Ebene tiefer anfangen?

Einfaches Beispiel: WC-Spuelung mit Spuelkasten.
Der Wasserstand im Spuelkasten ist das Integral ueber das reingelaufene 
Wasser. Schliesst das Ventil aus irgendeinem Grund nicht rechtzeitig, 
laeuft der Integrator ueber.
Passiert aber normalerweise nicht, weil die mechanische Regelung dafuer 
sorgt, dass wenn die Regeldifferenz aus Wassersoll- und iststand = 0 
ist, d.h. der Spuelkasten voll ist, das Ventil dicht macht und halt nix 
weiter im Spuelkasten aufintegriert wird.

Gruss
WK

von Achim S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Zyrano D. schrieb:
> Ich nulle
> den Sensor immer am Anfang jedes Zyklus.

Was ist bei dir ein Zyklus? Wenn die Zyklen kurz genug sind, hast du 
ggf. kein Problem. Aber je länger die Zyklen werden, desto stärker 
werden auch kleinste Nullpunktsfehler vom Integrator aufintegriert - bis 
er irgendwann "vollläuft".

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Was eventuell sinnvoll sein könnte ist:
Das Teil nach dem Einschalten "resetten".

Dabei sollte man aber nicht aus den Augen verlieren, dass das Resetten 
ja auch eine "Behauptung" aufstellt, nämlich = Null.
Dazu muss aber feststehen, dass tatsächlich keine Beschleunigung 
stattfindet...
Und noch was: Das Integral über die Beschleunigung kann man auch als 
Geschwindigkeit interpretieren. Also Beschleunigung gleich Null bedeutet 
aber nicht gleich Geschwindigkeit gleich null.

Im Gegentum. Dem Auto ist es egal, welche Beschleunigung gerade vorlag, 
als ihm der Baum in den Weg gesprungen ist. Das Integral der 
Beschleunigung ist aber etwas, was man im Auge behalten sollte (oder in 
dem Falle im Ohr).

von Christian S. (roehrenvorheizer)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Der Integrator bracuht einen Anfangswert. dieser ist im einfachsten Fall 
0.

Also Starte die Schaltung bei Null, lasse ihn eine Weile integrieren und 
Starte erneut.


mfG

von Zyrano D. (kickflip)


Bewertung
0 lesenswert
nicht lesenswert
Ich danke euch! Ich glaube damit kann man es nur verstehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.