Overview
Construction
Hardware Interface
Software / Protocol
External Links
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 IBM 6094-010 is 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).
A similar product was also offered by SGI and other manufacturers.
Notice that there is a moulded plug from the AC adapter that plugs into the
back of the DB9 adapter. When the serial port to Mini DIN8 is figured out, you
could use a DB9 breakout box, then just drill it for a DC barrel jack.
Construction
IC1 ADC0808CCN 8-bit µP Compatible A/D Converter with 8-Channel Multiplexer
IC2 µPD8048HC High-Speed, 8-bit, single chip HMOS uComputer (6MHz)
IC3 SN74LS14N Hex Schmitt-Trigger 1 Input Gate Inverters
IC4 µPD8251AFC 3/5 MHz -0.5 to +7.0V programmable communications iface (USART)
IC5 ICL232CPE +5V Powered, Dual RS-232 Transmitter/Receiver
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-Trigger inverter on the board. 5 of the
inverters are connected.
Hardware Interface
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 |
+5 V |
ICL232 (VCC @ 10 Ohm), + div. Elkos, Thick circuit |
Back |
4 |
Green |
S-Trigger Input |
via 515 Ohm on Pin 1 SN74LS14N, Thin conductor |
Back |
5 |
Blue |
RS232 TXD |
ICL232CPE (Pin 14, T1 Out @ 220 Ohm) |
Front |
6 |
Grey |
RS232 RXD |
ICL232CPE (Pin 13, R1 In @ 220 Ohm) |
Front |
7 |
White |
|
|
|
8 |
Black1 |
|
|
|
9 |
Black2 |
Shield (plug) |
via suppression capacitor to 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
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.
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 |
Signal |
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:
// 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 16-bit 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
|