DSP TMS320 Nulldurchgangserkennung

OP #390391
Lesenswert?

Hallo,


ich habe einen TMS32067 und möchte aus einem Signal welches grob
mathematisch so ( y(t)= exp(-t/a)+cos(2*pi*f*t) ) aussieht den
Nulldurchgang bestimmen. Dabei habe ich das Problem das ich den
Nulldurchgang um eine Periode vorraussehen (Zukunft) muss .Meine Idee
war bis jetzt einfach eine lineare Regression zu machen und die
Funktion später wieder zusammenzusetzen leider bin ich dabei zu
ungenau. Vielleicht hat einer ne Idee wie man das anstellen könnte.
OP #390394
Lesenswert?

Hallo Alex,

ich möchte den Nulldurchgang in der Zukunft haben damit ich
entsprechend reagieren kann zu diesem Zeitpunkt also ein mechanisches
Problem, deswegen muss ich wissen ob es dort einen Durchgang gibt.

Leider kann ich nicht alle zukünftigen Nulldurchgänge Vorraussehen da
ich mitunter noch keinen hatte wenn die Kurve sehr steil abfällt also
der exponentielle Anteil größer als die Amplitude der Schwingung ist.
Das passiert leider auf alle Fälle . In alle Ewigkeit kann ich denn
Nulldurchgang erst erkennen wenn der Exp Anteil sehr nahe bei 0 liegt.


Ich denke ich muss nun sehen das ich das Signal analysiert bekomme und
eine mathematische Beschreibung finde die mir erlaubt den Nulldurchgang
vorrauszusehen.
Gast #390396
Lesenswert?

Hallo Olaf,


also Rechenzeit habe ich genug die Frequenz ist niedrig, Problem ist
das ich ein mechanisches delay ausgleichen muss und deswegen auch
vorher wissen muss wann der Nulldurchgang ist. Also ich muss definitiv
in die Zukunft "Warsagen".
Gast #390397
Lesenswert?

Dann erscheint mir die lineare Regression doch am geeignetsten. Worin
lagen die Ursachen für die Ungenauigkeit?

- Zu kleines Messintervall?
- Verrauschte Größen?
- Evtl. ungenauer Ansatz des Gleichungssystems?

Hast du versucht, evtl. einen IIR-Filter o.Ä. vorzuschalten, falls das
Rauschen ein Problem darstellt?
Was für ein mechanisches System ist es genau? Evtl. existieren weitere
Zeitkonstanten, die du nicht vernachlässigen darfst?!


Alex
Gast #390400
Lesenswert?

also das Rauschen habe ich herausgefiltert und dann in Matlab eine
lineare regression gemacht. Ohne Filter war die lineare Regression
überhaupt nicht zu gebrauchen aber so geht es besser...aber der Fehler
ist zu groß.

Ich hab versucht das Fenster in der Größe zu variieren aber der Fehler
blieb relativ konstant. Ich bin dabei auch beschränkt auf 2 Perioden in
der ich mich entscheiden muss.


Ungenauer Ansatz (y(t) = (m*t+n)+a*cos(2*pi*t+phi) das ist meine
zusammengesetze Funktion und die Regression lasse ich in Matlab über
polyfit() berechnen.


Weitere Konstanten gibt es nicht das habe ich überprüft.


Ich bin gerade dabei zu schauen ob es eine Art Approximierung gibt oder
ich berechnen kann indem ich sage y(t)= exp(-b*t)+a*cos(2*pi*t+phi) ist
die Funktion und passe mir nur noch die Parameter an. Da schau ich grad
wie der Fehler ist.
Gast #390401
Lesenswert?

"2 Perioden in denen ich mich entscheiden muss"

Dann hast du also doch eine Chance im Anlaufen. Dort müsstest du doch
die Perioden sehr genau ausmessen können und deinen Prädiktor
entsprechend einstellen. In der Folge adaptierst du nur noch mit
entsprechenden Regelalgorithmen deine Parameter.
Gast #390402
Lesenswert?

Hallo Alex

ich bin jetzt soweit dass ich eine Regression auf die Funktion
y(t)=a*exp(-b*x)+c*cos(2*pi*50*x+d)+e hinbekommen habe. Und die
Parameter soweit stimmen. Das alles ist noch sehr russisch und ohne
Filter. Ich komme auf einen max. Fehler von ca. 2 % normiert auf die
20ms.

Ich hoffe das ich das noch mit einem Filter verbessern kann. Ich sample
das Signal mit 10 Khz und die cos Schwingung hat 50 Hz. Was für einen
IIR Filter würdest du nehmen?
Gast #390403
Lesenswert?

Nimm z.B. einfach ein DT2-System der Form:

f = 50;
KI = 2*pi*f;
KP = 1;
num = [KP*KI 0];
den = [1 KP*KI KI*KI];
Gp = tf(num,den);
bode(Gp);

Das ist ein einfaches System 2. Ordnung (Bandpass) und liefert bei
geringem Rechenaufwand bereits ordentliche Ergebnisse. Programmieren
kann man es z.B. mit 2 diskreten Integratoren und einem P-Glied.

Alex

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren