Logo Banner

Velleman K8000 - My First Robot

My First Robot


This page describes a computer controlled robot I built many years ago. The robot is from LEGO-technics. This makes the bot easy to modify and there are many spare parts to make modifications

The robot is a single robot arm that can grab a LEGO piece. This piece can be dropped in one or two containers.

The Robot!

Picture of the LEGO Technics #8094 robot

The robot is based on Lego-Technics set #8094, which was first released in the year 1990. The robot arm was controllable through the LEGO control center: a control unit with some sort of joystick to control 2 motors at the same time. The unit also had some basic memory functions: certain movements could be recorded.

I rebuilt the robot according the original building instructions. I only replaced the control center with a K8000 card. The K8000 was controlled in combination with the Velleman relay card.

The speed of the motors couldn't be regulated: you could only turn them on or off. I used six relays: two to activate each motor and two for a polarity reverser. This reverser makes sure you can change the direction of the motor.

The basic software

Screenshot of the robot with the joystick

The control software was written in Visual Basic 5. Controlling the arm was done with a logitech joystick. As mentioned above the motors didn't have a speed regulation so it didn't matter if you moved the joystick much or not.

The software also has some functionality to pick and drop blocks automatically. But the robot arm has no single sensor to determine its position, so how is that possible?

The answer is: I have built a system that tries to remember the position of the arm by logging all movements in a memory.

Position Determination

When powering up the robot the robot arm had to be moved to the center position. Then I clicked a button to calibrate the starting point.

From now on the system kept all movements in a log. It used a counter for this: when the robot was moved to the left for 0.3 seconds the counter was increased with 3. Moving an equal time in the other direction caused the counter to decrease with 3.

I must admit this system wasn't ideal: the arm doesn't always move at the same speed. This causes the counter to be a little 'off course' after some time. Periodically a recalibration of the starting point was required. My first tests indicated the system was accurate enough to process 4 LEGO blocks without problems. A fifth block was often picked or dropped at the wrong place.

Screen shots of the software

Screenshot of the software to drive the robot

Screenshot of the software to drive the robot

Download Executable

Here you can download the source code for this project. It is unfinished as I abandoned this project but it works. The code where the joystick is polled can be found under the sub Timer1_Timer().

Copyright ©1998-2022 Vanderhaegen Bart - last modified: August 24, 2013