Hallo! Hat schon mal jemand versucht mit einem AVR einen Goertzel-Algorithmus zu implementieren (in ASM oder C), wie er von einem DTFM-Demodulator verwendet wird? Ich möchte aus einer Folge von Samples des A/D-Wandlers den 50Hz-Brummton-Anteil nach Amplitude herausrechnen und damit Näherungssensor realisieren. (Metallplatte + AC-gekoppelter Darlington-Vorverstärker => A/D-Wandler). Leider hab ich im Internet viele Dokumente gefunden, die den Algorithmus als solches beschreiben, aber keine vernünftige Implementierung. Danke schonmal im voraus!
Um den Brumton herauszurechnen brauchst Du keinen Goertzel-Algorithmus. Einen gleitenden Mittelwert über 20ms reicht. Damit wird der 50 Hz Ton exakt weggemittelt. So wird das üblicherweise in der Meßtechnik gemacht.
Ein gleitener Mittelwert ist doch nichts anderes als ein FIR-Tiefpassfilter. In Abhängigkeit der Abtastrate werden die 50 Hz (und alle höhren Frequenzen eben auch) mehr oder weniger gedämpft - DAS ist ja in der Regel eben nicht das was man will. IIR-Filter als Bandsperre kann eine Lösung sein bzw. wenn unter 50 Hz nichts passiert, einfach einen Hochpass. Goertzel ist im Prinzip ja ne Bandpass...
> In Abhängigkeit der Abtastrate werden die 50 Hz (und > alle höhren Frequenzen eben auch) mehr oder weniger gedämpft - DAS ist > ja in der Regel eben nicht das was man will. Doch, dass ist in der Regel genau das was man will. Wenn man einen gleitenden Mittelwertfilter als FIR-Filter analysiert und die Übertragungsfunktion betrachtet, sieht man das sie bei 50 Hz exakt Mull ist. Für die oben genannte Anwendung zu Filterung des Signals eines Näherungssensors dürfte dieses Verfahren ausreichend sein, wenn man keine Reaktionszeit schneller als 50ms fordert.
weisst jemand mit welchem Parameterschätzung Algorithmus ich ein bestimmte frequenz detektieren kann?danke im vorraus.
Ich kram den Thread nochmal hervor ;) Hab nämlich ne Frage zum Algorithmus die anscheined nirgends erwähnung findet (zu leicht??) und zwar, muß man die Meßwerte der A/D Wandlung irgenwie transformieren? Oder kann ich einfach den Wert des ADC Wandlers des AVRs in den Algorithmus geben und gut ist?
Ich vermute, der muß in eine "signed" Festkommazahl umgewandelt werden. ich meine das geht mit zweimal decrementieren des oberen Byte der 10 Bit vom ADC: $03FF -> $01FF = +511, $0000 -> $FE00 = -512
Naja das ich das ganze irgenwei in einen "anderen" Datentyp qutsche hab ich mir schon gedacht aber so ganz klar ist mir nicht ob das reicht, oder ob ich das ganze auf z.B. ein -1 .. 1 Intervall abbilden muss. Mein "Plan" ist, ich möchte so eine Aussteuerungsanzeige wie bei Winamp aber nur für eine Frequenz. Daher wollte ich das Audiosignal abtasten und mit dem Goertzel Algorithmus die Ausstuerhöhe berechnen.
So, das hab ich jezt soweit verstanden habe nurnoch ein "Problem". Jezt habe ich ja das Ergebnis nach Realteil ( = Amplitude??) und Imaginärteil (Phase). Muß ich jezt mit wurzel(re² + im²) noch rumrechnen für eine Aussteuerung al'a WinAmp? Oder reicht mir da im Prinzip der Absolutwert des Realteils? So ganz steig ich da leider jezt nicht durch, bei den ganzen DTMF Beispielen wird ja einfach nur geguckt ob das Ergebnis > einem Wert ist, ich würde aber halt gerne irgenwie ne Beziehung Wert <--> Aussteuerung herstellen können.
Achja und noch eine Sache die mich beschäftigt: Welchen Wertebereich nehmen Q1 und Q2 maximal an? kann man das berechnen? Im Sourcecodebeispiel wurde das ja mit 16bit gelöst, in meinen Versuchen mit einem PC Programm kommen aber deutlich werte > 16bit vor.
Hallo, der Tread ist zwar nichtmehr aktiv, eventuell kann trotzdem jemand helfen. Ich wollte mit Hilfe des Goertzel-Algo einen Amplituden und Phasenmessung realisieren. Nun scheitere ich an der Phase, warum ist mir nicht klar. Im abgehängten Excel (Open Office) ist mal ein Beispiel hinterlegt. Der Betrag wird nahezu exakt berechnet, die Phase ist schlichtweg flasch und variiert über die Testfrequenz. Eventuell kann mich da jemand auf den richtigen Weg führen. Grüße Marcel ps: bisher habe ich die unter http://www.answers.com/topic/goertzel-algorithm genannten Quellen durch / genutzt.
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.