On 2/23/06 5:53 PM, "Tony Duell" <ard at p850ug1.demon.co.uk> wrote:
I'm assisting in the construction and control of a robot for a competition
with my highschool based around a "fischertechnik interface". I don't have
any documentation or information on this interface, besides the fact that
it's parallel port controlled and most of the control was done through
various BASICS (C64, Apple 2, etc)
I have the BBC micro version of this interface, along with the
documentation and the original program disk. It is clear that the
programs were translated from another micro's BASIC, for example there's
a program to make a robot arm move the disks for a Tower of Hanoi, the
program srts up arrays to handle the parameter stack for a recursive
subroutine call, even though BBC BASIC has named procedures with formal
paramterrs.
We've got the IBM PC/Paraport version, of course :)
Though there's a nifty adapter board to plug it into an Apple 2's joystick
port.
Anyway, I've traced out schematics for the BBC version, the others may be
similar. Here are some general comments :
It plugs into the BBC user port, and used the 8 data lines only.
There are 8 switch inputs. These feed buffers (a 4050 + half a 4071) and
drive LEDs so yo can see the state of the inputs. They also go into a
shift register. This links to 3 lines on the user port -- clock,
load-enable, and data out. The first 2 are outputs from the computer, the
last is an input to the comuter.
I don't think the interface itself actually had any LEDs, and there's a
diagram showing pinout for the motor control lines on the top of the case.
There's also several lines that you can attatch switches to, we've gota
paddle with paperclips on it :)
Another shift register (4094 I think) is used for
motor output. It uses the
same line on the user port for the clock signal, and 2 more outputs One
is the seiral data input to the shift register. The other latches the
shift register contents (the 4094 includes a latch with 3-state outputs).
Oh yes, the clock line also triggers a 555 timer (OK, half a 556, but it's
the same thing). This controls the OE line of the 4094, and disables all
the motors if the interface gets no clock pulses for a certain time (half
a second or so). This prevents the motors from running if the program
crashes.
The outputs of that 4094 go to some full-H driver ICs -- TLE4201
according to my notebook. These drive some bi-colour LEDs (so you can see
what the motors are supposed to be doing) and also the motor outputs to
the model.
That seems familiar, but I don't recall right now :)
There are 2 variable resistor inputs, and they're
strange. Each variable
resistor forms the timing resistor of a 555 monostable. These are
separately triggered by 2 more lines from the user port. The outputs of
those monostables are ORed together, and the output of that controls a
555 astable. The output of that astable, therefore, consists of a pulse
train, the number of pulses depends on the value of the variable resistor
connected to the monostable that was triggered. And that signal is fed
into the last line of the user port, where it's counted by one of the
counters in the 6522 VIA used for the user port.
I have no idea about the variable inputs.
The external connections to this interface consist of
:
A 20 pin ribbon cable and socket to plug into the BBC user port
A 20 pin header accessible through a hole in the case. This takes a
ribbon cable to the model. It carries the 8 motor lines (2 lines each for
each of 4 motors), 8 switch inputs, 2 variable resistor inputs, and 2 5V
lines (common for the variable resistors, common for the swtiches).
A 20 pin hgeader hidden away inside. Only a few pins are used, this
carries the clock, input SR load, Output SR latch, the serial-in to the
input SR and the last data bit from the output SR. It can be used to
extend the interface to more than 8 switches and 4 motors, but the driver
software would need rewriting, and AFAIK this was never used
5 fischertechnik sockets. One is logic ground (marked with an upside-down
T). The otehr 2 are 2 pairs for power supply inputs. They were designed
to link to a fishcertechnik transformer, you need a DC supply of 7-10V.
It's used directly to power the motors, rgulated down to 5V for the
logic. You only need to use one set (particularly if you have a nice
bench supply...), and there are internal protection diodes if you connect
the supply backwards.
So I won't blow it if I make a mistake?
FWIW it took me under an afternoon to trace out
schematics and sort the
whole thing out...
Let me know if you want me to look further. I can give pinouts for the
connectors on the BBC interface, for example (the 'model' connector seems
to be the same on all such interfaces).
We've got all that, I'm looking more for programming guidelines, as we've
got next to nothing in documentation (Perhaps one apple 2 doc for
interfacing with it, and I'd like to use my portfolio to control it,
somehow.)
I've got several tons of GWBASIC files from a four floppy disk set, and I'm
going to tear those apart soon.
I was told that some code was needed to be edited and someone who knew older
BASICs was wanted ... Turns out, they don't know how to power the damn thing
anymore, everyone who knew it is gone...
-tony