Forum: Digitale Signalverarbeitung / DSP / Machine Learning digitale Filter mit veränderlicher Abtastrate


von Christian (Gast)


Lesenswert?

Hallo allerseits.

Ich möchte einen FIR oder IIR Filter in einem Mikrocontroller
softwaremäßig einbauen.Die Koeffizientenberechnung überlasse ich
dabei Matlab Studio.
Dabei werden ja immer statische bzw. konstante Koeffizienten ermittelt,
in Abhängigkeit der Sample Rate und gewünschter Bandbreite.

Folgende Frage stellte sich mir beim Filterentwurf:
Beispiel:
Filter mit Abtastrate F(a)=1MHz,
Bandbreite mit B = F(a)/4 = 1MHz/4 = 250kHz,
Zeit zwischen 2 Abtastwerte beträgt: T(a)=1/F(a)=1µs

Wie verhält sich der Filter wenn ich T(a)=1µs in meinem
µC Programm nicht als konstant voraussetzten kann?

Eine ISR Anfrage kann mir z.b. einen 2.Task aktivieren,wodurch
sich die Zeit zur Berechnung eines neuen Ausgangswertes verändert:

ISR_Routine()
{
  task2_enabled=1;
}
while(1)
{
  if(task2_enabled==1)
  {
    Task2();
  }
  Task1()
  {
     Filter(new_sample);
  }
}
Da die Bandbreite auch von F(a)=1/T(a) abhängt verändert sich diese
durch oben beschriebenes Problem.

Gibt es Filteralgorithmen mit z.b. variablen Koeffizienten?
(die man auch in einem µC umsetzten kann!)
Oder kann man eine variable Zeit T(a) unberücksichtigt lassen?

Gruß
Christian

von Marius W. (mw1987)


Lesenswert?

Dann bist du bei dem Thema irreguläre bzw. nichtäquidistante Abtastung. 
Sowas sollte im Allgemeinen vermieden werden. Ich denke in deinem Fall 
kommt es darauf an, wie oft und besonders wie stark die Verschiebung der 
Abtastwerte ist, die durch deinen 2. Task verursacht werden.

Neue Filterparameter lassen sich nicht so einfach annehmen, weil 
natürlich ein digitales Filter FIR/IIR-Filter auf konstante Abtastraten 
angewiesen ist. Die ganze Theorie die da hinter steckt, basiert auf der 
äquidistanten Abtastung der Signale.

MfG
Marius

von Christian (Gast)


Lesenswert?

Also gibt es keine triviale Lösung?
Was kann bei maximaler Verschiebung von F(a) passieren?
Wird der Filter instabil(oszilliert)?
Oder verändert sich einfach nur die Bandbreite(Grenzfrequenz)?

Gruß
Christian

von Marius W. (mw1987)


Lesenswert?

Um zu sagen, was da passiert bin ich nicht genug in der Thematik drin. 
Außerdem sagst du ja nicht, was maximale Verschiebung von F(a) bedeutet. 
Dauert Task2 nun 1 µs oder 1 Stunde?

Was du machen könntest, wäre eine Simulation deines Systems. Wenn du 
dein Eingangssignal irgendwie deterministisch beschreiben kannst 
(Fourier-Reihe), dann könntest du in MATLAB eine Simulation schreiben, 
die dir die irreguläre Abtastung simuliert. In der Simulation kannst du 
ja dann den Jitter in der Abtastfrequenz modellieren (z. B. 10 x mit 1 
µs abtasten, danach 1 x 1.5  µs usw.).

MfG
Marius

von Mark B. (markbrandis)


Lesenswert?

Du willst Echtzeitverarbeitung, ja? Dann solltest Du garantieren, dass 
Deine Hardware schnell genug rechnen kann um in der Zeitspanne zwischen 
zwei Abtastwerten alle benötigten Rechnungen zu erledigen.

Oder vielleicht muss Task 2 ja gar nicht komplett auf einmal 
durchgerechnet werden bzw. hängt vielleicht nicht von den Abtastwerten 
ab. Dann böte sich an:

1. Interrupt (hohe Priorität): Abtastung, 1 neuer Signalwert pro Zyklus
2. Interrupt (niedere Priorität) oder Hauptprogramm: Berechnung Task 2

von Paulchen Panther (Gast)


Lesenswert?

Hi!

Zur Stabilität:
Ein FIR ist immer stabil.
Wenn ein IIR Filter bei einer Abtastrate stabil ist, ist er es auch bei 
jeder anderen (auch wenn die Abtastung nicht äquidistant ist).

Gruß
PP

von Helmut L. (helmi1)


Lesenswert?

Christian schrieb:
> Wird der Filter instabil(oszilliert)?

Nein.

> Oder verändert sich einfach nur die Bandbreite(Grenzfrequenz)?

Ja.

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.