Forum: Digitale Signalverarbeitung / DSP / Machine Learning 1750 Hz Ton Auswertung mit TMS320VC5505


von Stephan (Gast)


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

von KoenntGehn (Gast)


Lesenswert?

IFFT?
AKF -> LDS ?

von So gehts (Gast)


Lesenswert?


von KoenntGehn (Gast)


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

von KoenntGehn (Gast)


Lesenswert?

Würde das funktionieren?

von Stephan (Gast)


Lesenswert?

Hi,

vielen Dank für die Hinweise. Ich werde es mit dem Goertzel-Algorithmus 
probieren.

Grüße
Stephan

von ./. (Gast)


Lesenswert?

Man könnte das auch dem FFT-Coprozessor überlassen.

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


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

von Christoph db1uq K. (christoph_kessler)


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"

von Detlef _a (Gast)


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

von Detlef _a (Gast)


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]));
}

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.