Template:RepRapPro commissioning

From RepRap
Revision as of 06:57, 10 October 2012 by SallyRepRap (talk | contribs) (Then for both Melzi and Sanguinololu)
Jump to: navigation, search


By the end of this stage, your machine will be ready for its first print.


  • An object with a measured height (we use a length of 6mm diameter silver steel - the shank of a drill bit works well too).

Step 1: Communication

Before you start trying to talk to your machine, you need Python and the dependencies. Windows users please note that you install the 32-bit versions of all the Python software even if you have a 64-bit machine (that is to say, do exactly what it says on the following link). Go here for instructions and only do the installation of Python and its dependencies (i.e. don't install the version of Pronterface/Printrun/Skeinforge that it also talks about):


USB Driver

If you have a Melzi controller set the PWR-SEL jumper on your controller board to USB. This is the three pin jumper about 20mm left of the processor chip. Short the bottom two pins to power from USB (note this only powers the logic, not the steppers etc). Short the top two to power the board from the main power. You want the bottom two shorted for this step. When you are running normally, it should be the top two that are shorted.


Plug the controller into a USB port on your computer. Does the computer complain that it has no driver for the USB device? If so, unplug the USB, then install this driver or find yours in this page. Then, when you plug the controller in, it should register as a COM port on your computer.


Linux systems should recognize the controller straight away with no need for driver installation. The controller will automatically appear as something like /dev/ttyUSB0 when you plug it in. It is possible that you have to give acess rights to the USB Port e.g. for USB0: sudo chmod 666 /dev/ttyUSB0 (when there is the error message could not open port, permission denied). Or better, on Ubuntu distributions and possibly others, make sure you as a user are a member of group dialout.


Mac users should select a driver appropriate to their machine from: http://www.ftdichip.com/Drivers/VCP.htm.

Start talking

The first thing to establish is that you can communicate with your machine. You will need to install and run the RepRappro Pronterface software, which you will find in our github repo here. The button to download a ZIP file is near the upper left (the little picture of a cloud with a down-arrow labelled ZIP).

Connect your RepRap to a USB port on your computer, then run pronterface.py.

The very first time you run Pronterface, select the correct print profile by navigating to Settings->Slicing Settings. This will open a new window. Near the top is a button labelled Profile Selection. Select the relevant profile for the material with which you plan to print. For the PLA supplied with RepRap this is Huxley-PLA-05-03 or Mendel-PLA-05-03 depending on your RepRapPro machine (05 is the nozzle diameter - 0.5mm; 03 is the layer height - 0.3mm). Select "Save all" then close the window and return to the printer interface software.

Now select the active serial port in the upper left, choose 250000 for the baud rate. Click Connect, wait a moment, and the software will confirm when the printer is online.

Pronterface main.png

Press the GET POS button, and if the machine returns a position of X0.00 Y0.00 Z0.00 your serial communication is functioning correctly.

NOTE: If your pronterface window does not display the custom buttons (GET TEMP, GET POS, ... ), you most likely have another copy of .pronsolerc or .skeinforge in your home folder. Delete these files and reload the software. You should now see the extra buttons.

Step 2: Axes

Motor movement

Begin by turning the current-limit potentiometers on the stepper drivers fully anticlockwise (the lowest current setting).


If limits are not set, the driver boards will most likely be destroyed.

Plug in your power supply. Watch for smoke in case something has gone horribly wrong! Also, make sure that the motors and - more importantly - the four motor driver chips - aren't getting hot. With the current limit all the way down, they should be cold to the touch. Take care with the chips - they have internal temperature shutdowns that kick in around 80oC, a temperature that will burn your finger unless you just touch lightly and briefly.

Melzi adjustment

The current to each motor is controlled by the miniature potentiometer (or trimpots, circled below) beside the stepper-driver chips on the left of the controller board. Use a small screwdriver to turn each one fully anticlockwise (don't force them - they should turn freely). Then turn them clockwise by about 30o.

Reprappro-huxley-trimpots.jpgThe rightmost circle at the green terminal block is GND (not a trimpot).

Connect power to your electronics, then using a multimeter, tune the trimpots to provide 1 Amp to each of the stepper motors. The trimpot dial is connected to the REF pin on the A4988 stepper driver ic. The RepRap's stepper motors are rated to 1 Amp, which equates to 0.4v on the REF pin of the A4988 stepper drivers. You can connect the ground probe (usually black) of your multimeter to the GND pin of the power input screw terminal (green, with the GND screw circled in red), and connect the positive probe (usually red) to each of the trimpot dials in turn.

Sanguinololu adjustment

The adjustment of the Pololu stepper drivers that go on the Sanguinololu board is described here on the Pololu site. See the section called Current Limiting. But ignore the bit on that page about the reference voltage being measured at a via - the easiest place to measure it is on the rotating metal part of the trimpot itself.

Adjust the trimpots to 0.4v by slowing turning clockwise while checking the voltage reading with a multimeter.

Then for both Melzi and Sanguinololu

Now type:

G1 X5 F500

in the field below the log window and click Send. The X-motor should move to 5mm in the positive direction (X5) at 500mm/min (F500).

Now type:

G1 X0 F500

and send. The X-motor should move back to its starting location (X0). If you find that your machine will not move in the negative direction, your endstops are probably not wired correctly. Refer to the Huxley wiring page or the Mendel wiring page to check your wiring.

Repeat the above test for the other three axes. For each axis test, replace the X in the above command with the relevant axis letter (Y,Z,E), but for Z make the feedrate 200 mm/minute:

G1 Z5 F200

and for E type:


before sending:

G1 E5 F500

Warning do not do this whilst you have filament in the extruder. The M302 command allows cold extrusion, enabling the extruder motor to move irrespective of the hot end temperature.

You may find that some axes judder, or whine but don't move. This means that their current is set a little too low.

Turn off the power, then rotate the appropriate potentiometer just a little clockwise. Put the power back on and repeat the tests above.

Motors going backwards

RepRap works with right-handed Cartesian coordinates relative to the bed not the frame. That is to say that looking down on the bed from the front of the machine X runs from left to right, and Y runs from front to back (like a graph). Z runs up towards the top of the machine.

Remember that it is the movement of the printing head that counts: when Y increases, the bed will move towards you.

If you find that an axis is backwards, it is simple to reverse its motor: just power down and then reverse the order of its wires into the controller, so, for example, [black, green, blue, red] goes to [red, blue, green, black]. Don't forget to turn the power off before disconnecting and connecting wires.


The endstops are only checked during homing. To test them, send a homing command for the X, Y and Z axes in turn, for example

G28 X0

As soon as you press Send and the axis begins to move, activate the relevant limit switch to halt movement of the axis. If activating the switch does not halt your axis, check your wiring (Huxley here or Mendel here).


You are almost ready to home your machine. Before doing so, ensure the Z endstop is high enough on the Z smooth rod to trigger the switch without the head ploughing into your heatbed.

Press the HOME ALL button and your machine will find its reference position at X0 Y0 Z0.

(If the machine stops before reaching an endstop it may be because the endstop is being falsely triggered by interference from the stepper motor wires.)

Step 3: Alignment

Level the X axis

Use digital callipers to measure the height of the X rods above the Y rods (move the carriages out of the way if needs be). Turn the Z motors until the X axis is level.

Level the bed

One of the major differences between the standard pronterface and the eMAKER version is the way the machine is manually controlled. You have five buttons which enable you to position the head above the four corners of the bed and over the centre. The Z axis can be moved in increments of 0.1mm, 1mm and 10mm. The E axis can be moved by the amount specified in the distance spin control. The speed of manual moves can be specified in the spin controls above the manual move buttons.

To level the bed, move the head up such that you have at least the height of your measured object between the head and the bed. Then position the head in the centre and bring it down gradually until it is almost touching the object. Moving the head to each corner, adjust the three M3x30mm cap head screws by which the heatbed is mounted in order to level the bed. The nuts on the M3 screws need to be tight against the spring mounts.

After you have leveled the bed you should add a drop of superglue to the outside of each of the levelling nuts to minimize the shaking as the bed moves. Its actually good if some gets into the threads; you can still adjust be bed height, but it won't creep around by itself.

Set your Z height

With the head at Z0, the tip of the nozzle should be within a paper thickness away from the surface of the bed. To achieve this, follow the sequence:

  • Send the following command: G1 Zz F200, where z=the height of your measured object.
  • Check that the head is within 0.3mm of your object.
  • For Huxley, adjust the height of the Z axis endstop, or for Mendel rotate the adjustment screw, and repeat until your height is set.

Step 4: Heaters

Tick the monitor check box to report the temperatures of your heatbed and nozzle. Ensure that the readings are similar to the ambient temperature of the room.


Command the heatbed to 45C (warm), tick the monitor checkbox and verify that the heatbed temperature reading rises and stabilises around 45C, and that the heatbed is actually warm.

Hot end

Command the nozzle to 100C and watch the temperature rise, overshoot and eventually settle around 100C. Keep an eye on the nozzle during this test. If you see lots of smoke come out of the hot end, turn off the heater. Repeat the test with a target temperature of 200C. The nozzle should reach the target temperature in about 1 minute or less and settle within a couple of degrees of 200C.

The nozzle heater resistor has a lot more power than is necessary, so the the control parameters are set to limit the available power. For the nozzle to reach a target temperature quickly, with minimal overshoot and fast settling time, the integral windup must be tuned for the target temperature. By default, this is set to 80 by the firmware, but the start_PLA.gcode and start_ABS.gcode files should set the appropriate value for that material. This is achieved by the following line:

M301 Ww, where w = 0-255. A higher value means more power available to the nozzle heater.

So, if your nozzle does not reach the target temperature, gradually increase W until the desired performance is reached. W=120 is not uncommon for PLA, and W=180 for ABS.

Once you have tuned this value to your print material, enter it into the relevant start.gcode file. These files are in the directory:


beneath wherever you have installed pronterface.

Step 5: Extruder

Once you have verified the nozzle behaves as expected, you can carry out a test extrusion by hand. Remove the brass bowden start piece from the extruder block and feed some PLA into the tube until it reaches the nozzle (beware of the filament snagging on the short piece of PTFE tube inside the barrel). Command the nozzle to 205C, and once it has reached and settled there, push the filament through and watch it extrude. The extrusion should be maintained with a steady but not excessive force.

Pull out the filament and reassemble the bowden tube for a test of the extruder drive mechanism. This time, click on IDLE or send an M84 command, and rotate the gears whilst feeding some PLA filament in through the extruder drive mechanism. Repeat the extrusion test, this time by manually rotating the large gear.

Finally, try extruding material by commanding the E axis. 200mm/min is a good speed.