Original content by Rainer Wetzel (info@diyftw.de) was
here.
Edited by Louis Ohland and Major Tom.
Note: Most of this page was translated
with Google, and some dimly remembered college German (Forgive me, Frau Bauman!
Forgive me!) [LFO]
Overview
The people at IBM/SGI had a great idea - an 8 channel
analogue-digital converter with 8 potentiometers and a RS232 port,
all housed in a well designed case. Typical usages were the 3D
industry, you could also think of video cutting, DJ mixer.
(perhaps I'll create a MIDI device driver, one day).
Construction

IC1 ADC0808CCN 8 Bit uP Compatible A/D Converter with 8-Channel Multiplexer Datasheet
IC2 uPD8048HC High-Speed, 8-bit, single chip HMOS uComputer (6MHz) Datasheet
IC3 SN74LS14N Hex Schmitt-Trigger 1 Input Gate Inverters Datasheet
IC4 uPD8251AFC 3/5 MHz -0.5 to +7.0V programmable communications iface (USART) Datasheet
IC5 ICL232CPE +5V Powered, Dual RS-232 Transmitter/Receiver Datasheet
X1 2.304 MHz ? xtal
Inside there are 8 potentiometers. 2k Ohm, linear - as voltage
divider. An ADC0808CCN is used as A/D converter. This offers 8
channels and an 8-channel multiplexer. Next in the signal path is a
NEC D8048HC, probably a μC. An NEC D8251AFC works as a UART. In the
end, the signal arrives at an ICL232CPE which brings the signal to
the appropriate voltages. Voilà is finished the 8channel rotary
Dials with RS232. With a consumption of just 1.5 watts, the
equipment is also quite economical ;)
There is also a SN74LS14N 6x Schmitt-Triggger inverter on the
board. 5 of the inverters are connected.
Electronic Frippery
Of the 9 connection leads in the connector, only 5 are
connected. Other than 5V and ground, 3 lines remain. On one the
equipment obviously supplies the values of the potentiometers.
On one of them it receives control commands. The other is probably
the RTS line (Request to Send). The third line is not required for
the function.
Connector CN1
Pin |
Color |
Function |
Remark |
Soldering connection |
1 |
Brown |
Ground |
“-“ from Board Rear, ICL232CPE
(Pin 15, GND) |
Front & Back |
2 |
Red |
|
|
|
3 |
Yellow |
+5V |
ICL232 (VCC @ 10 Ohm), + div.
Elkos, Thick circuit |
Back |
4 |
Green |
Input (S-Trigger) |
via 515 Ohm on Pin 1
SN74LS14N, Thin conductor |
Back |
5 |
Blue |
RS232 Transmitter |
ICL232CPE (Pin 14, T1 Out @
220 Ohm) |
Front |
6 |
Grey |
RS232 Receiver |
ICL232CPE (Pin 13, R1 In @ 220
Ohm) |
Front |
7 |
White |
|
|
|
8 |
Black1 |
|
|
|
9 |
Black2 |
Shield (plug) |
via Suppression capacitor on ground |
Back |
The connector on the CN1 board is connected to the colored
lines with an 8-pin mini-Din connector. A suitable plug is
available for 30 cents from * tadaa * Pollin.
Functional Test
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.
If you put 5V to supplies the transmitter stripe -10Volt, thus
quasi the level the one data line has when no data are sent.
Turning on the potentiometer does not provide any signals, so
the device must first be initialized or activated.
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.
The crystal has a measured interval of 0.435 μS, that is,
2298.85 kHz and 2.3 MHz, respectively. Top stands 2,304 MHz -
since the Oszi is determined something damping works the value
;-) Why this meaning-free measurement? Well, the baud rate is
probably somehow to be calculated by (2,304 * 1000 * 1000) / (x²
* 10 ^ y) [where x> 0 and y> = 0]. Possible (common) baud rates
would be: 230400, 115200, 57600, 28800 and 14400.
According to the XFree86 drivers, the device operates with the
following settings:
BaudRate |
9600 |
StopBits |
1 |
DataBits |
8 |
Parity |
None |
FlowControl |
None |
The baud rate is therefore exactly 2/3 of 14400, or 2 / 3ds of
the quartz frequency.
By attaching to an experiment laptop with Windows 3.0 and
sending the iexplore.exe :-P, the device persuaded itself to
spit out letter character in the console - Juhu still alive (or
is that "Woo-Hoo! still alive!")
RS232 Cable (DIY)
PC Pin |
PC Color
|
Bez. |
Direction |
DIALS Color
|
1 |
- |
- |
|
|
2 |
Black |
RXD |
-> PC |
Blue |
3 |
Brown |
TXD |
-> DLS |
Grey |
4 |
Red |
DTR |
-> DLS |
|
5 |
Orange |
GND |
- |
Brown |
6 |
Yellow |
DSR |
-> PC |
|
7 |
Green |
RTS |
-> DLS |
|
8 |
Blue |
CTS |
-> PC |
|
9 |
- |
- |
|
|
5V |
|
VCC |
|
Yellow |
The colors on the PC side are of course not the same for each cut-open RS232
cable…
Software / Protocol
Excerpt from the XFree86 drivers for a different hardware
version: Note: "different hardware version"
// Commands
#define DIAL_INITIALIZE 0x20 // Initialize device
#define DIAL_SET_LEDS 0x75 // LED Power on (only for "Buttons")
#define DIAL_SET_TEXT 0x61 // ??
#define DIAL_SET_AUTO_DIALS 0x50 // ?? Automated answer?
#define DIAL_SET_AUTO_DELTA_DIALS 0x51 // ?? Automatically send offset?
#define DIAL_SET_FILTER 0x53 // Only allow certain dials / buttons? Bit mask?
#define DIAL_SET_BUTTONS_MOM_TYPE 0x71 // ? (Only for "Buttons")
#define DIAL_SET_AUTO_MOM_BUTTONS 0x73 // ? (Only for "Buttons")
#define DIAL_SET_ALL_LEDS 0x4b // Turn on all LEDs (only "buttons")
#define DIAL_CLEAR_ALL_LEDS 0x4c // Turn off all LEDs (only "buttons")
// Reply from device
#define DIAL_INITIALIZED 0x20 // Initialization completed
#define DIAL_BASE 0x30 // ?
#define DIAL_DELTA_BASE 0x40 // ?
#define DIAL_PRESS_BASE 0xc0 // ?
#define DIAL_RELEASE_BASE 0xe0 // ?
Polling
By experimentation, it turned out that the state of all 8
encoders can be interrogated via the following byte sequence:
0x20, 0x61, 0x50, 0x00, 0x20, 0x61, 0x50, 0x00
What is the command to initialize the device? / Dev / urandom
is not a viable solution - 0x20, 0x50, 0xff, 0xff does not bring
any success.] The device can be synonymous _where like_
ummurksen that it itself sends and does not have to be polled
Answer
The answers from the device are 16Bit packets. These are sent
to the potentiometer when turning. They contain a potentiometer
number (with 8 potentiometers at least 3 bits), direction (at
least 1 bit), position und/oder Geschwindigkeit.
Bit 0 |
Bit 1 |
Bit 2-4 |
Bit 5 |
Bit 6 |
Bit 7
|
Bit 8 |
Bit 9-15 |
Packet 0, always 0 |
? |
Potentiometer Number
|
0=rotate right, 1=rotate left |
? |
Position |
Packet 1, always 1 |
Position |
Apparently, different sensitivities / resolutions can be set
for the individual potentiometer (viewed: 3Bit, 5Bit and 8Bit).
At a low sensitivity, the remaining bits remain 0.
There is an upper stop at 240 and a lower stop at 248. There
are two 8-unit "strokes".
External Links
|