1750 Hz Ton Auswertung mit TMS320VC5505

Gast #2226239
Lesenswert?
• ▲
▼
Hi,

ich würde gerne mit meinem TMS320VC5505 einen 1750 Hz Ton auswerten.

Momentan habe ich mit dem DSP eine Audio Verzögerung von 200 ms + 
Hochpassfilter (600 Hz, 4. Ordnung)  realisiert und zusätzlich sollte 
ein GPIO Pin geschaltet werden, wenn sich im Audio Signal ein 1750 Hz 
Ton befindet.

Wie kann ich das am besten anstellen?

Bin für jeden Tipp dankbar.

Grüße
Stephan
Gast #2226272
Lesenswert?
• ▲
▼
Könnte man evtl. auch durch extreme Unterabtastung das Signal in das 
Basisband verschieben und dann "nur" die sehr langsame Spiegelfrequenz 
detektieren.
Im Extremfall wäre die ja grad bei f=0Hz (Gleichanteil).
(Firma: Raich Gerätebau & Entwicklung) #2229448
Lesenswert?
• ▲
▼
Ich hab so was für ein Rundsteuersignal-Messgerät gemacht. Die Frequenz 
war 121Hz bei wenigen Volt Amplitude aufmoduliert auf 230V 50Hz. Ging 
mit 2 hintereinandergeschalteten IIR Bandpassfiltern 2. Ordnung sehr gut 
und einfach. Eine gewisse Verzögerung fürs Einschwingen des Filters 
ergab sich allerdings auch daraus. Dieses Problem tritt aber auch bei 
einer FFT auf, weil du ja erst mal auf alle 2^n Abtastwerte warten 
musst, bis du mal anfangen kannst zu rechnen.

Grüsse
#2229463
Lesenswert?
• ▲
▼
Von Analog Devices gibt es eine ausführliche Application note zur 
Touchtone-Decodierung mittels Goertzel, auf deren Festkomma-DSP ADSP2100

auf die Schnelle habe ich nur ein ZIP-File MODTMF.ZIP gefunden:
http://www.analog.com/en/processors-dsp/adsp-21xx/content/21xx_applications_handbook_file_area/fca.html
"for the development of a multi-channel DTMF decoder using the ADSP-2100 
Family DSP"
Gast #2230768
Lesenswert?
• ▲
▼
>>>>>>>>>>>>>>>
Eine gewisse Verzögerung fürs Einschwingen des Filters
ergab sich allerdings auch daraus. Dieses Problem tritt aber auch bei
einer FFT auf, weil du ja erst mal auf alle 2^n Abtastwerte warten
musst, bis du mal anfangen kannst zu rechnen.
<<<<<<<<<<

Das ist immer so, ob bei IIR oder Goertzel oder FFT: Je schmalbandiger, 
umso länger das Einschwingen des Filters/Detektors.

Cheers
Detlef
Gast #2230791
Lesenswert?
• ▲
▼
Hier noch nen Goertzel in K&R C:

Der macht Goertzel auf der Frequenz 9/64 (wenn die Abtastfrequenz 1 
ist). Der Algorithmus nimmt 64 Abtastwerte, liefert also den gleichen 
Wert wie eine FFT der Länge 64 am 9. bin. Die Rechnung ist im relevanten 
Teil rein integer, die Umrechnung zum Schluss braucht allerdings float 
(aber ohne Sinus/cosinus Berechnung, das sind Konstanten). Der 
Algorithmus ist auch relativ einfach auf andere Frequenzen umrüstbar, 
siehe die Kommentare. Die Funktion 'winkel' ist 'atan2', also die 
Umrechnung von Imaginärteil/Realteil in den Winkel.

Nicht ganz schön und elegant, z.B. das Umkopieren der q0/q1 und die 
Rechnung am Schluß, aber geht.

/* ************************************************** */
uint16_t goertzel_9_64(int16_t r[],int32_t re[],int32_t im[])
/* ************************************************** */
{
// macht goertzel auf der Frequenz 9/64
// 2*cos(9/64*2*pi) = 1.26878
// 2202/8192= 0.26879
int32_t q0,q1,q2;
int16_t k;
q1=0l;
q2=0l;
for(k=0;k<64;k++){
 q0=q1+((q1*2202)>>13)-q2+r[k];
 q2=q1;
 q1=q0;
}

 q0=q1+((q1*2202)>>13)-q2;
 q2=q1;
 q1=q0;
 im[0]=(int32_t)(q2   *sin(2*M_PI*9/64.0));
 re[0]=(int32_t)(q1-q2*cos(2*M_PI*9/64.0));
return (winkel(im[0],re[0]));
}

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.