Forum: Digitale Signalverarbeitung / DSP / Machine Learning Goertzel-Algorithmus


von Andy (Gast)


Lesenswert?

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!

von Klaus B (Gast)


Lesenswert?


von ajax (Gast)


Lesenswert?

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.

von Björn (Gast)


Lesenswert?

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...

von ajax (Gast)


Lesenswert?

> 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.

von sati (Gast)


Lesenswert?

weisst jemand mit welchem  Parameterschätzung Algorithmus ich ein 
bestimmte frequenz detektieren kann?danke im vorraus.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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?

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Helmut L. (helmi1)


Lesenswert?

Beitrag "Wo Welchen DTMF Decoder"

Goertzel Algo fuer DTMF

Gruss Helmi

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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.

von Marcel W. (gemini2k)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.