Uniface: Universal Interface Version 1As a enthousiast in building various kinds LEGO-robots and other computer controlled LEGO-projects, I needed a computer interface to hook up all the motors and sensors to a computer. The original LEGO PC interface (shown on the right) was however too expensive. It also needed a special ISA interface card for which the computer had to be opened, which was off-course not allowed by my parents. The original interface was also very limited. It only offered 2 inputs and 6 relay outputs. This did not allow to build complex robots and make PWM control possible.
The first version for the Universal Interface (UniFace) had to be a better version of this LEGO PC interface. It should be able to be connected to the printerport (which was on every computer that time) instead on the special ISA interface card. It also had to offer more features, such as PWM outputs, more inputs and electronic fuses on the outputs. The Centronics interface, better known as printerport, on the computer had enough inputs and outputs to fullfill these features.
The interface is very simple. It consists of 8 push-pull solid state outputs and 5 Schmitt-trigger inputs. The 8 outputs are build with the L298 stepper-motor drivers to reduce the size of the circuit board. Only flyback diodes need to be added to protect the outputs for inductive loads (especially when PWM is used). The 5 inputs are build with the 40106 Schmitt-trigger inverters. The last inverter is used in the protection circuit.
First, the PWM option was not used. This simplified the software since no PWM signals had to be generated.
Later on, I wrote a special Assembly program that hooked itself into the timer interrupt and generated the PWM signals. It also offered an interface to the underlying QBasic program (as a special .qlb library), so this program could be executed while the QBasic program was executed at the same time! This system worked perfectly... at least under DOS. This method works very well... uhm... on DOS. I've controlled dozens of Lego-models like robots, card readers and off course elevators this way.
Since this interface only works on DOS and not on Windows and Linux (since these are not realtime OS's and the latencies are too high to generate the PWM signals this way), a new interface had to be build. See the Uniface v2 pages for more information.