Messen von VPP und DC-Offset eines 1Hz-1MHz-Signals mit MCU

Ich muss die Spitze-zu-Spitze-Spannung und den DC-Offset einer Sinus- / Dreieckwelle von 1 Hz bis 1 MHz messen. Die Signalamplitude variiert zwischen 0 und 2 Vpp und der Offset kann zwischen -2 V und +5 V variieren. Ich werde einen Atmega16 verwenden, um den A/D zu machen. Der Atmega16 verfügt über einen 8-Kanal-10-Bit-ADC mit einer Abtastrate von 50-200 kHz bei einer Auflösung von 10 Bit. Eine mehrfache Probennahme für den Zyklus kommt natürlich nicht in Frage.

Ich dachte daran, zwei verschiedene Versionen des Signals abzutasten, z. B. das Signal sowohl an einen negativen Spitzendetektor als auch an einen Präzisionsgleichrichter anzuschließen und diese Schaltungsausgänge mit zwei verschiedenen ADC-Kanälen zu verbinden und dann aus dem Ergebnis dieser Konvertierungen (dh dem Negativ und positive Spitzen) berechnen den vpp- und DC-Offset. Offensichtlich müssen die Signale skaliert und pegelverschoben werden, bevor sie an den Controller angelegt werden.

Ich bin mir nicht sicher, ob das überhaupt funktionieren wird, es muss einen viel einfacheren und anspruchsvolleren Weg geben, an den ich nicht gedacht habe.

Wie schnell ändert sich der DC-Offset? Oder noch besser, wie schnell müssen Sie wissen, ob sich der DC-Offset geändert hat? Wenn Sie eine wirklich große Kappe verwenden, könnten Sie eine Gleichspannung messen, die sich jedoch im Vergleich zum Signal langsam ändern würde.
Ich habe keine Berechnungen durchgeführt, aber es würde wahrscheinlich ausreichen, den DC-Offset-Messwert alle 200-500 ms zu aktualisieren

Antworten (2)

Mehrere Möglichkeiten zur Messung der Spitze-zu-Spitze-Spannung mit einer MCU:

  • Undersampling: Direkte Abtastung mit einem ADC, obwohl Sie wissen, dass Sie weniger als eine Abtastung pro Zyklus des Signals erhalten. Dies erfordert (a) das Signal wiederholt sich immer wieder mit derselben Wellenform, und alle Änderungen an diesem Muster erfolgen relativ langsam, und (b) der eigentliche Sample-and-Hold-Teil des ADC hat eine ausreichend hohe Bandbreite, auch wenn Sie nur erhalten Sie alle paar Zyklen des Signals einen Abtastwert, und (c) der genaue Abtastzeitpunkt des Abtastens und Haltens trifft nicht immer denselben Punkt auf dem sich wiederholenden Signal, sondern driftet daran entlang und trifft schließlich auf die höchste Spitze und später das tiefste Tal des Signals. (Oft passiert dieses Driften, ohne dass Sie etwas tun müssen; aber um zu garantieren, dass es immer funktioniert, müssen Sie möglicherweise absenkenIhrer Abtastrate bei einigen Signalen). Digitale Hochgeschwindigkeits-Oszilloskope verwenden häufig diese Undersampling-Technik, um erstaunlich hochfrequente Signale zu untersuchen.

  • Verwenden Sie den Maximum-Peak-Detektor und den Minimum-Tal-Detektor, um die maximalen und minimalen Spannungen an den Abtastkondensatoren lange genug zu halten, damit Sie sie abtasten können. Verwenden Sie entweder einen Widerstand an jedem Kondensator mit einer ausreichend langen RC-Zeitkonstante, damit die Spannungsänderung vom tatsächlichen Maximum zu Ihrem ADC-Sample unbedeutend ist, oder verwenden Sie einen Transistor an jedem Kondensator, um die Spannung unmittelbar nach dem Abtasten zurückzusetzen. Wenn Sie den Diodenspannungsabfall in Software abschätzen können, ist die einfachste Hardware ein Dioden-Kondensator-Widerstand-Spitzendetektor und ein Dioden-Kondensator-Widerstand-Taldetektor ... aber die Verwendung eines Operationsverstärker-Präzisionsspitzendetektors anstelle einer einzelnen Diode kann einfacher sein, als zu versuchen, den Diodenspannungsabfall abzuschätzen.

  • Verwenden Sie einen DC-Sperrkondensator, gefolgt von einer Diode an Masse (um die Mindestspannung auf 0 zu klemmen) und einer Diode an einem Spitzenerkennungs-Abtastkondensator. Die Spannung an diesem Kondensator gibt Ihnen direkt die Spitze-zu-Spitze-Spannung. Schätzen und kompensieren Sie die Diodenspannungsabfälle irgendwie in der Software oder verwenden Sie Operationsverstärker, um sie in der Hardware zu kompensieren, ähnlich wie beim Spitzendetektor.

  • Verwenden Sie einen Frequenzmischer (analoger Multiplikator), um Hochfrequenzsignale auf eine einfacher zu handhabende Frequenz zu verschieben, die weit innerhalb der Fähigkeiten Ihres ADC liegt. (Wie beim Undersampling wird davon ausgegangen, dass sich das Signal immer wieder mit derselben Wellenform wiederholt und Änderungen an diesem Muster relativ langsam erfolgen).

Ich bin mir nicht sicher, warum Sie einen Präzisionsgleichrichter wollen. Ich nehme an, Sie meinten wirklich "Präzisionsspitzendetektor" (was zugegebenermaßen fast dieselbe Schaltung ist).

Ein RC-Filter mit einer langen RC-Zeitkonstante gibt Ihnen die durchschnittliche Spannung des Signals. Wie pingswept sagt, ist es wahrscheinlich am besten, eine feste Grenzfrequenz (für die Spitzenerkennung, Talerkennung und die Durchschnittserkennung) zu verwenden, um die hohen Frequenzen mit analogen Schaltungen und die niedrigen Frequenzen in der Software zu behandeln.

Solange die MCU die höchste Spitzenspannung und die niedrigste Talspannung abtastet, sollten Sie auch die mittlere Spannung auf halbem Weg zwischen den beiden melden – dies ist nicht immer die gleiche wie die wahre Durchschnittsspannung des Signals.

Ich denke, Sie gehen richtig vor, wenn Sie das Signal aufteilen und jeden Parameter separat messen.

Zuerst messen Sie die DC-Offsetspannung, indem Sie das Signal tiefpassfiltern und den Ausgang in den A/D einspeisen. Da das Signal über einen so großen Frequenzbereich schwingt, benötigen Sie entweder einen Filter mit einer adaptiven Grenzfrequenz oder Sie müssen eine lange Verzögerung bei Ihren Messwerten in Kauf nehmen. Möglicherweise können Sie etwas Cleveres tun, indem Sie das Signal in der Hardware nur so weit filtern, dass es auf etwa 20 kHz herunterkommt. dann könnten Sie den Durchschnittswert in der Software berechnen.

(Ich glaube nicht, dass es Ihre Reaktion beschleunigt, aber es könnte einfacher sein, als einen Filter mit einer sich ändernden Grenzfrequenz zu bauen, was nicht trivial ist.)

Dann gehst du nach der Amplitude. Sie pegeln die Eingangsspannung um, richten sie gleich und skalieren sie so, dass sie den Bereich des Atmega16 A/D abdeckt. Sie könnten dies mit zwei schnellen Operationsverstärkern und einem Gleichrichter tun. Ich denke, die Reihenfolge ist wichtig, oder Sie müssen zumindest darauf achten, auf welche Spannung Ihr Gleichrichter bezogen ist.

Was ist mit der Erkennung der negativen Spitze anstelle des DC-Offsets, da dies nicht durch Probleme mit dem Frequenzgang kompliziert würde? Wären die TL072 schnell genug, um Skalen- und Pegelverschiebungen zu korrigieren?
Die Erkennung negativer Spitzen könnte genauso gut funktionieren. Ich würde mir ein wenig Sorgen um die Einschaltzeit der Diode machen - bei 1 MHz benötigt eine große Diode mehrere Zyklen zum Einschalten. Sie sollten natürlich eine kleine Diode verwenden, aber ich bin mir nicht sicher, wie schnell sie werden. Wenn Sie die Nanosekunden einschalten können, was meiner Meinung nach für ein Signal mit geringer Leistung wahrscheinlich ist, sollte es gut funktionieren.
In Bezug auf die Geschwindigkeit von TL072 denke ich, dass sie geringfügig schnell genug sein werden. Ihr Verstärkungsbandbreitenprodukt (GBW) ist bei 3 MHz aufgeführt, was bedeutet, dass Sie bei 1 MHz nur eine Verstärkung von 3 erhalten können. Sie benötigen wahrscheinlich nur eine Verstärkung von 2, also sind Sie theoretisch in Ordnung. Wenn Sie leicht etwas bekommen können, probiere ich vielleicht etwas schnelleres aus, wie einen LT1056 (6,5 MHz GBW). Aber wenn dies nur zum Spaß oder zur Schule oder was auch immer ist, sollten die TL072 funktionieren.
Ich habe ein paar verschiedene Signaldioden, also mache ich einige Tests in Bezug auf die Geschwindigkeit.
Der LT1056 scheint schwer zu finden und ziemlich teuer zu sein, ich glaube, ich habe ein paar NE5534 ("typische" GBW von 10 MHz), die ich bei Bedarf verwenden kann, ansonsten werde ich wahrscheinlich einfach bei den TL072 bleiben, da das Projekt nicht nur für die Produktion gedacht ist Spaß.
Ich vermute, dass die TL072 in der Praxis gut funktionieren werden. Wenn Sie das Ding tatsächlich zum größten Teil zum Laufen bringen, können Sie die Operationsverstärker aufrüsten, um Ihre Leistung am oberen Ende zu verbessern.
Genau das, was ich dachte, werde ich auf dem Steckbrett testen, bevor ich mich zu irgendetwas verpflichte ...