The same document in english

Stufe 2

Die Ansteuerung der Stereo-Anlage

von Kai Fett
mit Unterstützung der Fa. Pioneer electronics

Teil 1 - Understanding

Alle neueren Geräte von Pioneer sind über einen gemeinsamen Bus verbunden. Der eigentliche Sinn davon ist es, daß man nur ein Gerät mit einer Fernbedienung benötigt, um seine gesamte Anlage zu steuern. So empfängt zum Beispiel der Receiver von der Fernbedienung den Befehl "CD Play". Diesen Befehl gibt er auf den Bus, alle Geräte ignorieren ihn, nur der CD-Player aktiviert halt das entsprechende Kommando.

Der Bus ist folgendermaßen realisiert: Alle Geräte werden über ein 3,5"-Klinkenstecker-Kabel untereinander verbunden, wobei alle Geräte parallel am Bus hängen. Der Bus wird standardmäßig vom Empfänger (im Beispiel der Receiver) auf einem 5V-Pegel gehalten. Zum Senden eines Kommandos wird er einfach getaktet auf 0V heruntergezogen.

Das schöne ist, daß die Pullup-Widerstände schön hoch sind, so daß man zum Versenden eigener Codes den Bus einfach nur getaktet auf Masse legen muß. Das kann zum Beispiel am Ausgang des letzten Gerätes am Bus geschehen, oder am Eingang des Verstärkers.

Das Protokoll ist schnell erklärt:

Eine Liste der wichtigsten Geräte-IDs:

A1Tapedeck
A2CD-Player
A4Tuner
A5Verstärker
A8LD-Spieler
ABVideo-Recorder

Eine Liste der wichtigsten Codes:

17Play
18Pause
16Stop
10Vorwärts
11Rückwärts
1CPower

Teil 2 - Die Hardware

Wie schon oben geschrieben, benötigt man im Prinzip nur eine Schaltung, die den Bus kurzfristig auf 0V zieht. Um nun aber auch Geräte ansteuern zu können, die an keinem aktiven SR-Empfänger hängen, sollte man dafür Sorge tragen, daß der Bus auf 5V-Pegel gehalten wird. Ferner muß man noch den PC und die Anlage auf das gleiche Massen-Niveau bringen, falls dieses noch nicht durch Soundblaster oder Schutzleiter der Fall sein sollte. Eine doppelte Massenverbindung sollte man hingegen vermeiden, da man sich sonst sehr schönes Brummen auf den Audio-Leitungen einfängt, Stichwort Massenschleife.

Als Schnittstelle mit dem Computer empfiehlt sich der Parallel-Port, da dieser zum einen sehr leicht anzusprechen ist, und zum anderen bereits die benötigten Pegel zur Verfügung stellt.

Zum "Kurzschließen" des Busses nimmt man einen handelsüblichen NPN-Transistor, Emmiter an Erde, Kollektor an den Bus, Basis über Spannungsteiler an Erde bzw. D0 der Schnittstelle. Ich verwende zum Beispiel einen BC546, der gerade vorrätig war.

Damit ergibt sich folgende kleine Schaltung:

die SchaltungAbb.1: Die Schaltung

Dabei ist SR der innere Pol des Klinkensteckers zur Anlage. WICHTIG: Der äussere Pol ist keine Masse, sondern dient manchen Geräten für weitere Kommunikationsaufgaben. Man darf ihn also keinesfalls als Masse mißbrauchen. Diese muß man also am Gehäuse oder an einer freien Cinch-Buchse der Anlage abgreifen. Falls Ihr die Pinbelegung der parallelen Schnitstelle nicht auswendig wissen solltet (warum interessiert Ihr Euch dann überhaupt für solche Texte hier?!), hier die relevanten Pins:

PinBedeutung
2D0
3D1
18-25GND

Wie man sehen kann, mißbrauche ich Datenbit 1 zur aktiven Busspeisung, so daß man diese bequem im Program abschalten kann, wenn sie stören sollte.

Wenn Du von obigem nichts verstanden haben solltest, und der Schaltplan für Dich Ähnlichkeit mit einem Strickmuster aus der Zeitschrift Deiner Oma hat, für Dich aber trotzdem die Welt untergehen sollte, wenn Du Deine Anlage nicht in Zukunft vom Rechner aus steuern kannst, dann wende Dich vertrauensvoll an mich, wenn ich noch etwas Zeit habe, bastel ich Dir das Interface für Material+Porto+Tüte Gummibärchen zusammen.

Teil 3 - Die Software

Nun kommt es zum eigentlichen kribbeligen Akt: Das Interface will angesteuert sein. Und zwar teilweise für 0,35 ms, wobei eine Toleranz von 5% eingehalten werden sollte. Die PC-Hardware stellt einem allerdings nur Zeitinformationen mit einer Auflösung von 54,9 ms zur Verfügung. Ich verwende daher für die Software eine Zeitschleife, die einfach n-mal eine Addition durchführt. Dadurch ergeben sich zwei Konsequenzen:

  1. Das n muß für jeden Computer von Hand angepaßt werden.
  2. Bei Multitasking kann die Zeitschleife mal schneller, mal langsamer abgearbeitet werden, weshalb es auch hier zu Toleranz-Überschreitungen kommen kann.

Die Linux-Software kennt diese Probleme nicht, da es unter Linux einen wunderbaren RTC-Support gibt. Aber auch hier gilt: Linux ist kein Realtime-OS, so da˜ man das Tool zum einen mit root-Rechten laufen lassen mu˜ und zum anderen bei vielbesch„ftigten Systemen einen sehr niedrigen nice-Value ben÷tigt.

Die Software liegt in mehreren Varianten vor:

Die Doku ist etwas dürftig, also müßt Ihr schon ein wenig im Code lesen...

So, viel Spaß mit dem ganzen, und WIEDER EINE STUFE WEITER auf der Leiter zum Hightech-Freak!


(c)98 by Kai Fett