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.
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? :-)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.