mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Goertzel-Algorithmus


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Klaus B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: sati (Gast)
Datum:

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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beitrag "Wo Welchen DTMF Decoder"

Goertzel Algo fuer DTMF

Gruss Helmi

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marcel W. (gemini2k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

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.