====== IBM Dials / SGI Dials ====== ===== Übersicht ===== {{ :projekte:ibm_dials_logo.jpg|Logo}} Toll was die Leute von IBM/SGI sich damals ausgedacht haben - ein 8-Kanal Analog-Digital-Wandler mit 8 Potentiometern und einem RS232-Port in einem schicken Gehäuse =) Wozu auch immer sowas gut sein soll ^^ Anwendung fand die Gerätschaft wohl im 3D-Bereich, denkbar wäre auch Videoschnitt, DJ-Mischpult (vllt. bastel ich mir ja mal nen Midi-Treiber :-P), ... ===== Aufbau ===== {{:projekte:ibm_dials_platine.jpg|Dials Platine}} Im inneren finden sich 8 Potentiometer. 2kOhm, linear - als Spannungsteiler geschaltet. Als a/d Wandler kommt ein [[http://www.datasheetcatalog.com/datasheets_pdf/A/D/C/0/ADC0808CCN.shtml|ADC0808CCN]] zum Einsatz. Dieser bietet 8 Kanäle und einen 8Kanal-Multiplexer. Als nächstes im Signalweg findet sich ein Nec D8048HC, vermutlich ein µC. Ein Nec D8251AFC werkelt als UART. Letztendlich landet das Signal bei einem [[http://www.alldatasheet.com/datasheet-pdf/pdf/67423/INTERSIL/ICL232CPE.html|ICL232CPE]] der das Signal auf die passenden Spannungen bringt. Voilà fertig ist der 8Kanal Drehdings mit rs232. Mit einem Verbrauch von gerademal 1,5 Watt ist die Gerätschaft auch recht sparsam ;) Es findet sich noch ein [[http://www.datasheetcatalog.com/datasheets_pdf/S/N/7/4/SN74LS14N.shtml|SN74LS14N]] 6fach Schmitt-Triggger-Inverter auf der Platine. 5 der Inverter sind verbunden. ===== Elektronischer Firlefanz ===== Von den 9 Anschlussleitungen im Stecker sind gerade mal 5 angeschlossen. Abzüglich der 5V und Masse bleiben 3 Leitungen. Auf einer liefert die Gerätschaft offenbar die Werte der Potis. Auf einer empfängt sie Steuerkommandos. Die andere Leitung scheint die Elektronik erst einzuschalten, hierfür wird __vermutlich__ die RTS-Leitung (Request to Send) verwendet. Die dritte Leitung wird nicht für die Funktion benötigt. ==== Belegung Steckverbinder CN1 ==== ^ Pin ^ Farbe ^ Funktion ^ Anmerkung ^ Lötverbindung auf... ^ | 1 | braun | Masse | "-" auf Platinen-Rückseite, ICL232CPE (Pin 15, GND) | Vorder- & Rücksetie | | 2 | rot | | | | | 3 | gelb | +5V | ICL232 (VCC über 10 Ohm), + div. Elkos, dicke Leiterbahn | Rückseite | | 4 | grün | Eingang (S-Trigger) | via 515 Ohm an Pin 1 SN74LS14N, dünne Leiterbahn | Rückseite | | 5 | blau | RS232 Transmitter | ICL232CPE (Pin 14, T1Out über 220 Ohm) | Vorderseite | | 6 | grau | RS232 Receiver | ICL232CPE (Pin 13, R1In über 220 Ohm) | Vorderseite | | 7 | weiss | | | | | 8 | schwarz1 | | | | | 9 | schwarz2 | Schirmung (Stecker) | via Entstör-Kondensator auf Masse | Rückseite | Der Steckverbinder auf der Platine CN1 ist mit den bunten Leitungen mit einer 8pol mini-Din-Buchse verbunden. Einen passenden Stecker gibts für 30 Cent von *tadaa* Pollin. ==== Funktionstest ==== Legt man 5V an liefert die Transmitter-Strippe -10Volt, also quasi den Pegel den eine Datenleitung hat wenn keine Daten gesendet werden. Ein drehen an den Potis liefert keine Signale, demnach muss das Gerät erstmal Initialisiert oder auf aktiv geschaltet werden. Der Kristall hat einen gemessenen Intervall von 0,435 µS, also 2298,85 kHz bzw 2,3 Mhz. Drauf steht 2,304 Mhz - da das Oszi da bestimmt etwas dämpfend wirkt passt der Wert ;-) Wozu diese Sinnfreie Messung? Nunja, die Baudrate wird wohl irgendwie durch (2,304*1000*1000)/((x²*10^y) [wobei x>0 und y>=0] zu berechnen sein. Mögliche (gängige) Baudraten wären demnach: 230400, 115200, 57600, 28800 und 14400. Laut den XFree86-Treibern arbeitet das Gerät mit folgenden Einstellungen: ^ BaudRate | 9600 | ^ StopBits | 1 | ^ DataBits | 8 | ^ Parity | None | ^ FlowControl | None | Die Baudrate ist also genau 2/3 von 14400, bzw 2/30tel der Quarzfrequenz. Durch anklemmen an einen Versuchs-Laptop mit Windows 3.0 und senden der iexplore.exe :-P ließ sich das Gerät dazu überreden ab und an Buchstabensalat in der Konsole auszuspucken - Juhu es lebt noch :-D ==== Belegung RS232-Kabel (selbstbau) ==== ^ Pin an Pc ^ Farbe an Pc ^ Bez. ^ Richtung ^ Farbe an Dials ^ | 1 | - | - | | | | 2 | schwarz | RXD | zu PC | blau | | 3 | bran | TXD | zu DLS | grau | | 4 | rot | DTR | zu DLS | | | 5 | orange | GND | - | braun | | 6 | gelb | DSR | zu PC | | | 7 | grün | RTS | zu DLS | | | 8 | blau | CTS | zu PC | | | 9 | - | - | | | | 5V | | VCC | | gelb | Die Farben auf PC-Seite sind natürlich nicht bei jedem aufgeschnittenen RS232-Kabel gleich... ===== Software / Protokoll ===== Auszug aus den XFree86-Treibern **__für eine andere Hardwareversion__**: // Kommandos #define DIAL_INITIALIZE 0x20 // Gerät initialisieren #define DIAL_SET_LEDS 0x75 // Led anschalten (nur bei "Buttons") #define DIAL_SET_TEXT 0x61 // ?? #define DIAL_SET_AUTO_DIALS 0x50 // ?? Automatisiertes antworten? #define DIAL_SET_AUTO_DELTA_DIALS 0x51 // ?? Automatisiert Versatz senden? #define DIAL_SET_FILTER 0x53 // Nur bestimmte Dials/Buttons zulassen? Bitmaske? #define DIAL_SET_BUTTONS_MOM_TYPE 0x71 // ? (nur bei "Buttons") #define DIAL_SET_AUTO_MOM_BUTTONS 0x73 // ? (nur bei "Buttons") #define DIAL_SET_ALL_LEDS 0x4b // alle LEDs einschalten (nur "Buttons") #define DIAL_CLEAR_ALL_LEDS 0x4c // alle LEDs ausschalten (nur "Buttons") // Antworten vom Gerät #define DIAL_INITIALIZED 0x20 // Initialisierung abgeschlossen #define DIAL_BASE 0x30 // ? #define DIAL_DELTA_BASE 0x40 // ? #define DIAL_PRESS_BASE 0xc0 // ? #define DIAL_RELEASE_BASE 0xe0 // ? ==== Polling ==== Durch herumexperimentieren stellte sich heraus dass sich via folgender Bytefolge der Zustand aller 8 Drehregler abfragen lässt: 0x20, 0x61, 0x50, 0x00, 0x20, 0x61, 0x50, 0x00 [FIXME Wie lautet das Kommando um das Gerät zu initialisieren? /dev/urandom ist keine praktikable Lösung - 0x20, 0x50, 0xff, 0xff bringt jedenfalls keinen erfolg.] Das Gerät lässt sich auch _irgendwie_ so ummurksen dass es selbst sendet und nicht gepollt werden muss... ==== Antwort ==== Die Antworten vom Gerät sind 16Bit-Pakete. Diese werden beim drehen an den Potis versendet. Sie enthalten Poti-Nummer (bei 8 Potis demnach mindestens 3 Bit), Richtung (mind. 1 Bit), Position und/oder Geschwindigkeit. ^ Bit 0 ^ Bit 1 ^ Bit 2-4 ^ Bit 5 ^ Bit 6 ^ Bit 7 ^ Bit 8 ^ Bit 9-15 ^ | Paket 0, immer 0 | ? | Poti-Nr | 0=rechtsrum, 1=linksrum | ? | Position | Paket 1, immer 1| Position | Offenbar lassen sich für die einzelnen Potis verschiedene Empfindlichkeiten / Auflösungen einstellen (Gesehen: 3Bit, 5Bit und 8Bit). Bei einer niedrigen Empfindlichkeit bleiben die restlichen Bits 0. Standardmäßig gibt es einen oberen Anschlag bei 240 sowie einen unteren Anschlag bei 248. D.h. es gibt zwei 8 Einheiten große "Anschläge". ===== Fazit ===== **Coolnessfaktor:** Krasses Pferd 8-)\\ **Seltenheit:** Im Internet bisher nicht/kaum vertreten (/gefunden)\\ **Energieeffizienz:** 1.5Watt fürs nichts tun... wobei, zur Steuerung des Audiomixers etc. sicherlich brauchbar. ===== Nachtrag: Dials steuern kX Treiber ===== {{youtube>large:YLjDcGRBuiI}} {{youtube>large:eStlwggaO00}} FIXME Software und Quellcode... ===== Wo werden "IBM Dials" erwähnt? ===== * [[http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.aixwnpgd/doc/aixwnpgd/inputdevices.htm]] * [[http://www.reputable.com/sgipix.html]] * [[http://vrml.cip.ica.uni-stuttgart.de/dune/docs/usage_docs/dune_de.html]] * [[http://www.mood-indigo.org/index.php?PHPSESSID=9ujl3ch4r3ol05crfje95fr2i1&topic=413.0]] - Diskussion drüber, Anwendung, ... * [[http://web.archive.org/web/20071111184718/http://www.sbgrid.org/osx.php?hardware=1&id=1]] * [[http://www.geocities.com/joekrahn/]] * [[http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.sgi.hardware/2006-03/msg00053.html]] * [[http://imsb.au.dk/pipermail/o-info/2002-May/005954.html]]