ADC-Abtastfrequenz - Rauschfilterung

Ich muss die Temperatur und den Kraftstoffstand von zwei analogen Sensoren ablesen. Beide sind analoge Signale und ich muss Rauschen aus dieser Messung entfernen. Und dafür möchte ich den Digitalfilter verwenden. Meine MCU läuft mit 32 MHz, außerdem lese ich alle 5 ms den ADC für beide Sensoren.

Jetzt möchte ich das Rauschen meiner Probe reduzieren, indem ich einen externen analogen Filter und einen digitalen Softwarefilter (IIR & FIR) verwende.

Dieser Link besagt, dass wir die Nyquist-Kriterien für die Probenahme befolgen sollten, um ein Alising-Problem zu vermeiden. https://en.wikipedia.org/wiki/Analog-to-digital_converter

Um nun einen digitalen IIR-Filter zu entwerfen, verwenden Sie diesen Link, um die Verwendung der Grenzfrequenz anzugeben. https://stratifylabs.co/embedded%20design%20tips/2013/10/04/Tips-An-Easy-to-Use-Digital-Filter/

Wenn ich recht habe, dann sind Nyquist-Kriterien, Aliasing und die Einstellung der Abtastfrequenz wichtig für die Aufzeichnung analoger Signale, bei denen wir wissen, dass die menschliche Stimme < 20.000 Hz beträgt.

Aber wie man diese Kriterien (Analog- oder Digitalfilter-Grenzfrequenz und Abtastrate und Nyquist-Kriterien) für Sensorsignale wie Temperatur und Kraftstoff einstellt, wo wir einfach die analogen Signale erhalten und uns nicht bewusst ist, welche Frequenz für diese Signale ist.

Bitte vorschlagen.

Wenn Sie alle 5 ms eine Messung durchführen, haben Sie eine Abtastfrequenz von 200 Hz. Dies ist die Frequenz, die Sie verwenden sollten, um die Grenzfrequenz des analogen Filters zu bestimmen.
Sie kennen die Frequenz dieser Signale - Temperatur und Kraftstoffstand sollten sich beide sehr langsam ändern. Als Faustregel nehme ich für solche Signale 20-Hz-Cutoff-Filter. Wenn Sie möchten, können Sie Ihre Signalbandbreite messen, indem Sie mit einem analogen Filter mit höherer Grenzfrequenz erfassen und die Samples FFT-verarbeiten.
@Arsenal Ihre Frequenzberechnung ist 1 / Zeit_5 ms, aber die genaue Zeit sollte 5 ms + ADC-Konvertierungszeit + Software-Verarbeitungsverzögerung betragen, richtig?
In ähnlicher Weise hängt Ihre digitale Filtergrenze davon ab, wie viele Samples Sie zum Filtern ausgewählt haben. Eigentlich hast du am falschen Ende angefangen. Welche Informationsrate ist von Interesse, und wie viel müssen Sie überabtasten, um das gewünschte SNR zu erreichen?
@ Sean Angenommen, ich wähle pro Sensor 20 Proben zum Filtern aus und jede Probe wird alle 50 ms entnommen. Was sollte dann die Grenzfrequenz des digitalen IIR-Filters sein?
@ user6363 nein, wenn Sie mit 5 ms abtasten, tasten Sie mit 5 ms ab. Das Konvertierungstiming ist nur ein Offset des genauen Zeitpunkts der Abtastung, hat aber keinen Einfluss auf die Frequenz. Wenn Ihre Software so langsam ist und Ihre Samples nicht in 5 ms verarbeiten kann, sampeln Sie wahrscheinlich nicht mit 5 ms.
Wenn Ihr Digitalfilter 20 Samples verwendet, wird die Grenzfrequenz durch das Filterprofil und die Sampling-Frequenz definiert. Digitale Filter werden in Samples definiert, nicht in Hz.
Sie sollten eine gute Abtastung des Signals erhalten, um festzustellen, wo sich das Rauschen befindet, bevor Sie einen Filter entwerfen. Außerdem, welche Sprache verwendest du? Sie können wahrscheinlich eine Bibliothek zum einfachen Filtern finden. Überprüfen Sie den DSP-Stapelaustausch.

Antworten (2)

Sie haben eine Abtastrate von 200 Hz (1/5 ms). Sie haben jedoch nicht die erforderliche Reaktionszeit für die Ausgabe des Filters angegeben. Um die Antwort darauf zu finden, sollten Sie sich fragen, wie langsam die Reaktion sein kann, bevor Sie ein Problem bekommen. Dh. Wenn dies der Kraftstoffstand und die Temperatur eines Autos sind, dann ist eine Minute eine gute Reaktionszeit. Aber wenn dies eine interne Messung einer Brennstoffkammer für ein Mini-Turbinentriebwerk ist, dann könnte Ihnen sogar eine zweite Verzögerung Probleme bereiten. Eine Bestimmung ist mir nicht möglich. (Ok, die Turbine ist ein weit hergeholtes und fast nutzloses Beispiel, mir fielen keine besseren Beispiele ein, bei denen eine Verzögerungszeit im Bereich von einer Sekunde Probleme verursachen könnte).

Filtern Sie das analoge Signal mit einem Tiefpassfilter mit einer Grenzfrequenz (-3-dB-Frequenz) kleiner als die Nyquist-Frequenz. Gleiches gilt für die Grenzfrequenz im Digitalfilter. Ich würde die Grenzfrequenz der analogen Filterung so nah wie möglich an der Nyquist-Frequenz halten. Auf diese Weise können Sie die Filtereigenschaften nach Belieben ändern, indem Sie nur den digitalen Filter ändern.

Das andere Entwurfskriterium für das analoge Filter ist die Abtasttiefe (in Bits) des ADC. Die Dämpfung der Signale oberhalb der Nyquist-Frequenz sollte größer sein als das S/N-Verhältnis des ADC. Dh. 8-Bit-ADC, ungefähr 7-Bit-S/N -> mehr als 42 dB Dämpfung bei der Nyquist-Frequenz, um Aliasing zu vermeiden.

200 Hz Abtastrate -> Nyquist-Frequenz = 100 Hz. Grenzfrequenz des analogen Tiefpasses < 100 Hz. Angenommen 8 Bit wie in meinem obigen Beispiel: Dämpfung bei 100 Hz >42 dB

Empfohlener Analogfilter: Filter 2. Ordnung (40 dB/Dekade). Filterfrequenz < 8,8 Hz.

Und für den digitalen Filter können Sie so viel filtern, wie Sie möchten, solange Sie die erforderliche Reaktionszeit im Auge behalten.

danke ..Bitte klären Sie diesen Punkt, was Sie hier meinen "Und für den digitalen Filter können Sie so viel filtern, wie Sie möchten, solange Sie die erforderliche Reaktionszeit im Auge behalten." Sie meinen, Sie können die Grenzfrequenz im Digitalfilter verringern, oder? Was meinst du mit "erforderliche Reaktionszeit im Auge behalten"? bitte vorschlagen.
Wie ich geschrieben habe, gibt es wahrscheinlich eine Antwortzeit, die Sie berücksichtigen müssen. Wenn nicht, würde ich die Grenzfrequenz für das digitale Filter einfach auf 1 Hz setzen. Ich habe keine Ahnung, was Sie machen, und deshalb weiß ich nicht, ob mein Vorschlag überhaupt gültig ist. Wenn Sie uns etwas mehr erzählen, können wir höchstwahrscheinlich bessere Antworten geben.
Ihr analoger Filter muss eine deutlich niedrigere Frequenz als 3 dB bei der Nyquist-Frequenz haben, wenn Sie Aliasing vermeiden möchten.
@Andyaka Ja, und um das zu verdeutlichen, habe ich das Beispiel mit einem Filter 2. Ordnung und einem 8-Bit-ADC eingefügt. Ich hoffe, das Beispiel hilft beim Verständnis der Beziehung zwischen Grenzfrequenz, S/N-Verhältnis, Nyquist-Frequenz und Aliasing-Problemen.
@Bernie, ich habe keine spezifischen Anforderungen von einigen Kunden. Aber ich habe die Theorie von IIR-Filtern gelesen, dass wir Rauschen mit IIR-Filtern reduzieren können, und möchte dies nur mit Firmware und Mcu ADC implementieren. Also war ich etwas verwirrt darüber, was genau die Frequenz für den IIR-Filter in der Firmware schneiden sollte. Also habe ich diese Frage aufgeworfen.
@Bernie Wenn wir also gemäß Ihrem letzten Beitrag keine Antwortzeit berücksichtigt haben, nehmen Sie idealerweise 1 Hz. Angenommen, die Reaktionszeit des Sensors beträgt etwa 10 ms (was bedeutet, dass ich alle 10 ms Sensordaten lesen muss), dann sollte die Grenzfrequenz des digitalen Filters > 1 / T sein, wobei T = 10 ms ist. Habe ich es richtig?
@ user6363 Ja, das 1 Hz wurde aus dem Nichts genommen, aber ich denke, es wird Ihren Bedürfnissen entsprechen. Führen Sie die Abtastung in 5-ms-Intervallen durch, wie Sie in der ursprünglichen Frage angegeben haben. Und der Rest meiner Beispiellösung kann verwendet werden. Lesen Sie auch im Datenblatt des ADC nach, ob es Beispiele für Anti-Aliasing-Filter gibt (außer meinem Vorschlag für einen Filter 2. Ordnung). Einige ADCs haben konstruktionsbedingt Filter eingebaut (z. B. Sigma-Delta-Wandler). Sie benötigen möglicherweise keine große Filterung des analogen Signals, um Aliasing zu vermeiden. Vereinfacht das analoge Design.
Könnte mir jemand helfen, die Aussage von @BernieNor zu verstehen: "Die Dämpfung der Signale über der Nyquist-Frequenz sollte mehr als das S / N-Verhältnis des ADC betragen. Dh 8-Bit-ADC, ungefähr 7 Bit S / N -> mehr als 42 dB-Dämpfung bei der Nyquist-Frequenz, um Aliasing zu vermeiden." Wo kann ich mehr darüber lesen?

Sie können sie 2 bis 20 Mal pro Sekunde abtasten und dann einen gleitenden Durchschnitt über eine Sekunde berechnen. Ihre Reaktionszeit wird etwa eine Sekunde betragen und es sollte kein Rauschen geben, wenn Ihre Elektronik auch nur annähernd vernünftig ist.

Wenn Sie keine interessante Mikroturbine haben und den genauen Kraftstoffverbrauch messen möchten, benötigen Sie wahrscheinlich keine sehr schnelle Reaktion von Ihren Filtern oder ADC, wenn Ihre Sensoren nur bei 1 bis 10 Hz reagieren.

BEARBEITEN:
Wenn Sie nicht zufälliges elektrisches Rauschen haben oder glauben, dass dies viel größer als das Fünffache der Auflösung ist, die Sie tatsächlich benötigen (nicht was berechnet werden kann), können Sie durch Hinzufügen einer analogen Filterung profitieren. Die Grenzfrequenz sollte etwa die Hälfte Ihrer Abtastfrequenz betragen.

Allerdings wäre jede Tiefpassfilterung über Ihrer gewünschten Antwortfrequenz von Vorteil, obwohl der digitale Mittelungsfilter bereits ein Tiefpassfilter ist, der viele zufällige Rauschquellen eliminieren kann. Wenn Sie Rauschen in der Nähe eines Vielfachen der Abtastfrequenz haben, kann das Alias-Rauschen ein Schwebungssignal im Ausgang verursachen, das eigentlich nicht vorhanden ist. Ein analoges Front-End-Filter würde dieses Risiko minimieren.

Wenn ich 20 Samples pro Sekunde nehme, bedeutet dies, dass ich alle 50 ms Samples nehme. Das bedeutet also, 20 Abtastwerte in einem kreisförmigen Array von 20 Ganzzahlen zu speichern und sie dann alle 50 ms zu mitteln, um einen genauen Wert zu erhalten, oder?
Aber diese Mittelung ist dieselbe wie bei der Verwendung des FIR-Filters. Angenommen, ich muss 40 analoge Werte ablesen (z. B. vom Sensor oder Ausgang des Operationsverstärkers oder Potentialteilers) und wenn ich 20 Abtastungen jedes Sensors verwende, werden dafür 40 * 20 * sizeof (int) Speicher verbraucht Betrieb, Speicherverschwendung. Ich möchte den IIR-Filter verwenden, um Speicherverschwendung zu vermeiden. Wie stellt man nun den Wert des Grenzfrequenzparameters ALPHA gemäß diesem Link stratifylabs.co/embedded%20design%20tips/2013/10/04/… ein ????
Wieder habe ich die gleiche Frage, was der Parametersatz für die Grenzfrequenz dieser analogen Signale sein sollte (vom Sensor oder Ausgang des Operationsverstärkers oder Potentialteilers kommend), damit der IIR-Filter genau funktioniert? bitte vorschlagen