Forum: Mikrocontroller und Digitale Elektronik Tonerkennung (1750Hz) mit AVR?


von Marc M. (macmek)


Lesenswert?

Hallo zusammen, ich möchte mit einem AVR eine Tonerkennung bauen, der uC 
soll erkennen ob eine bestimmte Frequenz (1750 Hz und später DTMF) im 
Audiosignal enthalten ist.
Aber wo soll ich beginnen, kann das mit ADW gemacht werden, braucht es 
eine externe Schaltung ?

von Chris (Gast)


Lesenswert?

Marc Mk schrieb:
> Aber wo soll ich beginnen, kann das mit ADW gemacht werden, braucht es
> eine externe Schaltung ?

Das sollte prinzipiell mit dem ADC machbar sein. Da nähere Infos zum 
Eingangssignal fehlen, lässt sich hier nicht mehr sagen. Das müsstest Du 
ggf. zuerst einmal anpassen.

Zur Auswertung bietet sich der Goertzel-Algorithmus an:
http://en.wikipedia.org/wiki/Goertzel_algorithm

von Anja (Gast)


Lesenswert?

Marc Mk schrieb:
> kann das mit ADW gemacht werden, braucht es
> eine externe Schaltung ?

Damit das Signal trotz 10Bit Wandler noch gut ausgewertet werden kann 
solltest Du über eine ALC-Schaltung (alter Kassettenrecorder) 
nachdenken.
Die Auswertung selbst macht man normalerweise mit 2 Görtzel-Filtern.
Das 1. auf die Frequenz abgestimmt, das 2. auf die doppelte Frequenz.
Wenn das 1. Filter über Schwellwert ist und das 2. nicht hast Du die 
gewünschte Frequenz.

Es gibt aber auch für DTMF spezielle ICs die den Tastencode direkt 
zurückliefern. (MT8870)
http://www.conrad.de/ce/de/product/173193/IC-MT-8870-DE11-DTMF-RECEIVER

oder auch Tondecoder für einzelne Frequenzen NE567

Gruß Anja

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Was soll es werden?
Ablaufsteuerung für ein Funk-Relais (TR I?)

Prinzipiell gibt es dazu drei Möglichkeiten:
1. MAn verstärkt das Audiosignal so lange bis es ein REchtecksignal 
ergibt und zählt entweder die Zeit zwischen zwei Flanken oder aber die 
Flanken pro Zeiteinheit. DAs kommt auf die Freqeunz und persöhnliche 
Vorliebe an.

2. MAn hat eine externe Auswerteschaltung die auf die Frequenz reagiert 
und dem µC einfach nur die Anwesenheit über ein Schaltsignal anzeigt.
(z.B. mit einem NE567 recht einfach)

3. Sampling des NF Signals mit einem ADC und anschließende überprüfung 
auf die Frequenzanteile über FFT. (das reine Zählen der Nulldurchgänge 
ist nur die schlechtere Version von 1)

Lösung 1 ist wohl von der Hardware die Eifnachste und auch die Software 
ist recht einfach. Allerdings funktioniert die Erkennung nur wenn das 
Tonsignal sehr viel Stärker ist als alle weiteren Signale.
(Wobei das meisten AFU RElais die ich kenne locker reichen würde)

Lösung 2 ist von der HArdware etwas aufwendiger, die µC Software ist 
aber mit Abstand die Einfachste. Es lassen sich auch noch sehr stark 
verrauschte Signale oder Mischfreqeunzen auf das vorhandensein von der 
Wusnchfrequenz untersuchen.

Lösung 3 ist die technsich raffinierteste und insbesondere wenn später 
auf viele verschiedene Frequenzen und vor allem auf die gleichzeitige 
Anwesenheit von Frequenzen (DTMF) getestet wird. Allerdings ist die 
Software auf µC seite deutlich komplexer und beansprucht lastet einen 
8Bit AVR schon recht gut aus.
Etwas Aufwand bei der Analogen Eingangsschaltung sollte man auch treiben 
damit das Signal weder den Wandler übersteuert noch so schwach ist das 
es kaum Aufgelöst wird.

Mit einem 8Bit AVR habe ich das bisher nochnicht versucht. Mit einem 
32Bit ARM und externen Wandler schon. ICh will es jetzt nicht 
beschwören, aber ich denke 8Bit AVR und interner AD Wandler könnte nach 
Bauchgefühl sehr eng werden.
Soll es wirklich eine reine Relaisstelle werden reicht auch Lösung 1, 
denn man will in der Regel ja auch nur Signale umsetzen die am 
RElaisempfänger schon relativ Rausschfrei ankommen.
Lösung 2 geht nur für Tonruf1 auch sehr gut, wenn aber DTMF dazu kommt 
wird es zumindest mit dem NE567 recht aufwendig - je zei pro Doppelton. 
(Wobei der nur ein paar Cent kostet.) Eleganter ist da die Verwendung 
eines speziellen DTMF Bausteins.

Lösung drei würde ich dann in betracht ziehen wenn du doch einen 
größeren µC verwenden willst und du über die notwendigen Mathematischen 
Grundkentnisse verfügst.

Gruß
Carsten

von Jasch (Gast)


Lesenswert?

Marc Mk schrieb:
> Hallo zusammen, ich möchte mit einem AVR eine Tonerkennung bauen, der uC
> soll erkennen ob eine bestimmte Frequenz (1750 Hz und später DTMF) im
> Audiosignal enthalten ist.

DTMF sind aber immer zwei Töne gleichzeitig, nicht? Damit fallen die 
ganz simplen Lösungen (Signal digital machen und Periodenlänge 
auszählen) wohl aus.

> Aber wo soll ich beginnen, kann das mit ADW gemacht werden, braucht es
> eine externe Schaltung ?

Ein bisschen externe Schaltung ganz sicher... ;-)

Die ADCs in den ATMegas können mit einigen Dutzend KHz Samplerate 
betrieben werden. Damit kannst Du Dein Signal leicht abtasten, 4 KHz SR 
sind für DTMF schon genug - Tiefpass-Filter am Eingang nicht vergessen.

Ob der ATMega dann aber eine FFT hinbekommt um die Frequenzen zu 
ermitteln - da bin ich überfragt, wenn er genug Flash, RAM und Takt hat 
und Du das nicht in msecs brauchst könnte das schon gehen.

von Michael S. (micha61)


Lesenswert?

Hallo Marc,
habe mich auch schon mal mit diesem Thema befasst. Schon mit einem 
kleinen AVR (ATtiny13) lässt sich die Frequenzerkennung über den ADC und 
eine simple Filterfunktion relativ leicht machen, wenn das Signal kaum 
gestört ist (also gesuchte Frequenz isoliert vorhanden oder anderes 
Signal). Das genügt für eine einfache Modem-Funktion bis z. B. 600 Baud. 
Für anspruchsvollere Zwecke benötigt man sicherlich etwas in Art der 
FFT, wie bereits angedeutet wurde. Das dürfte mit 8bit-Controller 
knifflig werden.

Ich hatte in diesem Zusammenhang auch mit dem NE567 experimentiert und 
eher schlechte Erfahrungen gemacht. Das IC ist zwar preiswert und 
einfach zu beschalten, reagiert aber sehr träge auf das Eingangssignal. 
Man kann da einiges einstellen; das ist aber sehr "fummelig" und 
teilweise schwer zu reproduzieren. Für schnelle Signalerkennung nicht zu 
empfehlen!

Grüße - Michael

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.