Forum: Mikrocontroller und Digitale Elektronik Differenzzeitmessung


von Marc T. (Gast)


Lesenswert?

Hallo,
ich möchte gerne die Differenzzeit zwischen 2 Signalen messen!
Genauer! Ich habe eine Nulldurchgangserkennung mit einem Komparator
realisiert der mir halt beim Nulldurchgang der Spannung einen
Rechteckimpuls erzeugt der durch den Folgenden Nulldurchgang beendet
wird. Eine zweite Schaltung macht dieses für den Strom.
Nun möchte ich moglichst einfach die Zeit zwischen den Signalen messen
um auf die Belastung ( Ohmsch,Induktiv,Kapazitiv ) zu schliessen und
diese auch über an anderer Stelle gemessenen Werte berechnen zu
können.
Mit anderen Worten ich möchte den Phasenwinkel messen.

von The Daz (Gast)


Lesenswert?

Hmm, kleiner Taktgenerator (z.B. NE555) an nen Zaehler anschliessen und
dessen Ausgabe auf nem 7-Segment Display anzeigen. Allerdings kannst du
kapazitive von Induktiven lasten nicht wirklich unterscheiden, weil du
t=0 nicht kennst und damit nicht weisst, ob der Strom der Spannung
voraus- oder nacheilt.

von johnny.m (Gast)


Lesenswert?

Wenns nur um den Betrag der Phasenverschiebung geht, dann die beiden
Rechtecksignale mit einem Exklusiv-ODER verknüpfen. Du bekommst dann am
Ausgang vom EXOR einen Impuls, wenn die beiden Signale nicht gleich sind
(also für die Zeit zwischen Spannungs- und Stromnulldurchgang,
unabhängig von der Reihenfolge). Die Länge dieses Impulses entspricht
der Phasenverschiebung. Die lässt sich dann leicht mit einem Timer (mit
einem kleinen µC mit Input Capture oder eben einem diskreten Zähler)
erfassen und ausgeben.

von Marc T. (Gast)


Lesenswert?

Die ganze Geschichte soll mit einem µC realisiert werden!
Doch das müste eigentlich gehen wenn ich die Spannung als 1.Trigger
nehme egal zu welchem zeitpunkt dann kann bei Kapazitiver Belastung
erst 270° später eine Steigende Flanke kommen und bei induktiver
Belastung kommt spätestens 90° später eine steigende Flanke das müsste
doch zu unterscheiden sein.

von The Daz (Gast)


Lesenswert?

Ok, solange du nur +/- 90 Grad messen koennen willst, ist das ok. Dann
nimmst du einen uC und schliesst die beiden Komparatoren an jeweils
einen interrupt Eingang an. Wenns nicht extrem genau sein soll, reicht
beim AVR der interne Takt als Zeitreferenz. Bleibt nur noch das LCD-
oder 7-Segment Display.

von Marc T. (Gast)


Lesenswert?

Wie ist das mit input capture da ist doch die Timerfunktion schon
integriert oder?

von johnny.m (Gast)


Lesenswert?

Mit meinem Vorschlag könntest Du das Vorzeichen übrigens auch ermitteln,
indem Du das Spannungssignal an einen weiteren Pin des µC führst und bei
der steigenden Flanke des EXOR-Ausgangs den Zustand sicherst und bei der
fallenden Flanke ebenfalls. Dann die beiden Werten wieder
EXOR-verknüpfen. Ist das Ergebnis 1, dann eilt der Strom nach, ist es
0, dann eilt er vor (Wenn ich nichts übersehen habe...)

Überlegung: Wenn die steigende Flanke auftritt (weil entweder der Strom
durch Null gegangen ist oder die Spannung) registriert der µC durch den
Capture den Impuls, sichert einen Timerwert und gleichzeitig den
Zustand des Spannungssignals. Wenn dann die fallende Flanke kommt, wird
der zweite Capture-Wert gesichert und wiederum der Zustand des
Spannungssignals. Hat das Spannungssignal in der Zwischenzeit seinen
Zustand geändert (also ist die Spannung durch null gegangen), dann
bedeutet das, dass der Strom noch nicht durch null gegangen ist und
demzufolge nacheilt. In dem Fall ergibt eine EXOR-Verknüpfung des
Spannungssignals mit dem ersten Wert eine '1', andernfalls (wenn der
Strom voreilt) eine '0'. Da bei induktiven und kapazitiven Lasten die
Phasenverschiebungen im Bereich +-90° liegen, müsste das so gehen.

Problematisch ist bei der Sache das Timing und damit die Auflösung, um
auch kleinere Verschiebungen erfassen zu können. Wenn Du eine
einigermaßen vernünftige Auflösung erreichen willst, ist es ein klarer
Fall für Assembler, da bei einer Interrupt-Steuerung sonst durch den
Compiler u.U. zu viel Overhead durch das Sichern von Registern beim
Einsprung in die ISR entsteht.

Mit externen Interrupts wird das ganze möglicherweise noch ungenauer,
weil man erst verzögert in der ISR den Timer bearbeitet. Mit Capture
benötigt man im Prinzip nur einen Interrupt, dessen Handler man in
Assembler dann auch sinnigerweise direkt in die Vektortabelle schreibt
(im Falle der Verwendung eines AVR natürlich), um die drei Taktzyklen
für den Sprung zu vermeiden. Außerdem sichert das Capture-Ereignis
verzögerungsfrei den Timerwert bei Auftreten der Flanke.

von Marc T. (Gast)


Lesenswert?

Danke für eure Vorschläge mal schaun wie ich es umsetze

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.