Forum: Mikrocontroller und Digitale Elektronik Frequenz + Phasenverschiebung bestimmen un per Controller auswerten


von wcip (Gast)


Lesenswert?

Hallo,
ich habe folgende Problemstellung und bin mir momentan nicht sicher 
welchen Loesungsweg ich waehlen soll.

Zwei identische analoge Signale die jeweils um 90 Grad Phasenverschoben 
sind muessen ausgewertet werden. Zu bestimmen sind die Frequenz und 
welches der beiden Signale vorauseilt. Die Frequenz wird zwischen 0 und 
maximal ca. 16khz liegen.

Im Moment habe ich einen Prototypen gebaut das auf einem AVR Atmega 
ueber einen Timer die Flanken des Signales in einem Intervall zaehlt und 
daraus die Frequenz bestimmt. An der Phasenverschiebung scheitere ich 
momentan noch. Frequenzen ueber ca. 11khz lassen sich mit meinem Ansatz 
leider nicht mehr bestimmen.

Desweiteren soll in einem spaeteren Schritt der Stromverbrauch der 
Schaltung moeglichstweiter optimiert werden.

Waere es sinnvoll die Bestimmung der Frequenz und der Phasenverschiebung 
von eigenen Bausteinen durchfuerhren zu lassen, insbesondere in 
anbetracht der Stromsparfunktionen, oder ist der Weg ueber den 
Controller und eine Softwareloesung der besserer? Welche bausteine 
waeren fuer mich dafuer am besten geeignet?

Danke im Voraus fuer eure Hilfe.

von Willi (Gast)


Lesenswert?

Die Frequenz reziprok zu ermitteln, dürfte per ICP1 kein Problem sein.
Da Du die Sinus-Signale sowieso in Rechteck umformen mußt, ist es auch 
kein Problem, mit der aktiven Flanke an ICP1 die positive oder negative 
Phase des anderen Signals per IO-Pin zu erfassen und damit die 
Phasenlage zu bestimmen.

Soll ich Dir das Programm eben einmal schreiben? :-)

von wcip (Gast)


Lesenswert?

Willi schrieb:
> Die Frequenz reziprok zu ermitteln, dürfte per ICP1 kein Problem sein.
> Da Du die Sinus-Signale sowieso in Rechteck umformen mußt, ist es auch

Im Moment habe ich einfach das Signal direkt an den entsprechenden Pin 
des Controllers gelegt was zu funktionieren scheint. Darf ich das so 
nicht machen?

> kein Problem, mit der aktiven Flanke an ICP1 die positive oder negative
> Phase des anderen Signals per IO-Pin zu erfassen und damit die
> Phasenlage zu bestimmen.
>
> Soll ich Dir das Programm eben einmal schreiben? :-)

Die Phasenlage zu bestimmen bereitet mir etwas Kopfzerbrechen. Mir ist 
nicht ganz klar mit was ich google fuettern muss um zum richtigen 
Ergebnis zu kommen. Das Programm schreiben kann ich schon selbst wenn 
ich das ganze algorithmisch verstanden habe.

von Willi (Gast)


Lesenswert?

wcip schrieb:
> Die Phasenlage zu bestimmen bereitet mir etwas Kopfzerbrechen.

Dein Referenzsignal erzeugt an einem Interrupteingang mit seiner 
positiven Flanke einen Interrupt. Die zugehörige Routine liest den 
Zustand des 2. Signals: '0' Pegel bedeutet, das Signal eilt nach; '1' 
Pegel heißt, das Signal eilt vor. Da, wie Du schreibst, der 
Phasenversatz immer 90° beträgt, ist das Timing völlig unkritisch.

Suche einfach hier im Forum nach reziproker Frequenzmessung; da gibt es 
eine Menge diverser Lösungen. ICP1 bietet sich besonders an, da der 
Timer1 über ein 16-bit Capture-Register verfügt und damit hohe 
Genauigkeit und hohe Auflösung selbst bei einer einzelnen Periode bei 
16kHz bietet.

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.