5-Ton Auswertung mit NE567 - Interrupts

Gast #1159556
Lesenswert?

Hallo,
ich möchte eine 5-Ton-Folgenauswertung mit NE567s und Mikrocontroller 
aufbauen. Für jede Frequenz möchte ich einen NE567 einsetzen. Mein 
Problem ist jetzt die Signalisierung an den Mikrocontroller.
Ich möchte bei jedem erkannten neuen Ton einer Folge einen Interrupt am 
Mikrocontroller (der keine Pin Change-Interrupts hat) auslösen. Im 
einfachsten Fall könnte ich ja alle Ausgänge der NE567s über ein 
AND-Gatter an den INT0-Eingang geben.

Allerdings gehen die Töne innerhalb einer Folge fast pausenlos 
ineinander über, sodass evtl. am AND-Gatter keine Flanke erzeugt wird. 
Ich dachte deshalb an an eine Schaltung, die ungefähr so aufgebaut ist:

                  |------|
Eingang 1 --------|      |
Eingang 2 --------|      |-------- INT0 Mikrocontroller
...               |  X   |
Eingang 10 -------|      |
                  |------|


Der Block X soll bei jeder positiven Flanke seinen Ausgangspegel 
wechseln.
Allerdings weiß ich nicht so recht, wie ich das machen soll. Hat jemand 
vielleicht Vorschläge?
Gast #1159596
Lesenswert?

@Jürgen: Ja, z. B. indem man die Zeit zwischen zwei Nulldurchgängen des 
Signals misst. Allerdings möchte ich einen Ton auch noch detektieren, 
wenn er von Rauschen überlagert ist.

@Klaus: Ja, Doppeltöne sind auch möglich. Deshalb scheidet die einfache 
Zeitmessung aus.
Gast #1159621
Lesenswert?

Ich bräuchte so eine Art Interrupt Encoder, der jedesmal seinen 
Ausgangspegel wechselt, wenn irgendeiner seiner Eingänge eine positive 
Taktflanke erzeugt.

Die Ausgänge der NE567s sind auch parallel am Mikrocontroller 
angeschlossen. Dieser kann dann, nachdem er einen Interrupt signalisiert 
bekommen hat, überprüfen, welche Töne gerade erkannt werden.
Gast #1159668
Lesenswert?

Ich denk mal, dass du dir nen FME selber bauen willst.
Hab das auch mal mit nem PIC gemacht, hab da noch irgendwo die Sourcen 
und nen Schaltplan rumliegen ist aber in Assembler, wenn dich das nicht 
stört und kann nur eine Schleife auswerten (Haben bei uns im Ort nur ne 
Sirene).
Intresse?
Gast #1159704
Lesenswert?

@Schnuddel: Eine Decodierung im Mikrocontroller habe ich auch schon 
gemacht. Hier gehts mir aber um die Nutzung vom NE567, damit die 
Erkennung auch noch funktioniert, wenn dem Nutzsignal ein recht starkes 
Rauschen oder andere Störgeräusche überlagert sind.

@Mitleser: Das Datenblatt kenn ich. Die Anwendung hilft mir aber bei 
meinem Problem nicht weiter. Im Beispiel werden DTMF-Töne dekodiert, bei 
denen in der Regel eine Pause zwischen den Tönen ist. Da kann ich alle 
10 Ausgänge an ein AND-Gatter schalten, welches mir dann im 
Mikrocontroller den Interrupt auslöst.
In einer 5-Ton Folge ist meist aber keine Pause oder nur eine äußerst 
geringe zwischen den Einzeltönen. So kann sich die Erkennung von zwei 
aufeinander folgenden Tönen durch die NE567s überschneiden und der 
Mikrocontroller erhält kein Interrupt-Signal.
Gast #1159706
Lesenswert?

Hi Mitleser,

das decodieren der Töne ist nicht das Problem, wenn ich Frank
richtig verstanden habe.

Ich habs so verstanden: wenn sich die
Freq. ändert muß >ein< Interrupteingang sich ändern. (auch bei
Mischfrequenzen) um abfragen zu können welche Int.-quelle es war.
Gast #1159715
Lesenswert?

@Klaus:
Der Interrupteingang muss sich ändern, sobald ein neuer Ton anliegt. 
Welcher Ton das dann ist, kann der Mikrocontroller auslesen, weil alle 
NE567-Ausgänge auch am Mikrocontroller anliegen. So gesehen stellen 
Mischfrequenzen nicht das Problem dar.
Wichtig ist nur, dass ein Interrupt bei jedem neuen Ton erzeugt wird. 
Und wie ich das lösen soll, weiß ich noch nicht. Ich wollte die 
NE567-Ausgänge neben dem Mikrocontroller auch noch parallel an ein 
AND-Gatter schalten. Dieses sollte dann den Interrupt-Impuls erzeugen. 
Das könnte aber zu Problemen führen. Es kann ja sein, dass sich das Ende 
von Ton 1 und der Anfang von Ton 2 überschneiden. So sieht das 
AND-Gatter nur einen durchgehenden HIGH-Pegel und erzeugt keinen 
Interrupt-Impuls.
Gast #1159723
Lesenswert?

Die Idee mit den Dioden ist schon nicht schlecht, allerdings besser ohne 
die Kondesatoren, oder wenn schon, dann mit zusätzlichen pulldown 
Widerständen. Dazu sollte man aber auch die Signale der NE567 direkt an 
den µC schicken. Über den einen gemeinsamen Eingang kann man dann 
erkennen ob überhaupt was kommt und dann per Polling abfragen, welcher 
Ton.

Wenn man etwas an rechenzeit übrig hat, könnte man die 5 Töne auch in 
Software erkennen:  Das Signal per AD Wandler erfassen und dann parallel 
5 einfache Bandpaßfilter in Software laufen lassen. klingt nach relativ 
viel Rechenleistung, hält sich aber in Grenzen. Man wird nur den AD 
Wandler recht häufig brauchen.  Wenns unbedingt sein muß könnte man das 
auch auf einen 2 ten µC auslagern, wäre wohl immer noch kleiner als 5 
mal NE567.
Gast #1159733
Lesenswert?

Hi Ulrich,

>Über den einen gemeinsamen Eingang kann man dann
>erkennen ob überhaupt was kommt und dann per Polling abfragen, welcher
>Ton.

das Problem ist eine "Zustandsänderung" während der "Zustandsänderung"!
Gast #1160231
Lesenswert?

Für den Block 'X' ein (oder mehrere) EXOR-Gatter? Die sollten bei jedem 
Zustandswechsel, egal an welchem Eingang, den Ausgangszustand wechseln, 
wenn ich gerade nicht vollkommen falsch liege...

Dann muss natürlich der INT0 auf beiden Flanken ausgelöst werden -> 
eventuell im ISR umkonfigurieren, wenn er das nicht von selbst kann.

MfG, Heiko
Gast #1160263
Lesenswert?

Auch wenn der µC keinen Change-Interrupts hat, aber einen Interrupt für 
eine steigende und fallende Flanke was spricht dageben, das du den 
Interrupt nach einer steigenden Flanke auf eine fallende Flanke 
umprogrammierst. So hatte ich es bei den Atmels mal gemacht die auch 
keinen Change Modus hatten.
Gast #1160478
Lesenswert?

>Auch wenn der µC keinen Change-Interrupts hat, aber einen Interrupt für
>eine steigende und fallende Flanke was spricht dageben, das du den
>Interrupt nach einer steigenden Flanke auf eine fallende Flanke
>umprogrammierst. So hatte ich es bei den Atmels mal gemacht die auch
>keinen Change Modus hatten.

Der Unterschied zwischen einen INT-Eingang und PinChange-Interrupt ist, 
dass man mehrere Pins beim PinChange-Inetrrupt so maskieren kann, dass 
mehrere Pins einen Interrupt auslösen. Ein einzelner INT-Eingang kann 
nur einen Pin "verwalten". Deswegen auch die Zusammenschaltung des 
NE567-Ausgänge. Im Prinzip handelt es sich bei der gesuchten Schaltung 
um eine externe PinChange-Auswertung.

Die einzige Alternative, die mir AVR-intern einfällt ist ein Pollig per 
Timer.

Um Impulse am Eingan zu erzeugen wäre die einfachste Lösung wirklich die 
mit den Kondensatoren wie sie oben schon aufgeführt (und erweitert) 
wurde.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren