XY table: Lego


The first prototype of the hardware is made from Lego and other assorted objets trouvés. In order to make something out of it that invites experimentation, I decided to fit the head with a drawing pen that can be lifted by a servo. This will make this first prototype into a simple plotter. Making the prototype out of Lego compromises the achievable accuracy, but on the other hand it is very easy to try out things, and correct things on the spot where needed without having to remanufacture parts.

There are a few manufactured components, some bought, some drawn in Inkscape and made out of a sheet of plexiglass using a lasercutter:

  • The belts and belt gears are made by Modelcraft.
  • The axle bearings are small plexiglass plates: the center hole has the same diameter as the axle, so that it fits and turns easily but without play. The mounting holes are cut in sizes and places so that they fit snugly onto the lego technic bricks. There are two larger bearing plates that also have mounting holes for the motors.
  • The gears are also cut from plexiglass. The X and Y axis drivetrains each have 2 gears: one that fits onto the drive axle, and one that fits onto the motor axle. The motor gears have a slotted hole for the axle, the axle gears have a round hole that grips the axle tightly.

After installing the drivetrain for the X axis and the servo on the “print head”, the table looks like this:

The print head is a simple 4-wheeled roller that is kept onto its frame by friction. It supports a servo and a simple up-down mechanism that holds the pen. The pen is held in place using a few Loom-bands “borrowed” from my childrens’ box. This solution allows the pen to move sideways, but for playing around it works OK.

The pictures below show some close-ups of the drivetrain components:


The initial version of the software simply allows to control the movements over the Arduino’s serial monitor: ‘e’ and ‘x’ for X-axis forward and reverse movement, ’s’ and ’d’ for Y-axis forward and reverse movement, and ‘a’ and ‘q’ for lifting up and putting down the pen. Simple sequences of movements can be sent as a string, and will be interpreted character by character. The following series of commands will draw the simple face figure from the video below:

q eeeeeeeeee a
q eeaxxqdaeeqxxdaeeqxxdaeeqxxd a
q eeaxxqdaeeqxxdaeeqxxdaeeqxx a
q xxxxxxxxxx sssssss a
eeeeeee dd qdxsead d qdxsead dd
ssss xx qxdea
ssx qxdddea


  • The gears have quite a bit of play in them, which accounts for considerable loss of accuracy, particularly when reversing direction.
  • The lego construction is not very solid, which makes the plotter fragile, and also makes it less accurate
  • Small wheels for the transmission belts make the plotter slow, although in this case this is probably a good thing, since higher torque will help overcome the friction in the simple lego construction
  • The electronics do their job very well, although the next version should include a way to connect switches to detect that the carriages are in their home position, for calibration. It also seems a good idea to fit the voltage regulator with a small heat sink, since it becomes quite hot after some time of continuous operation. Perhaps using higher resistor values for the transistor base connections will reduce the current, without impact on the operation.

All in all, it works better than expected. On to prototype 2, with a more solid construction, better gears, and better software!