Datum: 26.11.2006 16:25
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!
Datum: 26.11.2006 21:00
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.
Datum: 27.11.2006 10:18
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...
Datum: 27.11.2006 17:50
> 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.
Datum: 06.03.2007 16:17
weisst jemand mit welchem Parameterschätzung Algorithmus ich ein bestimmte frequenz detektieren kann?danke im vorraus.
Datum: 16.04.2008 10:41
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?
Datum: 16.04.2008 12:11
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
Datum: 16.04.2008 16:04
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.
Datum: 23.04.2008 14:30
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.
Datum: 24.04.2008 14:22
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.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos verwenden, Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel