Sensor-zu-ADC-Filter-Design-Tutorial-Vorschläge

Ich suche im Internet nach ein paar guten Ressourcen, um mein Wissen über das Filterdesign für die Anbindung an einen ADC eines uC zu erweitern.

Ich möchte ein paar Dinge auffrischen: Bestimmung der richtigen Grenzfrequenz,
Art der Filterauswahl, wann Puffer verwendet werden sollen, Auswahl der richtigen Verstärkung bei Verwendung von Puffern

Ich habe im Internet gesucht, aber ich habe Probleme, ein allgemeines Tutorial zu finden: Hier ist Ihr Sensor, hier ist, wie Sie eine Schnittstelle zu einem ADC herstellen würden.

Suchen Sie Informationen zu analogen Filtern oder digitalen Filtern (z. B. IIR, FIR, in Software des Mikrocontrollers zu implementieren)?
Anti-Alias-Filter, Sensoren puffern, Sensoren verstärken, Sensoren verbinden und möglicherweise (einige) Sensoren mit Strom versorgen. Dies ist viel zu umfangreich, um es in einer Frage abzudecken. Vielleicht schränken Sie Ihre Frage ein wenig ein und konzentrieren sich auf die Anti-Alias-Filterung.
Ich suche mehr nach den richtigen Hardware-Designtechniken. Und Faustregelvorschläge. Ich verstehe, dass Filter ein RIESIGES Thema sind, aber ich würde davon ausgehen, dass es einige Best Practices / Schritte gibt, die Sie richtig befolgen müssen, wenn Sie mit einem Sensor und einem Mikro konfrontiert werden. dh sagen Sie einen Fotowiderstand und einen PIC, wie bestimmen Sie die richtige Pufferung oder benötigen Sie sogar einen Tiefpassfilter? usw.

Antworten (4)

Okay, der erste Schritt ist Anti-Aliasing. Das ist eine große Sache, wenn Sie das nicht richtig machen. Um Ihr Beispiel eines Fotosensors zu nehmen, stellen wir uns vor, was unter ungünstigen Bedingungen ohne einen Anti-Alias-Filter passiert.

Sie haben beispielsweise ein batteriebetriebenes Gerät mit einem transflektiven LCD-Display entwickelt, da es im Dunkeln mit Hintergrundbeleuchtung und tagsüber bei Umgebungslicht zu sehen ist. Sie haben einen Fotosensor, um die Hintergrundbeleuchtung auszuschalten, wenn das Umgebungslicht hell genug ist, sodass Sie Akkuladung sparen. Um Prozessorleistung zu sparen (dies ist keine hohe Bandbreitenanforderung), haben Sie alle 10 ms etwas freie CPU-Zeit und tasten den Fotosensor dann mit dem ADC ab. So weit, ist es gut.

Jetzt wird Ihr Produkt von einer Krankenschwester in einer Nachtschicht bei schwachem Umgebungslicht verwendet, hat aber eine Schreibtischlampe zum Arbeiten. Sie hat kürzlich die Wolframbirne ausgetauscht, konnte aber nur eine Eco-CCFL-Birne finden. Dieses fluoreszierende Licht flackert mit 100 Hz (sie ist in Europa), was für sie zu schnell ist, um es zu sehen. Aber spielt Chaos mit Ihrem Produkt.

Wenn das Produkt eingeschaltet wird, tastet es den Fotosensor alle 10 ms ab und stimmt zufällig bei jeder Abtastung mit der Spitze der Lichtflackerwellenform überein. Es zeichnet mehrere aufeinanderfolgende Proben mit hohem Lichtpegel auf und schaltet die LCD-Hintergrundbeleuchtung aus. Da das Abtastintervall von 10 ms jedoch nicht mit der AC-Zyklusfrequenz synchronisiert ist, wandert die Abtastung in Phase, und ein oder zwei Sekunden später tastet der Fotosensor am unteren Rand der Flimmerwellenform ab. Nach mehreren aufeinanderfolgenden Proben mit schwachem Licht schaltet Ihre Software die LCD-Hintergrundbeleuchtung ein.

Das Ergebnis ist, dass die LCD-Hintergrundbeleuchtung unregelmäßig ein- und ausschaltet, mit einer Frequenz, die genau der Differenz zwischen der Flimmerfrequenz und Ihrer Abtastfrequenz entspricht. Das Produkt gilt als fehlerhaft und wird zur Reparatur an Sie zurückgesendet. Sie testen an Ihrer Werkbank am Fenster, bedecken und enthüllen den Sensor und stellen fest, dass er wie erwartet funktioniert. Aber das Produkt IST fehlerhaft, es ist fehlerhaft, weil Sie nicht auf Onkel Nyquist gehört haben.

Das Nyquist-Abtasttheorem besagt, dass Sie mit einer Frequenz abtasten müssen, die mindestens doppelt so hoch ist wie die höchste Frequenz im Eingangssignal. Umgekehrt müssen Sie das Eingangssignal so filtern, dass alle Frequenzen mit der halben Abtastrate oder höher unterdrückt werden, und Sie müssen dies VOR dem Abtasten tun. Das Hinzufügen eines Softwarefilters nach dem Sampling rettet Sie nicht, wenn Sie bereits einen Alias ​​für niedrige Frequenzen haben. Verwenden Sie auf jeden Fall eine digitale Filterung, um die abgetasteten Daten so zu verarbeiten, wie es Ihre Anwendung erfordert, aber wenn Sie wissen möchten, wo Sie mit dem Filterdesign für die Sensorabtastung beginnen sollen, müssen Sie vor der Abtastung mit der richtigen Anti-Alias-Filterung beginnen.

Als Erweiterung wurde ich einmal dabei erwischt, wie ich Code für die Drucksteuerung eines Sauggeräts mit einer kleinen elektrischen Pumpe und einem digitalen Drucksensor schrieb. Der Drucksensor führte etwa alle 10 ms eine Messung durch, aber die Pumpe lieferte erhebliche Druckschwankungen mit unangenehmen Frequenzen, die der Sensor aliasing. An der Elektronik oder Software konnte ich nichts ändern, das Aliasing fand im Sensor selbst statt. Die Lösung war schließlich ein pneumatischer Nyquist-Filter am Eingang des Sensors.

Ich habe an diesem Tag eine wertvolle Lektion gelernt.

+1 gute Beispiele. Du bist keine dumme Person, oder LOL

Es kommt wirklich auf die Anwendung an

  1. Bestimmen Sie, welche Art von Filter Sie benötigen. Low..High..Bandpass.
  2. Sie möchten sich die verschiedenen Klassen ansehen: Butterworth, Bessel, Chebychev usw. und entscheiden, welche Ihren Anforderungen entspricht.
  3. Sie müssen die Filterreihenfolge bestimmen, was das Minimum ist, das verwendet werden kann, um dieses Ziel zu erreichen

Sie können Matlab, Spice oder eine Software verwenden, um es vor dem Versuch zu simulieren. Microchip hat nette Anwendungshinweise und Designsoftware für Beispiele und Simulationen

Hier ist ein Tutorial: Anti-Aliasing, analoge Filterung für Datenerfassungssysteme

TI hat FilterPro, das für das Filterdesign nützlich erscheint: ti.com/tool/filterpro

TI und Analog Devices sind gute Unternehmen, denen man für gute technische Dokumentation folgen sollte. AD-Link enthält den größten Teil des Schnittstellenteils, der während des Schaltungsdesigns verwendet wird. Wenn Sie nach Hochgeschwindigkeits-ADCs mit mehr als 100 MSPS Abtastung suchen, empfehle ich TI High Speed ​​für Quad-Channel- und Octa-Channel-ADC. Dies sind einige der Links von TI für ADC-Grundlagen:

www.ti.com/lit/an/slaa510/slaa510.pdf

www.ti.com/lit/an/slyt423/slyt423.pdf

Nachdem ich Sie nun (hoffentlich) von der Notwendigkeit eines Anti-Alias-Filters überzeugt habe, schauen wir uns anhand eines einfachen Beispiels an, wie Sie einen Filter spezifizieren und entwerfen. Nehmen wir ein einfacheres Problem als Ihr Fotosensorbeispiel, um den grundlegenden Prozess zu zeigen (oder einen Lösungsansatz).

Angenommen, Sie haben einen batteriebetriebenen Stromkreis mit einer Nennspannung von 12 V, aber diese Spannung kann zwischen 10,5 V und 14,5 V variieren. Diese Batterieversorgung speist sowohl einen Hochfrequenz-Abwärtswandler zum Ansteuern Ihres Mikrocontrollers als auch einen Aktuator, dessen Ansteuerung geändert werden muss, um Änderungen der Batteriespannung beim Entladen mit einer Genauigkeit von ±5 % auszugleichen. Sie müssen also die Batteriespannung mit einem 12-Bit-ADC in Ihrem Mikrocontroller messen, der eine 2,0-V-Referenz hat und den Sie so einstellen können, dass er in 1-ms-Intervallen mit einer Genauigkeit von ± 1 % gelesen wird.

Der einfachste Ansatz besteht darin, den ADC-Pin mit dem Ausgang eines Potentialteilers zu speisen. Der ADC benötigt eine Quellenimpedanz von weniger als 3 k, sodass wir einen Potentialteiler mit 3 k3 bis 0 V und 22 k bis Vbat verwenden können, was uns eine gute Auflösung, einen Null-Offset und einen Bereich von bis zu 15,3 V liefert. Es ergibt auch eine Quellenimpedanz von 2k87, was knapp unter der ADC-Grenze liegt. Aber wir können das gleiche Teilungsverhältnis mit 2k7 und 18k erreichen, was einen besseren Impedanzspielraum bei 2k4 ergibt. Also werden wir das verwenden.

Bei standardmäßigen 1-%-Widerständen trägt der Potentialteiler fast ±2 % zur Unsicherheit bei, was insgesamt ±3 % für die gesamte bisherige Messung ergibt. Wir haben also noch ±2 % für restliches Aliasing übrig.

Nun erfordert das Nyquist-Theorem, dass Ihre Abtastfrequenz mindestens doppelt so hoch sein muss wie die höchste Frequenz in Ihrem Signal, um Aliasing zu verhindern. Anders ausgedrückt und unter Berücksichtigung der oben abgeleiteten Resttoleranz müssen wir sicherstellen, dass jede Komponente des Signals, die wahrscheinlich Alias ​​erzeugt, nicht mehr als ±2 % des vollen Bereichs oder ±300 mV beiträgt.

Der von uns gewählte Abwärtswandler wird in einem anderen batteriebetriebenen Produkt verwendet, und obwohl er eine gute Ausgangsstabilität, geringe Verluste und niedrige Komponentenkosten bietet, wissen wir, dass er dazu neigt, etwa 900 mV pp-Rauschen bei 130-180 kHz in die Batterieversorgung einzuspeisen, was ist sonst sehr stabil. Da unsere Anwendung nicht identisch ist, entscheiden wir uns für einen ungünstigsten Fall von 1,5 V pp (±750 mV) bei 120-200 kHz.

Dies ist ein besonders schönes Szenario, da wir ein definiertes Signal mit Alias-Potenzial haben, und dieses Signal hat eine sehr hohe Frequenz im Vergleich zur Abtastfrequenz. Wenn wir nichts über die potenziellen Interferenzen wüssten, müssten wir einen Filter entwerfen, der alle Frequenzen über 500 kHz (halbe Abtastfrequenz) zurückweist, was eine viel größere Herausforderung darstellt.

Also müssen wir jetzt einen Filter entwerfen, der ±750 mV bei 120 kHz zurückweist und weniger als ±300 mV übrig lässt. Das ist ein Kinderspiel!

Wenn Sie sich an Filtereigenschaften erinnern, erinnern Sie sich vielleicht daran, dass ein Filter erster Ordnung (wie ein einzelner RC) Frequenzen über der Grenzfrequenz dämpft und dass jede Frequenzverdopplung über die Grenzfrequenz hinaus die Signalamplitude halbiert ( oder um den Faktor 10, 10 dB, pro Dekade). [Beachten Sie, dass die Signalleistung doppelt so schnell abfällt, da die Leistung proportional zum Quadrat der Amplitude ist].

Jetzt brauchen wir <300 mV von einem 750-mV-Signal, was <0,4 ist. Unsere Grenzfrequenz muss also nur <0,4 x 120 kHz sein, was 30 kHz entspricht. Es ist jedoch nur sinnvoll, eine Grenzfrequenz zu haben, die nicht höher als die Hälfte der Abtastfrequenz ist, sodass wir einen 500-Hz-Filter einfügen könnten, der das Rauschen des Abwärtswandlers auf 750 x 500 / 120.000 = 3 mV dämpfen würde.

Wir können eine Grenzfrequenz von <500 Hz erreichen, indem wir einfach einen 220-nF-Kondensator über den unteren 2k7-Widerstand des Potentialteilers hinzufügen (die Grenzfrequenz Fc = 1 / (2pi RC), wobei R die 2k4-Parallelimpedanz des Potentials ist Teiler Einfach!

Hilft das weiter?

Ich bin mir ziemlich sicher, dass die Verstärkung (und damit die Amplitude) bei 20 dB / Dekade und die Leistung bei 10 abfällt.
@Scott: Danke, du hast recht. Wird korrigiert, wenn ich nicht schlafen muss. :-)
Nochmals vielen Dank, das ist genau die Art von Sache, die ich gesucht habe. Sie haben wirklich eine Tonne geholfen!