

Velleman K8000 - My First Robot
This page will describe the first computer-controlled robot I've build. I used a LEGO-technics robot because it's an easy-to-modify robot, and I've enough spare parts for making modifications to this robot. My first robot is a single robot arm, which can grab a lego-piece, and throw it in a yellow or a black container. All the controlling will be done with nothing more than pure on/off commands.
The robot is based on Lego-Technics set #8094, which was first released
in the year 1990. I got this set when I was a kid, and had a lot of fun
with it. The robot-arm was controllable through the 'lego control center',
a mini computer with buttons to move the arm in any directions. The control
center had also a few memory functions, so certain movements could be
recorded.
I have rebuilt the robot according the original building instructions, but instead of using the 'control center' to control the movements, I used a K8000 card. This is an interface card you can connect to your PC/Laptop. With this card you can control several electronic devices, like a Lego Robot Arm :-).
I used a K8000 in combination with a velleman relay card to control the robot. The disadvantage of this is I cannot regulate the speed of the motors: I can only turn them on and off. I have used 6 relays: 3 for each motor (the robot arm has 2 motors: 1 for horizontal movements, 1 for vertical movements). The first motor is to turn the motor on/off, the second and third relays are to reverse the direction of the motor.
I have written software in visual basic; allow controlling my robot-arm
with a logitech-joystick. The arm instantly follows the direction of the
joystick. As I mentioned before, the motors have no speed regulation. So,
moving the joystick a little, or a lot won't make a difference. But I don't
think it's a real problem. Later I will develop some electronics to regulate
the speed of the motors.
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 did I do that?
The answer is: I have built a system that tries to remember the position of the arm, by logging all movements in a memory. The system is using a counter. Basically explained: when starting up, I must manually move the robot to the center position. Then I click a button so the system knows this is the start position. The counter will be set to zero. Now if the arm is moving to the left for 0.3 seconds, the counter is increased by 3. If the arm must return to the center position, it must move to the right until the counter is equal to zero again. This system isn't ideal. The arm doesn't always move at a constant speed, so some deviation will occur when the robot-arm has been moved for a while. But my first tests indicate my system is accurate enough to process 4 lego-blocks without any human interaction between.