Ich habe 2 Sinuswellen mit einer Frequenz von 2 kHz gleichgerichtet und mit 50 kHz von zwei ADC-Kanälen (10 Bit) eines PIC18F26K22 abgetastet.
Ich möchte die Messung der Amplitude jedes Sinus und der Phasendifferenz untereinander finden. Ich könnte ZCD verwenden, um die Phasendifferenz zu erkennen und den Adc nur zum Abtasten der Amplitude verwenden, aber ich suchte nach einem intelligenteren und umfassenderen Ansatz.
Meine Frage ist, ob der uController die Rechenleistung hat und ob es möglich ist, eine Kurvenanpassung mit einem anderen uController durchzuführen, um diese beiden Parameter zu extrahieren. Einen ADC mit höherer Abtastrate und Auflösung zu bekommen, ist natürlich eine offene Möglichkeit.
Bearbeiten: Um meiner Frage einen Kontext / Rahmen zu geben, suche ich nach einer Impedanzmessung. Ich habe das Signal, das dem Spannungsabfall in der Impedanz entspricht, und ich habe ein anderes Signal, das der Stromerfassungsschaltung entspricht. Also muss ich beide abtasten, um jeweils eine Amplituden- und Phasendifferenz zu messen.
Ich habe keine Ahnung, warum Sie dieses Zeug wollen. Und Tony fragt und du antwortest nicht. Also werde ich Sie einfach wörtlich nehmen und darauf antworten.
Ein allgemeines Verfahren zum Auffinden der Phasendifferenz zwischen zwei identischen Signalen ist die Verwendung eines Korrelators. Dies funktioniert sogar für Sprache und Musik. Im digitalen Bereich korrelieren Sie sie einfach. Das lokale Maximum in der Korrelationsfunktion liegt bei der Zeitverzögerung . Wenn Sie ein Referenzsignal haben, können Sie auch mit diesem korrelieren. Die Korrelation ist auch kinderleicht. Sie können eine sehr einfache Routine dafür fast überall finden, wo Sie hinschauen. Eigentlich nur ein paar Zeilen Code.
Es gibt eine alte Arbeit aus dem Jahr 1963 mit dem Titel "The Quefrency Analysis of Time Series for Echoes: Cepstrum, Pseudo-autovariance, Cross-Cepstrum, and Saphe Cracking" von Bogert et al. Vielleicht finden Sie es auch lesenswert.
Sie können dies mit dem PIC tun, aber es wäre sehr hilfreich, mit der richtigen Hardware vor dem A/D zu beginnen. Die Signale zu korrigieren ist eine schlechte Idee. Das macht es schwieriger, sowohl die Amplitude als auch die Phase zu finden. AC-koppeln Sie die Signale und fügen Sie eine DC-Vorspannung von der Hälfte des A/D-Bereichs hinzu. Skalieren Sie es so, dass die maximale Amplitude nicht ganz die minimalen und maximalen Grenzen des A / D-Bereichs erreicht.
Sie können die beiden 50-kHz-Sample-Streams verwenden, um sowohl die Amplituden als auch die Phase zwischen den Signalen zu finden.
Wenn Sie wissen, dass beide Signale wirklich Sinussignale sind, kann die Amplitude aus der durchschnittlichen Differenz zum langfristigen Durchschnitt abgeleitet werden. Jedes Signal wird stark tiefpassgefiltert, um die DC-Komponente zu erhalten. Subtrahieren Sie jeden Messwert von dieser DC-Komponente, nehmen Sie dann den absoluten Wert davon und mitteln Sie diesen. Das Ergebnis ist proportional zur Amplitude. Auch dies funktioniert nur, wenn Sie wissen, dass es sich bei den Signalen um Sinussignale handelt (niedriger Oberwellengehalt).
Um die Phasenverschiebung zu finden, detektieren Sie die Nulldurchgänge. Suchen Sie nach dem ersten positiven Messwert, nachdem Sie beispielsweise eine Mindestanzahl negativer Messwerte hintereinander gesehen haben. Berechnen Sie bei jedem Zyklus eines der Signale, wie viele Zyklen zurück liegen, als das andere zuletzt einen Nulldurchgang hatte. Es wird wahrscheinlich etwas Rauschen auf diesem Signal geben, nicht zuletzt Quantisierungsrauschen. Bei einer Abtastrate von 50 kHz haben Sie nur 25 Abtastungen pro Zyklus. Tiefpassfiltern Sie diese 0-24-Zahl mit ein paar zusätzlichen Bits unter dem Binärkomma. Es ist hilfreich, wenn die Abtastrate kein genaues Vielfaches der interessierenden Frequenz ist.
Wenn das Obige immer noch zu viel Quantisierungsrauschen ergibt, dann interpolieren Sie zwischen den zwei Abtastwerten, wo der Nulldurchgang auftrat, um ihn genauer zu bestimmen. Dies dauert mehr Rechenzyklen.
Alles in allem würde ich dies mit einem der 16-Bit-PICs oder dsPICs mit einem 12-Bit-A/D tun. Der 18F26K22 scheint dafür eine seltsame Wahl zu sein. Ein 16-Bit-Teil würde eine Tiefpassfilterung der eingehenden Streams ermöglichen, bevor irgendetwas anderes mit ihnen gemacht wird, und der 12-Bit-A/D gibt Ihnen eine bessere Abtastauflösung, um zu beginnen. Dies sollte eine echte RMS-Messung ermöglichen (obwohl dies möglicherweise nicht erforderlich ist) und mehr Zyklen ermöglichen, um die Nulldurchgänge besser zu finden, was bessere Phasenmessungen ermöglicht.
Lesen Sie mehr: http://www.lenntech.com/applications/ultrapure/conductivity/water-conductivity.htm#ixzz4KzOtwJlE
(Trivia: Ultrareines Wasser ist aufgrund des Fehlens gesunder gelöster Mineralien keine gesunde Trinkflüssigkeit.)
Reinstwasser 5,5 · 10-6 S/m
Lesen Sie mehr: http://www.lenntech.com/applications/ultrapure/conductivity/water-conductivity.htm#ixzz4KzOEKC3V
Typischerweise messen Präzisions-LCR-Messgeräte die Impedanz unter Verwendung einer Konstantstrom-Frequenzquelle mit automatischer Bereichswahl bei einer festen Frequenz wie 120 Hz, 1 kHz, 100 kHz, 1 MHz und messen dann direkt die Spannung, um den Widerstand und die reaktiven Komponenten und andere Parameter zu erhalten.
Präzise, hochempfindliche Instrumentendesigns verwenden eine duale PLL, um das Signal-Rausch-Verhältnis (SNR) zu verbessern, und somit ist eine Auflösung von 10 ppm möglich { was ich in Wirbelstromdesigns zur Erkennung von metallurgischen Fehlern erreicht habe} relativ zu normalisierten Werten (Auto-Null )
Dies ist weder eine Lösung noch ein Kommentar, sondern eine Referenzinformation, um einen besseren Instrumentendesignplan oder eine bessere Frage auszuwählen. Elektrodengröße und -materialien sind ebenfalls ein wichtiger Aspekt dieses Designs, da Korrosion die Wiederholbarkeit der Probenahmetests beeinflussen kann.
Ich lasse Sie entscheiden, ob dies hilfreich ist.
Da die Leitfähigkeit von Wasser von der Wassertemperatur abhängt, kann diese mit dem Temperatursensor IC für die Lookup-Table-Korrektur bei 20 °C gemessen werden.
Die Dielektrizitätskonstante von Wasser beträgt 80 +/-5 und die Elektrodenkapazität hängt von der Oberfläche und dem Abstand der Elektroden ab. Damit dies effektiv funktioniert, möchten wir C von Wasser viel kleiner als einen präzisen C-Wert im Kreislauf machen, um Cwater effektiv zu ignorieren und nur die Leitfähigkeit in Siemens/Meter zu messen. Daher sind kurze Elektroden mit einem präzisen Abstand erforderlich.
Einigen Forschern ist auch bekannt (Zitieren erforderlich), dass kontaminiertes Wasser innerhalb von 1 ms mit der Ionisierung beginnen und die Elektrodenoberfläche mit Gleichstrom beschichten kann, wenn mehr als 1,5 V, also eine Frequenz >> 1 kHz erwünscht ist.
Das hier vorgeschlagene Verfahren nutzt den Widerstand von Wasser, um einen Präzisionskondensator mit geringem Leckstrom für einen Relaxationsoszillator aufzuladen. Das Prinzip aller Schmitt-Trigger-Designs besteht darin, Rauscheingänge zu ignorieren, aber in diesem Fall soll es einen Takt mit negativer Rückkopplung erzeugen, und die eingebaute Schwelle von 1/3 bis 2/3 hat eine große Toleranz, also einen Präzisionskomparator mit R Eine Verhältnisrückkopplung von 3:1 wird bevorzugt, wobei die Genauigkeit von der Toleranz und den Werten des Widerstandsverhältnisses abhängt.
T = RC wird normalerweise bei ~ 60% einer 5-V-Halbzyklus-Dreieckswelle durchgeführt.
50 Ohm Ausgang ist die interne Impedanz von HCxx-Gattern bei 5 V ca. wird zur Verdeutlichung angezeigt.
Sie können die FFT auch auf beide Signale anwenden und die Amplitude und Phase mit der Komponente mit größerer Amplitude extrahieren.
Für die Phase könnten Sie auch die Nulldurchgangserkennung durchführen und nicht das gesamte Signal an die Kurve anpassen, sondern nur nahe der Null, wo es fast linear ist (sin (Theta) ist ungefähr Theta für kleines Theta).
jms
Tony Stewart EE75
Tony Stewart EE75
mkeith
Impedanz
Impedanz
schweber