Forum: Digitale Signalverarbeitung / DSP / Machine Learning Bandpass digitalisieren


von MindCode (Gast)


Lesenswert?

Hallo,

ich möchte zu Lehrzwecken einen Bandpass-Filter 2. Ordnung 
digitalisieren.
Zunächst habe ich aus der Schaltung das Strukturbild gezeichnet und 
daraus die Übertragungsfunktion raus gelesen. Diese ging Konform mit der 
Übertragungsfunktion in Wikipedia für den Bandpass. Hier habe ich 
lediglich mit w^2 erweitert, damit ich nun meine 
Beobachtbarkeitsnormalform aufstellen kann.

Kommen wir zu der DGL:

u := Eingang
v := Ausgang

x1' = -w^2 * x1
x2' = x1 - 2Dw * x2 + 2Dw*u

v = x2

Quellcode vom Euler (C - Arduino):
--------------------------------------

  x_raw = analogRead(eingang);
  u = (3.30*x_raw)/ 1023; //Umrechnung in Volt 10 Bit -> 3.3v = 1024

    /* BEOBACHTBARKEITS NORMAL FORM UND EULER*/
    x1_neu = x1_alt + dt * (-(w * w) * x2_alt);
  x2_neu = x2_alt + dt * (x1_alt - 2  D  w  x2_alt  k + 2  D  w * 
u);
  y = x2_alt;
  /* BEOBACHTBARKEITS NORMAL FORM UND EULER*/

  x1_alt = x1_neu;
  x2_alt = x2_neu;

  Serial.println(y);


Diese habe ich nun mit dem Euler-Polygonzug programmiert (Arduino)
und fange nun ein Signal an einem der Analogpins ein.

Auch habe ich parallel in Matlab das System nachgebildet.

Jetzt ergibt sich folgendes Problem:

Beim EulerPolygon schwingt sich der Ausgang V auf.
Sowohl in Matlab als auch bei Arduino und geht die Amplitude -> oo

Erst bei Runge-Kutta passiert das nicht. Da wird dann tatsächlich
die Kreisfrequenz w rausgefiltert nach einem kurzen Einschwingvorgang.
Die Periode bleibt stabil für alle Zeiten.

1) Nun ist meine Frage: Warum ist das so?
Warum eignet sich Euler hier nicht?

2) Wie würde mein Beispiel in C mit Runge Kutta aussehen?

Ich weiß, dass Frage zwei eigentlich aus Eigenbemühungen zu beantworten 
ist.
Allerdings würde mir die Lösung zu meinem Beispiel einiges an Zeit 
ersparen was das Verständnis dessen angeht (Die Theorie dahinter kenne 
ich bereits im Grundzug - Mir fehlt nur das konkrete Beispiel)

von lrep (Gast)


Lesenswert?

Man sollte dem Kerl langsam mal helfen...

von Walter T. (nicolas)


Lesenswert?

MindCode schrieb:
> 1) Nun ist meine Frage: Warum ist das so?
> Warum eignet sich Euler hier nicht?

Ohne Dein Problem (Bandpaß) näher zu kennen: Der (explizite) Euler ist 
nicht unbedingt stabil. Probier's mal mit kleinerer Schrittweite.

von MindCode (Gast)


Angehängte Dateien:

Lesenswert?

Bei einer kleineren Schrittweite bleibt der Ausgang y stabil.
Jedoch steigt dessen Amplitude mit Erhöhung der Grenzfrequenz.
Zu erwarten wäre allerdings bei 50 Hz ein Maximum und für alle anderen 
Frequenzen wäre der Ausgang y minimal. Das ist leider nicht der Fall.

Bandpaß Übertragungsfunktion, siehe Anhang!
Sollte aber bekannt sein...

von MindCode (Gast)


Lesenswert?

Was könnt der Grund hierfür sein?

von MindCode (Gast)


Lesenswert?

Hab ich irgendwas falsch gemacht, was meine Kommunikation bzw. den 
Informationsaustausch mit euch betrifft?

Ich denke Filter zu digitalisieren ist kein Hexenwerk und ein jeder 
hier, wird damit schon ordentlich Erfahrung gesammelt haben. Deswegen 
ist es mir schleierhaft, wieso niemand so recht Antworten möchte. Daher 
gehe ich davon aus, dass der Fehler irgendwo bei meinem Umgang mit euch 
liegen muss.

Ich habe leider noch nicht die Erfahrung in diesem Themengebiet und es 
gibt manchmal Sachverhalte, da muss man sich zwangsläufig helfen lassen.

von Detlef _. (detlef_a)


Lesenswert?

Du fragst falsch. Ich habe keinen Schimmer, was Du willst.

http://www.tty1.net/smart-questions_de.html

Cheers
Detlef

von Lattice User (Gast)


Lesenswert?

Wenn es ans eingemachte geht, ist "Numerical Recipes" die ultimative 
Anlaufstelle.

http://www.nr.com/

Hier als Auszug das Kapitel zu Runge Kutta:
http://www.aip.de/groups/soe/local/numres/bookfpdf/f16-1.pdf

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.