hi leute, vielleicht könnt ihr mir weiterhelfen :-) ich möchte mit meinem Atmel ARM7 (AT91SAM7S64) einen FIR filter zur erkennung von Tönen realisieren. Im speziellen gehts mir darum einen Ton mit 1750Hz zu erkennen. Soweit so gut. Hardware, C-Code für den FIR filter, ist soweit verständlich. allerdings die mathematik dahinter und die einbindung kapier ich nicht so ganz, darum weiß ich auch nicht so recht was nach so einem FIR filter für werte rauskommen. ich hab jetzt mal mit einem Programm einen C code für einen Bandpass mit 200Taps (geht das mit dem ARM7 noch? hab da keinen bezug dazu was ich da an rechenleistung benötige...) berechnet. Sieht in der Theorie soweit gut aus. Muss ich da jetzt nach jedem mal samplen des AD-Wandlers die filterfunktion aufrufen und den einen gesampelten wert reinschieben? oder wie genau funktioniert das dann...? am ausgang des filters würde ich wahrscheinlich die werte rausbekommen welche ich auch rausbekommen würde wenn das filter analog aufgebaut wäre... nur wie hilft mir das in der tonerkennung? ich muss ja dann sozusagen festellen das hier ein sinus dann anliegt... sollte dann auch noch funktionieren wenn störungen im signal sind und der ton relativ leise ist, darum ein sehr schmaler bandpass... vielleicht kann mir wer weiterhelfen! :-) danke st0ne achja: FFT ist mir zu grob, da ich andere frequenzen auch noch erkennen möchte...
Was willst du nun, den Ton oder "andere Frequenzen"? Prinzipiell würde ich FIR-Filter wenn es Performance-kritisch ist eher auf nem DSP mit einer MAC einsetzen als auf einem ARM7. Hier wäre eher ein IIR mit dem ihm eigenen Nachteilen angebracht.
vorerst mal einen ton, eventuell dann auch 2 verschiedene töne erkennen... DSP hab ich zu wenig erfahrung damit... ist ja auch nicht zeitkritisch, also muss nicht echtzeit sein, wenn er 200ms braucht dafür ist das auch ok, falls ers in der zeit überhaupt schafft... ;-)
Guckst du z.B. hier pdfserv.maxim-ic.com/en/an/AN3386.pdf oder suchst du nach Goertzel.
http://www.embedded.com/9900722?_requestid=574731 The Goertzel Algorithm eine Art Kochrezept, es gibt aber auch C-code dazu
Oder halt einen Notch-Filter verwenden ... halt nur invers.
danke für die tollen links! der goertzel algorythmus wird mir da sicher weiterhelfen, da ich sowieso vor hatte dtmf auch noch zu dekodieren, werde das morgen gleich mal testen! sourcecode werde ich dann nach erfolgreicher funktion natürlich posten, dann haben andere auch was davon :-) gruß st0ne
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.