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.
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.
Kellenjb
Voltigieren