Teil1: Steuerungen über den Line-Out Ausgang einer Soundkarte
Startseite Projekt Teil 1: Steuerung über Line-Out Teil 2: Schrittmotorschlitten Teil 3: Lichtintensitäten messen

Teil 1: Steuerungen über den Line-Out Ausgang einer Soundkarte.

Am Anfang stand eine Mess-Idee und ein Problem:

es müsste doch möglich sein, über die Soundkarte verschiedene Frequenzen auszugeben, sie dann mit einer geeigneten Elektronik zu unterscheiden und damit Relais zu schalten bzw. Schrittmotore anzusteuern.
Nur, wie geht so etwas möglichst ohne großen Aufwand an Elektronik und auch noch kostengünstig?

1.) Gemischtes Doppel für Computer und Telefon.

Manchmal kann man bei verwandten Gebieten Anleihen machen:
Aus dem Bereich des Telefonierens kennt man eine ähnliche technische Lösung, das sogenannte Mehrfrequenz-Wahlverfahren (MFV), wie es bei modernen Telefonen heute üblich ist. Dabei werden verschiedene Wählziffern verschiedenen Tönen zugeordnet - oder, umgekehrt ausgedrückt - verschiedene Frequenzen repräsentieren verschiedene Zahlen oder Binärkombinationen.

Photo Versuchsaufbau

Der Vesuchsaufbau auf
einer Lochrasterplatte.

Dafür muß es doch entsprechende Elektronik geben, so sagte ich mir, denn das ist Stand der Technik und wird in zahlreichen Vermittlungsstationen und Telefonanlagen jeden Tag millionenfach und zuverlässig benutzt!
Bei meinen weiteren Recherchen stieß ich auf den Schaltkreis MT 8870 von MITEL (oder auch ZARLINK) - der übrigens auch in meiner Telefonanlage Zuhause (und wahrscheinlich auch in Ihrer) Dienst tut.
Dieser Chip macht genau das was wir wollen: er wandelt Töne in ein Nibble, also eine 4-bit Binärkombination um.

Dies macht er mit relativ wenigen externen Komponenten und er ist recht einfach über Conrad (Bestellnummer 173193-12) zu erhalten. Derzeit kostet das Bautail ca. 3.50 Euro, mit den nötigen externen Komponenten ist die Tonfrequenz / Binär Wandlung für etwa 6 - 7 Euro zu machen.

Den geringen externen Aufwand erkennt man im Photo meines ersten Testaufbaus.
Ausgegeben ist hier eine "10"- leuchtende LED->0, dunkle LED->1, da die LEDs nach +5 Volt beschaltet sind.


2.) Was ist DTMF?

Die Sache jedoch nicht ganz so einfach wie oben beschrieben.

Dahinter steckt folgende Problematik:

In Telefonanlagen "lauscht" der IC ständig an der Leitung, über die alles Mögliche übertragen wird - Klingeltöne, Geräusche, menschliche Stimmen und auch Wähltöne. Wie soll der Chip "wissen", dass die Tonfrequenz, die er gerade registriert, ein Wählton ist - und nicht etwa der Klang einer Flöte mit der Klein-Anna der Tante Berta ein Lied vorspielt, ein Klingelton, oder gar das Pfeifsignal eines Computermodems?

Die Lösung ist einfach: bei zwei Tönen genau festgelegter Frequenz, ist die Wahrscheinlichkeit für ein "Störsignal" minimal - es muss sich dann um einen Wählton handeln. Auf diese Art und Weise wurde das sogenannte DTMF (dual tone multi frequency) Verfahren erfunden. Dabei repräsentieren zwei Töne genau definierter Frequenz eine Wählziffer.


3.) Der Chip MT 8870.

Das folgende Block Diagramm zeigt den Aufbau des Mitel MT 8870. Zunächst enthält er einen Operationsverstärker im Eingang, der ein evtl. etwas schwachbrüstiges Signal etwas "aufpeppelt".

Blockschaltbild MT 8870

Es schließt sich ein Eingangsfilter an. Ist das angelegte Signal ein Klingelton, also eine Frequenz von 350Hz oder 440 Hz, so darf das Signal nicht passieren - Endstation am "Dial Tone Filter"!

Handelt es sich um andere Frequenzen, so kommt das Signal auf zwei Filter, das "Low Group Filter" filtert die richtigen niedrigen Frequenzen (<1000 Hz) heraus, das "High Group Filter" den höheren der beiden Töne (1000 Hz < f < 1700 Hz). Dabei sind die Filter sehr schmalbandig, d.h. sie registrieren nur genau die "richtigen" Frequenzen. Nur wenn beide Filter ein Signal finden, handelt es sich wohl um einen Wähltton.
Annas Flötenton hätte also vielleicht das "Low Group Filter" passiert, wenn es sich um eine "richtige" Frequenz handelt, jedoch kommt keine Information aus dem "High Group Filter", die Information wird daher ignoriert. Zwei "passende" Frequenzen haben auch nie das Frequenzverhältnis 1:2, die Oberwellenproblematik stellt sich also nicht.

Ein Wählton führt hingegen zu einem Signal an beiden Filtern. Der "Digital Detection Algorithm" stellt dabei fest, um welche Frequenzen es sich handelt und stellt eine 4-bit Zahl bereit. Die Steuerlogik erkennt einen "Treffer" und schaltet die 4-bit Zahl an die Ausgänge durch. Die Wandlung ist komplett.

Damit er seine Dienste verrichten kann, benötigt der MT 8870 noch ein paar externe Komponenten. Die wichtigste ist ein Schwingquarz mit 3,579545 MHz. Diese Quarze sind einfach zu bekommen und kosten weniger als 1 Euro. (Mögliche Bezugsquellen hier)
Ein Datenblatt (englisch) können Sie hier herunterladen .

Diese Frequenz wird übrigens im US-Fernsehen als Zwischenfrequenz in Empfängern verwendet. Noch ein paar Widerstände und Kondensatoren - und fertig ist die Wandler-Schaltung!

Hier die Beschaltung des MT 8870 für eine 4-bit Steuerung über die Soundkarte.

Es fällt ebenfalls sofort der geringe Aufwand an externen Schaltungselementen ins Auge. Außer dem Quarz, zwei Kondensatoren und drei Widerständen braucht man wirklich nichts.
An den Ausgängen Q1 bis Q4 steht das decodierte Nibble in TTL-Pegel zur Verfügung.

Die Schaltung arbeitet mit 5 Volt. (maximal 7 Volt)

Ein Platinenlayout für den Nachbau dieser Schaltung finden Sie im Teil 2 dieser Reihe.

Beschaltung MT 8870

4.) Die Programmseite - dem MT8870 die Flötentöne beibringen.

Die folgende Tabelle zeigt, welche Frequenzen dem MT 8870 übermittelt werden müssen (DTMF-Standard).
Dabei wurde so umformuliert, wie es für binäre Ausgaben in der Physik nötig ist, Q1 bis Q4 ist der Ausgangspegel an den Pins 11 bis 14 des MT 8870. "0" ist etwa 0 Volt, "1" entspricht ca. 5 Volt. (TTL-Pegel).

f 1 (Hz) f2 (Hz) Telefoncode Ziffer Q4 Q3 Q2 Q1
941 1633 D 0 0 0 0 0
697 1209 1 1 0 0 0 1
697 1336 2 2 0 0 1 0
697 1477 3 3 0 0 1 1
770 1209 4 4 0 1 0 0
770 1336 5 5 0 1 0 1
770 1477 6 6 0 1 1 0
852 1052 7 7 0 1 1 1
852 1336 8 8 1 0 0 0
852 1477 9 9 1 0 0 1
941 1336 0 10 1 0 1 0
941 1209 * 11 1 0 1 1
941 1477 # 12 1 1 0 0
697 1633 A 13 1 1 0 1
770 1633 B 14 1 1 1 0
852 1633 C 15 1 1 1 1

Die Tonfrequenzen in den linken beiden Spalten müssen also nun dem MT 8870 über die Soundkarte "gefüttert" werden, damit dieser sie in die entsprechende Binärzahl wandeln kann. Doch wie macht man das?


4.1.) Ausgabe der Steuertöne mit Delphi.

Auf einer anderen Seite wurde beschrieben, wie man unter Delphi auf die Soundkarte zugreifen kann. Klicken Sie bitte hier. Die nötigen "Plug-Ins" für Delphi brauchen Sie natürlich, um selbst Programme zu schreiben um die Schaltung ansteuern zu können.

Mit der Komponente TAudioOut lassen sich Frequenzen ausgeben. Eine Sinusfrequenz erzeugt man mit folgendem Algorithmus:

ausgabe :=amplitude*sin(2*pi*f1*t/samplerate);

dabei ist f1 die Ausgabefrequenz und t eine Laufzahl für den entsprechenden Speicherpuffer. Samplerate ist die Zahl der Ausgaben, die die Soundkarte je Sekunde macht.

Unser Wählsignal ist nun einfach die Summe zweier Sinussignale, also deren Überlagerung:

ausgabe :=(amplitude*sin(2*pi*f1*t/samplerate)) + (amplitude*sin(2*pi*f2*t/samplerate));

Bei der Amplitude muss man bedenken, dass sich beide Amplituden im Extremfall addieren können.
(Physikalisch gesprochen erzeugen wir hier eine Schwebung zweier Tonschwingungen).
Wenn man 16 bit Auflösung gewählt hat, ist die Maximalamplitude 32767 (das entspricht 1 Volt Maximalamplitude der Spannung am Ausgang). Bei der Addition darf "amplitude" also maximal die Hälfte dieses Wertes betragen, sonst wird der MT 8870 "zugestopft" und er kann das Signal nicht mehr auflösen.

Wenn Sie selbst auf einfache Weise mit dieser Ausgabe ohne Delphi experimentieren wollen, können Sie dies auch mit dem "Expression Evaluator" von Goldwave tun.( Klicken Sie dazu hier)


Listing Ausgabe

Einstellungen Attributinspektor

Hier ein Ausschnitt aus meiner Routine für die Ausgabe und ein Screenshot der Einstellungen für TAudioOut -
"tp" entspricht dabei "t" in der Erklärung oben, die Übergabe des Zahlenwerts erfolgt durch Auslesen der Stellung eines Schiebereglers (SB_1), die einer Variable "ton" zugeordnet wird. Die "richtigen" Tonfrequenzen stehen in zwei Arrays.

Hier können Sie mein kleines Testprogramm als Zip-Paket - samt Quellen - herunterladen
Paket "step.zip" herunterladen

Hier ist noch ein kleines Programm, das das Wählen auf der Tastatur eines Telefons mit Tonwahl nachbildet.

Mit ihm können Sie die Ausgabe ebenfalls testen.
Sie können es aber auch zur Einführung der Binärzahlen in Ihrem Mathematik- oder Informatikunterricht verwenden. Die Quellcodes sind angefügt. Für schulische Zwecke sind beide Programme Freeware.

Paket "dial.zip" herunterladen

Was kann man nun mit dieser Steuerung alles anfangen??

  • Mit einem vier Bit-Ausgang kann man z.B. über Ansteuertransistoren Schrittmotore steuern. Ein solcher Schrittmotor kann z.B. auf einer geeigneten Mechanik einen Licht-Frequenz-Wandler durch eine optische Interferenzerscheinung bewegen und die Lichtintensität über den Line-In Eingang der Soundkarte registrieren. So lassen sich nur mit der Soundkarte optische Spektren (z.B. Einzel- oder Mehrfachspaltinterferenzen ) abtasten und ausmessen. (darum geht es ja in diesem Projekt)
    Weiterhin wäre denkbar, statt des Licht-Frequenz-Wandlers ein Mikrofon zu montieren und so z.B. stehende Wellen mit der Soundkarte auszumessen.

  • Da der Ausgang der Soundkarte auch den Stereobetrieb zulässt, müsste es im Prinzip möglich sein, über die beiden Ausgänge auch zwei MT 8870 und damit zwei Schrittmotore getrennt zu steuern. Damit werden dann auch z.B. Robotersteuerungen möglich und es eröffnet sich ein schönes Experimentierfeld für Arbeitsgemeinschaften.
    Man sollte allerdings im Bezug auf die Geschwindigkeiten bescheiden sein! (vgl. Abschätzung im Teil 2 dieser Serie)

  • Man könnte auch die 4-bit Information (also 16 verschiedene Zustände) auf einem 4-bit -> 16 Wandler (74LS154) oder auch einen 3-bit -> 8 Wandler (74LS138) geben. Je zwei Ausgangs-Bit steuern ein RS-Flip-Flop, das seinerseits ein Relais steuert.(z.B gebaut aus zwei NAND-Gatter in einem 74LS00) Auf diese Art lassen sich mit der Soundkarte je Kanal 8 Relais (oder auch 4 Relais mit 3 Bit) unabhängig voneinander ein- und ausschalten!

  • oder vielleicht wollen Sie eine Lauflichtsteuerung daraus machen? Jedes Bit steuert eine Lampe eines Lauflichts. Je Kanal lassen sich so bis zu 16 Lampen (mit 74LS154) ansteuern.

  • ..... sicher fallen Ihnen noch andere Anwendungsmöglichkeiten ein.

Wie Schrittmotoren funktionieren und wie man sie mit dieser Schaltung ansteuern kann, erfahren Sie im Teil 2 dieser Reihe.


Wenn Sie selbst solche Ideen aufgreifen und ausprobieren, warum nicht auf dem Landesbildungsserver darüber berichten? - Beiträge sind sehr willkommen!


Klaus-Dieter Grüninger, Landesbildungsserver