www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 5-Ton Auswertung mit NE567 - Interrupts


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
---||--|>----------- A
            |
 ---||--|>---
    .       |
    .       |
 ---||--|>---
            |
            -
           | |
           | |
           | |
            -
            |
            -

evtl so?

:)

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, aber auch da hab ich das Problem, dass eine positive Flanke von 
Signal 2 nicht erkannt wird, wenn Signal 1 bereits auf HIGH liegt.

Autor: was-willst-du (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke der Kondensator zwischen Eingang und dem Pull-Down-Widerstand 
sperrt Deinen High-Pegel aus.

Autor: Jürgen A. (jaja)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum so kompliziert?
5-Ton Auswertung geht doch auch ohne NE567...

Grüße,
Jürgen

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Frank,

>5-Ton-Folgenauswertung

können zwei Töne gleichzeitig auftreten?

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, Doppeltöne sind auch möglich

ups ... dann wird kompliziert!

Sag doch bitte mal was zu den Frequenzen der einzelnen Töne.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht evtl polling?

Oder muß es über einen Int. signalisiert werden?

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Polling scheidet leider aus, da der Mikrocontroller in der Hauptschleife 
auch mal mehrere Millisekunden mit anderen Sachen beschäftigt ist.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach mennu (sächsisch).

evtl ein zweiter µC als Interruptdecoder?
Viel mehr fällt mir jetzt nicht mehr ein. :(

Autor: Schnuddel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mitleser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennst du das ?

http://www2.produktinfo.conrad.com/datenblaetter/1...

Da ist auch ein Beispiel für die Auswertung von 10 Tönen bei.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich komme immer mehr zu dem Schluß:

Nimm einen µC der Pin-Change-"Ereignisse" erkennt!
Dann bist Du die zusätzliche Hardware und Deine Probleme los.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn sich keine Lösung findet, werde ich das wohl machen müssen. 
Allerdings etwas ärgerlich, weil dann die umfangreiche bestehende 
Software eventuell abgeändert werden müsste.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"!

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei einigen µC gibt es auch genug interruptmöglichkeiten über den Pin 
Change Interrupt.

Autor: Heiko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der 567 nicht einen Open Collector-Ausgang, der bei Tonerkennung 
nach GND schaltet?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
statt einzelner EXOR geht ein Parity-Generator 74xx180 oder CMOS 4531
http://www.alldatasheet.com/datasheet-pdf/pdf/6384...

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.