mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Phasenverschiebung messen


Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich möchte die Phasenverschiebung von zwei Sinusschwingungen
gleicher Frequenz (1000 Hz) und Amplitude messen.
Ich kenne den Spitzenwert dieser Spannung leider noch nicht, ich
weiß nur, dass es so um 0,6V liegen wird.

Dazu habe ich mir überlegt, die positiven Nulldurchgänge zu
detektieren und die Zeit mit einem Mikrocontroller zu messen.
Ich sehe dabei allerdings probleme mit der Auflösung.

Wäre es nicht besser, die beiden Signale zu überlagern (wobei eines
invertiert ist) und die resultierende Spannung zu messen?
Das müsste dann doch eine halbwegs stabile Gleichspannung werden, oder?
Wenn ja, dann dürfte die Verstärkung ja nicht mehr das Problem
sein.

Wie kann ich die werte einem MC übergeben, wenn die überlagerte
Spannung negativ ist? Mit dem ADC kann ich ja nur zwischen GND und VADC
messen.

Gruß,

Moritz Becker

PS Wie kann man sich hier eigentlich richtig anmelden?

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe gerade einen groben Denkfehler bemerkt.
Natürlich wird es bei der Überlagerung keine Gleichspannung,
aber die resultierende Spannung müsste proportional der Verschiebung
sein.

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
willst du nur die Zeit zwischen den Signalen oder auch die Spannung der
Signale messen?
Wenn es nur um die Flanken geht, könnte man die Spannungen einfach so
stark verstärken, dass man damit externe Interrupt "speisen" kann.
Wenn man einen Controller mit 2 Input-Capture-Eingängen benutzt, kann
man als Nebeneffekt noch beide Frequenzen/Periodendauern messen...
Überlagerte Wechselspannung erinnert mich an Korrelationsgrad-Messer.
Elektor oder Elrad hatten mal vor Jahren eine ziemlich simple Schaltung
mit ExOr-Gattern und Komparatoren...

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht nur um die Zeit zwischen den beiden Nulldurchgägnen.
Allerdings muss auch eine negative Verschiebung erkennbar bleiben.
Das mit den Interrupts war ja auch meine erste Idee, da es sich aber
um "minimale" Verschiebungen handelt, glaube ich, dass die analoge
Auswertung besser ist. Bis zu welcher Auflösung in ns kann man denn
mit einem MC arbeiten? Bei 20Mhz (Mega 48) dauert ein Zyklus 0,05ns??
Dann könnte man also mit ca. 0,1ns Auflösung arbeiten, wenn man die
Zyklen bis zum zweiten Interrupt zählt, vorrausgesetzt das Programm
arbeitet so schnell.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie währe denn sowas:

1. beide signale verstarken so das Rechtecksignale entstehen.
2. Logik erkennt erste pos Flanke & welche von beiden.
3. Dadurch wird ein Zähler mit zB 100Mhz wird gestartet.
4. Logik erkennt beide Signale pos.
5. Zähler wird gestoppt.

Jetzt hat der uC alle Zeit der welt den Zäler auszulesen.
und die "Richtung" des signales auszuwerten.
Den Zähler zu reseten und die Flankenerkennung wieder scharf zu machen

2-> Erinnert an Drehrichtungserkennung bei ink.Gebern

Wenn delta t allerdings über die gesamte phase erkannt werden soll muss
der zähler bei 100MHz schon 56 bit haben

Is nur mal so ne idee.....

Autor: karadur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo


ich habe das Problem einmal mit 2 Schmidt-Triggern und einem
d-Flip-Flop gelöst. Die Nulldurchgänge von einem Signal auf den
Takteingang die Anderen auf den D-Eingang. Die Breite des
Ausgangsignales ist dann proportional der Phasenschiebung.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag.
Grober Rechenfehler.
reichen eigentlich 3x8 bit
100E6/2000->5000
0xFFF->4095 -> 80% dT

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde beide Lösungen interessant!

Ich habe noch nie einen so schnellen Zähler benutzt und weiß
auch nicht welcher geeignet sein könnte. Ich brauche auf jedenfall
eine sehr hohe Auflösung und sollte mit 100%dT rechnen.
Gibt es 32Bit Zähler die mit 100Mhz laufen und bezahlbar sind?
Wie werden die angesteuert? Separate Leitungen für Start und Stop?
Der MC sollte das Messergebnis durch seine eigene Rechenzeit
möglichst wenig beeinflussen.

Wie genau ist die Lösung mit dem Flip-Flop? Hört sich auf jeden
fall einfacher an. Aber damit kann man doch nicht die Richtung
der Verschiebung erkennen, oder? Wenn ich das richtig verstanden
habe, dann startet ein bestimmter Nulldurchgang den Flip-Flop und
bei 0 Verschiebung wird er genau gleichzeitig wieder gestoppt.
Dann könnte im ungünstigsten Fall (durch Latenz im Flip-Flop) die
Verschiebung genau eine Periode sein. Ich kenne mich mit Analogtechnik
nicht so gut aus, aber gibt es Flip-Flops, die schnell genug sind,
für so etwas?

Gruß,

Moritz Becker

Autor: Detlef A (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die beiden Spannungen auf zwei schnelle Komparatoren geben: high, wenn
Sinus > 0V und low sonst. Dann beide Signale XORen:
Pulbreitenmodulierte Pulse der Wiederholfrequnz 1kHz. Wenn die Messung
nicht schnell sein soll: die Pulse tiefpaßfiltern und das Signal mit
ADC langsam wandeln. Sollte Auflösung im Bereich der Stufen des ADC
geben,also z.B. ca. 1° für 8Bit. Oder mit den Pulsen ne schnelle clock
gaten. Auflösung wird umso besser, je schneller die clock ist.

Cheers
Detlef

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Moritz

Welche auflösung ist denn Gewünscht ?
Um nicht schon wieder Rechenfehler zu produzieren mal langsam.
F-> 1khz -> 1 Halbwelle 0,5e-3 s
Takt 100e6 zeit 1/2000 -> 5000d->0x1388 impulse -> 14bit
auflösung 10ns;
!20MHz->50ns nicht 0,5

Vorschlag 14bit Counter 74LV4020.
Das ist noch ein billigheimer.
über 100MHZ dürfte die Luft dann schon dünn werden.

Das ist auch schon nicht mehr so hoppla hopp aufgebaut.

Abgesehen davon muss der rest der schaltung mit mindestens der selben
Genauigkeit arbeiten.

Wenn mal die schaltung steht kann man ja immer noch stufenweise
übertakten.
Hier würde ich mal einen IRQ auf das höchste bit setzen und dann
einfach jeweils den vollen Zähler zum jeweiligen Zählerendstand
addieren.
Sofern der Zähler das noch mitmacht.
Beim LV4020 ist bei 100MHz schluss.
und der gilt schon als "fast".

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem mit der Auflösung ist, dass ich nicht
genau weiß wie genau ich es brauche.
Das ganze soll mal ein günstiger (und damit nicht so genauer)
Massendurchflussmesser werden. (Coriolis-Massenddurchflussmesser)
Um zu überprüfen, ob es überhaupt geht, mit relativ "einfachen"
mitteln so etwas aufzubauen, brauche ich halt eine hohe Auflösung.
Ich habe leider kein Ozziloskop, mit dem ich die
Phasenverschiebung im Vorfeld untersuchen könnte.
Zum berrechnen fehlen mir einige Daten.

Mit dem 100MHz Zähler sollte es aber schon funktionieren.
Ich werde mir den 74LV4020 mal ansehen. 100MHz ist aber schon
nix mehr für Lochrasterplatinen, oder?

Vielen Dank für alle bisherigen Antworten!

Moritz Becker

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann den 74LV4020 leider nicht finden.
Ich finde zwar unter 4020 14Bit Zähler, jedoch nur bis 8MHz.
Wo kann ich den denn bekommen? (inkl. Datenblatt)

Gruß,

Moritz Becker

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat sich erledigt. Der 74HC4020 kann 100Mhz.

Autor: Rage (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
erstmal sorry, das ich diesen älteren thread wieder ausgrabe.
wie kann ich mit der flip-flop-schaltung eine positive oder negative
phasenverschiebung detektieren?

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde mich auch interessieren, hast du da eine Schaltung?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.