Hallo zusammen,
ich habe nun den Görtzel Algo am laufen und funzt wunderbar, nur ist mir
das noch etwas zu langsam.
Vielmehr die Relation von Zeitintervall zu Frequenzgenauigkeit ist ja
beim Görtzel das Problem.
Gibt es da noch eine Möglichkeit die Tonerkennung schneller zu machen?
Ohne das die Frequenztolerenz größer wird?
Z.B. Ich habe eine Sampling Frequenz von 1KHz und erkenne einen Ton mit
123 Hz in ca. 163 ms. Dann ist meine Frequenztoleranz auf +/- 6.1Hz
genau.
Es liegen somit 20 Perioden der Frequenz in einem Zeitintervall.
Ich habe schon an die Idee gedacht, den Görtzel Algo zwei mal
zeitversetzt laufen zu lassen, dann sind es nur noch 81.5 ms bis zum
Update.
Oder Vorfiltern?
Idee?
Gruß Sascha
Hallo,
ja klar, ist aber leider mit viel anderen Störsignalen verbunden.
Sonst müsste man mit einem IIR Filter die Frequenz erst herausfiltern.
Das geht mit einem Filter 7. Ordnung dann so gut, dass man einen sehr
schnellen (Kurzen) Goertzel verwenden kann.
Die Kreuzkorrelation will ich nicht anwenden, da kann es auch zu
Problemen kommen.
Ebenso der Teager-Kaiser Energy Operator verhält sich auch etwas
schwierig bei Stösignalen.
Muss mal nach dem Sliding Gortzel Algo suchen....
Gruß Sascha
Bei DER ungünstigen Relation von Taktfrequenz und Zielfrequenz brauchst
Du ein unsymmetrisches Filter mit händisch optimierten Koeffizienten und
einer nichtgranularen Fensterung über die gewünschte Persiode, also
Window in Window.
Was soll das eigentlich für ein lustiger Ton sein, mit 123 Hz und auch
noch 100 Cent Toleranz? Sollten das gfs 123,5 sein?
Sascha schrieb:> Gibt es da noch eine Möglichkeit die Tonerkennung schneller zu machen?> Ohne das die Frequenztolerenz größer wird?
Nein, es gibt mathematische Grenzen an die man stößt. Je schmalbandiger
ein Filter desto kleiner die maximale Modulationsfrequenz, mal ganz
salopp ausgedrückt. Wenn Du also die Seitenbänder bei plusminus 6Hz
abschneidest dann kannst Du nur noch Amplitudenänderungen (ein/aus) von
6Hz und weniger erkennen.
Das kann man auch schön beobachten (hören) wenn man z.B. CW mit einem
Kurzwellenempfänger hört bei dem man die Bandbreite extrem schmal
einstellen kann, je schmaler desto verwaschener die Übergänge zwischen
Ton da / Ton nicht da, bis hin zu dem Punkt an dem man bei einem
schnellen Geber es nicht mehr sinnvoll mitschreiben kann.
Hallo,
@Bernd:
ja wenn der Filter z.B. auf Basis eines IIR Filters realisiert wird,
hat er eine sehr große Ein- und Ausschwingzeit. Dann wird die Sache
recht verschwommen.
@Jürgen:
Nein es soll ein CTCSS Subtone Encoder und Decoder geben für eine
Relaisstation auf 2m AFU. Ich habe mir da schon existierende Module
angesehen bin aber nicht davon begeistert.
Die Chipsätze die schnell sind machen es mit einer schnellen und
somit ungenauen Vorhersage. Sind natürlich dann auch etwas Noise
empfindlicher.
Gruß Sascha
PS. ich realisiere das in Floating Point gerade alles auf einem
ATxmega8E5 in Assembler natürlich Handoptimiert. Schnell genug
ist das Ding ja und hat dazu noch einen 12 Bit ADC und 12 Bit DAC.
Der Goertzel ist nicht zu "langsam", sondern die Latenz ist zu hoch.
Ich denke Goertzel mehrfach zeitversetzt ist eine gute Lösung, doch
davor noch eine Fensterfunktion damit die "DFT für eine Frequenzspalte"
nicht durch die (volatile) Diskontinuität im Zeitbereich des
abgeschnittenen Signals vom S/N her unnötig verschlechtert wird, also um
spektrales Aliasing (fehltriggern im Zeitbereich) zu reduzieren.
Die Fensterfunktion erhöht natürlich die Frequenztoleranz, je nach Art,
um das 2-3 fache.
Der aktuelle S/N bestimmt dann "wie früh" man das Signal erkennen kann.
Hallo,
also wenn die Frequenztoleranz größer wird, kann ich den Algo ja auch
mit weniger Samples durchlaufen lassen.
Habe aber mein Problem schon gelöst, benutze einen digitalen Resonator
mit cyclischer dämpfung. In etwa so wie man das analog in den 70Jahren
mit der OP-Schaltung gemacht hat. Geht superschnell und hat bei 123 Hz
eine Frequenztoleranz von +/- 2 Hz mit einer delay Zeit von ca. 42ms.
Göertzel ist zwar gut und recht, aber eher ein schlechter Kompromiss.
Gruß Sascha
Sascha schrieb:> digitalen Resonator> mit cyclischer dämpfung
wie muss man sich das vorstellen?
das erinnert mich eher an ein pendelaudion? kurz unter der
anschwingschwelle
aber programmtechnisch kann ich mirr das nicht vorastellen.
Du baust also einen syntesizer(digitaler oszilator) mischt dessen
rückführung mit dem signal und klaust dem regelmäßig amplitude, die zeit
bis zum erreichen der Schaltschwelle ist das Kriterium für die
Anwesenheit des Tones?
????
Namaste
Sascha schrieb:> Geht superschnell und hat bei 123 Hz> eine Frequenztoleranz von +/- 2 Hz mit einer delay Zeit von ca. 42ms
Nur 4 Perioden um 123Hz von 125Hz zu unterscheiden?
Das kannst Du Deiner Großmutter erzählen.
Wie bereits gesagt: Entweder breitbandig und schnell oder schmalbandig
und langsam. Beides zusammen ist eine mathematische Unmöglichkeit.
Hallo, ha das glaubt ihr mir nicht, aber das geht, vorsicht man kann die
Ansprechschwelle adaptiv zum Power des Eingangssignal legen, d.h. bei
2Hz Differenz reichen die -6dB völlig aus. BW bewertet auf -6dB +/-2Hz.
Dann würden mir sogar im extremfall sogar nur 2 Perioden mit dieser
Methode ausreichen, dann würde die Frequenztoleranz deutlich gößer. Die
Samplefrequenz bestimmt hier mehr die Frequenzgenauigkeit.
Nur Phasendrehung verkraftet meine Methode nicht.
Ich könnte diese Methode auch benutzen um sehr schnelles PSK zu
detektieren.
Weil bei jeder Phasendrehung der Resonator auf null zusammenfällt.
Wenn mit einem Vor-Filter (Bandpass) gearbeitet wird darf er kein Ein-
und Ausswingproblem haben, das verfälscht die Sache. D.h. kein
IIR-Filter nur FIR-Filter verwenden.
Gruß Sascha
Sascha bitte sei so lieb und lass uns an deinen Erkenntnissen teilhaben.
Ich suche eine Möglichkeit Echos sehr kurzer (kodierter?)
Ultraschallimpulspakete auf möglichst kurze Distanz auszuwerten. Dafür
wäre eine exakte Vermessung des Dopplereffekts und der laufzeit bei sehr
kurzen Bursts mit weniger als 6 vollperioden hilfreich. am libesen würde
ich die Halbwellen der echos einzeln vermessen und zuordnen
Zum beispiel ein Ping mit nur einer halben Periode erzeugen (sendekapsel
aktiv gedämpft)
Die einlaufende Reflektion detektieren und vermessen und die freien
Nachschwingungen der Empfangskapsel aktiv dämpfen/ hererausrechnen.
So ließen sich dann auch amplituden oder frequenmodulierte Bursts
erzeugen welche auch nach längere Laufzeit einer bestimmten Aussendezeit
zuzuordnen währen. .....
Dafür könnte Dein Verfahren hilfreich sein. Nur kann ich mir noch nicht
vorstellen wie man das anstellt.
Namaste
Hallo Winfried J.,
willst du sowas nicht als entwicklerarbeit vergeben ?
Geht es hier um bewegte Gegenstände weil Dopplereffekt angegeben ?
Statisch geht das sehr gut, wenn die Datenpackete mit antizyclischen
Phasendrehungen ausgesendet werden. Eine halbe periode geht nicht, da
der Transducer sowieso nur die Hälfte der Energie abgeben kann. Die
Pausezeiten sind adaptiv nach den Echos anzupassen. Ich würde hier mit
einem IQ Mischer arbeiten, dann erhälst du noch die Phasenwinkel um
besser die Position zu bestimmen. Aber eigenlich geht das doch eher in
Radartechnik ein.
Du solltest eher zwei Empfänger haben für die räumliche Auflösung.
Gut ich kenne deine Anwendung ja gar nicht.....
Habe füher auch mal mit Ultraschall einen räumlichen Sensor gebaut der
Bewegungen von Objekten zweidimensional (X.Y) feststellen konnte. Das
war führ eine Alarmanlage. War sehr aufwendig, weil ein zeitgesteuerter
(Rampe) logarithmischer Amplifier schon gebraucht wurde. Gut die
AD-Wabdler hatten noch nicht den Dynamikbereich. Aber man muss auch das
Eigenrauschen des Wandler betrachten.
Gruß Sascha
Hallo Sascha,
nein vergeben will ich das nicht. Es soll ein Hobbyprojekt bleiben. Ich
war vor vor 33 Jahren Funkmessgast auf einer Ujagdfregatte anschließend
habe ich noch ein Seeoffiziersstudium zu 3/4 absolviert. Also
Wellentheroetisch ist die Sache klar auch die analogen Möglichkeiten,
Bedingungen und Grenzen sind klar. Die Idee Stero zu hören gefällt mir.
Auch die "Akustische Kamera" ist bekannt.
Interessant wäre halt mehrere laufende Bursts und Echos überlappend zu
bearbeiten und dazu muss man sie schnell unterscheiden und zuordnen
können. Dazu ist es erforderlich den einzelnen Burst code aufzuprägen
und diesen im echo zu detektieren.
Auf große Distanzen und staatisch ist es kein Problem. Die
Verstärkerungsrampe soll die entfernungsbedingten Leistungsverluste des
Echos ausgleichen. Das ist klar, funktioniert aber nur mit Einzelbursts.
Aber der Nahbereich wird durch die minimale Burstlänge und die SE
Umschaltdauer bestimmt.
Bei dem von mir angedachten Verfahren muss ein goßer Dynamikumfang
berücksichtigt werden ebenso wie die Überlagerung diverser Wellen.
Ich muß also auch die Wellenform auswerten um Interferenzen und
Schwebungen und Dopplerverschiebungen zuordnen und darstellen zu können.
Dafür bedarf es schnellerer Auswertungsmethoden als es mit analogen oder
gar passiven Filtern möglich ist (Einschwingdauer, Nachschwingen) Damit
scheiden alle Resonazfilter aus.
Nachdem Fledermäuse das perfekt beherrschen ist bewiesen, dass es
möglich ist. Sie vermögen ihren Flügelschlag so anzupassen, dass sie
zwischen gespannten Fäden kleiner ihrer halben Flügelspanne hindurch
Slalom zu fliegen. Was auch bedeutet das sie Entfernung und Winkel
Abstand so wie die Annährungsgeschwindigkeit hinreichend schnell
auswerten können. um nicht hängen zu bleiben.
Davon gibt es Infrarothochgeschwindigkeitsaufnahmen.
Jetz interressiert mich deine schnelle Frequenzauswertung mittels
Digitalfilter. Das Verfahren kann ich mir noch nicht recht vorstellen.
Namaste
Winfried J. schrieb:> Nachdem Fledermäuse das perfekt beherrschen ist bewiesen, dass es> möglich ist
Da stecken aber auch einige Hundertausend mehrdimensional verschaltete
und eintrainierte Neuronen dahinter, während man in FPGAs mit einigen
TAPs auskommen muss :-)
> Interessant wäre halt mehrere laufende Bursts und Echos überlappend> zu bearbeiten und dazu muss man sie schnell unterscheiden und zuordnen
Das geht üblicherweise mit mehreren Kanälen unterschiedlicher Frequenzen
und Sequenzen die auf den anderen Kanälen zeitrichtig abgezogen werden.