IBM Dials / SGI Dials

Übersicht

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

Dials Platine

Im inneren finden sich 8 Potentiometer. 2kOhm, linear - als Spannungsteiler geschaltet. Als a/d Wandler kommt ein 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 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 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

large:YLjDcGRBuiI

large:eStlwggaO00

FIXME Software und Quellcode…

Wo werden "IBM Dials" erwähnt?

 
Back to top
projekte/ibm_dials_6094_010.txt · Last modified: 2021/03/30 10:18 (external edit)
 
 
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0