RepRapPro Tricolour/zh cn

From RepRap
Jump to: navigation, search

Introduction | Frame assembly | Y axis assembly | X axis assembly | Z axis assembly | Heated bed assembly | Extruder drive assembly | Hot end assembly | Wiring | Power supply | Commissioning | Printing | Multi‑colour/multi‑materials | Colour Printing - Slic3r | Colour Printing - RepRapPro Slicer | Maintenance | Troubleshooting | Improvements

A notice about these instructions!

These instructions are open to editing by everyone and anyone.
For the official, and most up to date, instructions, see the RepRapPro wiki here


该页面将介绍如何装配一台多色(多材料)的RapRep Mendel This page describes the steps to build the multi-material and multi-colour version of RepRapPro Ltd's version of RepRap Mendel.


the construction is the same as for the single-colour machine, and you should follow the instructions for that through to the end and get your machine working as a Mono before starting the work on this page. The experience you will gain doing this will speed the process, and help you troubleshoot any problems.

If you are upgrading an existing Mono or Legacy Mendel to colour, still read through the single-colour instructions - at various points there are extra tasks that you need to do for the colour upgrade. These sections are highlighted in green on the relevant pages, but are also linked below. Also, you will need to update the firmware of you Mono/Legacy Mendel to the multimaterials firmware; see HERE for instructions on firmware updating.

When you have followed the single-colour machine instructions through to the end, then start...

Extra hardware build

Extruder drives

You will need three drives in total. Build two more as described HERE and fit them evenly spaced along the top bars of the machine. The first one should have been fitted on the left, and attached to the first (master) Melzi. The other two can be mounted middle and right, and will connect to the slave Melzi.

Hot ends

Build two more hot ends, as described HERE

Our standard layout is to fit the first hot end in the front-left mounting point on the X carriage, the second front-right, and the third back-right. But you can always change the order; you just need to change the offsets for the two extra extruders, set using the G10 gcode (instructions below).

Adjust the cap screws on the nozzle mounts to raise each hot end, so that the first extruder is lowest and the other two are about 1mm higher.

Power wiring

If you are upgrading an existing Mono or Legacy Mendel with a colour enhancement kit, you will need to wire up your XLR socket to provide power to the slave electronics. Follow the green instructions HERE

Installing the slave electronics

Hardware Quantity Reprappro-multi-materials-slave-controller-parts.jpg
Slave controller board 1
10-way pin header 2
Printed PCB clips 3
M3 nuts 3
M3 washers 6
25mm M3 screws 3
3mm I.D. poly tube 15mm
Crimp shell connectors 8 (picture is wrong - it shows 6)
3-way shells 2
4-way ribbon cable 700mm
Heat-shrink 30mm

Remember to disconnect both the power and the USB before making any electrical changes to your RepRap.

If the 10-way header pins are not already soldered into their locations in your Melzi master and slave controllers:


Solder them in now. You will find this easier if the circuit boards are not mounted on the machine.

The slave controller is mounted in exactly the same way as the master controller, but on the opposite side of the machine. Mount it with the screw connectors at the back, and the USB connector at the front and the bottom. Wiring connections are the same, but go top-to-bottom rather than bottom-to-top when compared to the master board on the other side.


Wiring diagram



Extruder 1 should already be wired into the master controller from when you got the machine working in single-colour mode.

Wire the other two extruders to the slave controller.

Extruder 2

  • Motor wires go to the 'X motor' screw terminals of the slave. The order of the wire colours is the same as the order of the extruder drive wires on the master controller, but top to bottom - black, green, blue, red.
  • Hot end heater wires go to the 'hot end' screw terminals of the slave.
  • Hot end thermistor wires go to 'etemp' screw terminals of the slave.
  • Hot end fan wires go to 12V power input. Do this at the same time as the power wire below. Check polarity, the fan only works one way.

Extruder 3

  • Motor wires go to the 'Y motor' screw terminals of the slave. The order of the wire colours is the same as the order of the extruder drive wires on the master controller, but top to bottom - black, green, blue, red.
  • Hot end heater wires go to the 'bed' screw terminals of the slave.
  • Hot end thermistor wires go to 'btemp' screw terminals of the slave.
  • Hot end fan wires go to 12V power input. Do this at the same time as the power wire below. Check polarity, the fan only works one way.


Take the insulating tape off the power wires and connect them to the slave controller, along with the hot end fan wires for the extruders. Make sure to get the polarity right - the +12V is the top terminal on the slave, the ground is the bottom terminal. The polarity is marked on the PCB in front of the terminals with a + and -, if you are not sure.

Master/slave communication cable

Run the tip of a felt pen along between two of the wires in the ribbon cable so you can tell which is which from either end. (This is a generic picture; the actual ribbon you want is 4 way.)


Take a 660mm length of 4-way ribbon cable. Separate out three of the four wires at each end and put a three-way crimp housing on each one. NOTE: the Rx and Tx wires cross over; see below. Put two single crimp connectors on each end of the fourth wire.


Use the resulting cable to connect the master controller to the slave:

  • Rx on the master goes to Tx on the slave,
  • Tx on the master goes to Rx on the slave, and
  • SCL on the master goes to SCL on the slave.
  • Rst on the master goes to Rst on the slave.


400px 400px
Master with communication cable fitted Slave with communication cable fitted
Note Rx/Tx crossed over

Run the four wires across one of the bars at the front of the machine, where no other wires run, to minimise interference.

Important: In the future, if you upgrade the firmware in either the master or the slave controller (details of how here), you must first disconnect one end of this 4-way wire. Reconnect it when you have finished reloading the firmware.

Really Important: Jumper settings

The autoreset jumper on the Melzi, at the end of the board nearest the thermistor connectors, needs to be removed.
Move the central power selector jumper to short the two pins nearest the screw connectors. This will power the logic from the main power supply, not from the USB. Set the jumpers on both the master and the slave the same. If you don't do this, when you connect to the Master in Pronterface, the slave will fail to initialise with the message:

Slave init. Please wait ...
....................Slave init FAIL head 1

Check wiring

Use your multimeter to check that the resistance between the case of the SD card holder on the slave controller and the outer metal shell of the XLR power input plug at the back of the machine is 0 ohms.

Check that the resistance between the + power input screw connection on the slave controller (the wire with no stripe) and the + power input screw connection on the master controller is 0 ohms.

Measure the resistance between the two screws on the power connector of the slave. This may start low and then rise. (This is the capacitors in the circuit charging up with the tiny current from the meter.) It should level out at a few hundred ohms.

Measure the resistance between the two screws on the bed power connector of the slave. This should be about 3 ohms.

Measure the resistance between the two screws on the hot-end heater resistor connector of the slave. This should be about 3 ohms.

Check the heated bed temperature sensor connector of the slave. The resistance should be about 10 kilohms. This is not just the resistance of the sensor. Other parts of the circuit on the controller board are in parallel with it.

Check the hot-end temperature sensor connector of the slave. The resistance should be about 10 kilohms. This is not just the resistance of the sensor. Other parts of the circuit on the controller board are in parallel with it.

Checking thermistors via Pronterface

Leave the mains power off switched off, and put the central power jumper to USB power, on the two pins furthest from the screw terminals. Now connect to the slave directly with Pronterface, by USB cable plugged into the slave. It will appear to hang with "Connecting...". Press reset on the slave, and you should get the message:

RepRapPro slave controller Version 1.1, 2013-05-15 restarted.
 Temps:22.37 23.46

If you get something like:

RepRapPro slave controller Version 1.1, 2013-05-15 restarted.
 Temps:-273.15 23.46
ERROR: temp bounds exceeded

after this, your thermistors are not reading correctly. Check your wiring, particularly the thermistor wires. The temperature reported will indicate which thermistor is not reporting correctly; the first temperature is T1, the second T2. If the board doesn't report temperatures, you need to update the firmware on your Slave. See guide HERE.

Test that everything is working

If you are upgrading an existing RepRapPro Mendel then you will need to upgrade its firmware in its master controller. There are instructions here. If you have got a new Mendel together with the colour upgrade your new master controller should have the correct firmware already. Similarly a new slave controller will have its correct firmware.

Plug in the power and USB, and turn your RepRap on.

Run Pronterface and connect it to your RepRap.

Move the axes by a few millimeters in the + direction to make sure that they are still all working, and turn on the bed and check that it starts to warm up. Turn the bed off again.

Now home the X, Y, and Z axes, then raise Z by 10mm.

In Pronterface's "Send" window (bottom right) that allows you to transmit G Codes directly to your RepRap type in and send the following three commands:

G10 P0 X0 Y0 Z0 S100 R80
G10 P1 X-34 Y4 Z0 S100 R80
G10 P2 X-11 Y51 Z0 S100 R80

Nothing should happen.

The P numbers are the numbers of each extruder. The G10 command sets distance offsets in X, Y and Z for the numbered extruder and the working (S) and standby (R) temperatures it will use.

None of these settings have any effect until the given extruder is selected.

Move X and Y to (100, 100).

Select the third extruder (numbering starts at 0):


(The "T" stands for "tool" - a G Code standard.) You should see its temperature start to rise. When it reaches its target temperature the X and Y axes will move to place it roughly where Extruder 0 was (that was the X-11 Y51 in the G10 command).

Select T1 and the same should happen.

Select T0 and the same should happen.

Send an M0 (switch motors and heaters off until they get another request) command.

Repeat the input of the G10 codes above with higher temperatures:

G10 P0 X0 Y0 Z0 S200 R150
G10 P1 X-34 Y4 Z0 S200 R150
G10 P2 X-11 Y51 Z0 S200 R150

These parameters need to be stored using an M500 command before your first print. Equally whenever you wish to update your offsets, this process may be repeated and stored again using an M500. The procedure for measuring offsets is outlined later, however the values above are approximately right for a Three colour first generation Mendel. For the latest Tricolour Mendel approximate values are below:

G10 P0 X0 Y0 Z0 S200 R150
G10 P1 X-42 Y0 Z0 S200 R150
G10 P2 X-42 Y-32 Z0 S200 R150

Select "Motors Off" (top left in Pronterface).

Insert three different coloured filaments into the three extruder drives and feed them forward by hand turning the big gears until they are just visible in the PTFE tubes that lead to the hot ends.

Select each extruder in turn using the T commands described above, wait till it gets to temperature, and then drive the filament forward down the PTFE tube until it enters the nozzle (you can do this quite fast - say at 800 mm/min - but make sure you don't hit the hot end at that speed). Select a slower speed (200 mm/min for an 0.5mm nozzle; 80 mm/min for an 0.3mm nozzle) and drive the filament forward to extrude it and check that extrusion is working.

At the end of each test of each extruder, reverse a 5mm length of filament to reduce the pressure in its hot end (it's a good idea to get into a habit of doing this whenever you test an extruder by hand).

Find a pair of tweezers or a fine pair of needle-nosed pliers.

Send an M0 command and watch the temperatures drop. When they get to around 120 oC any plastic still on the ends of the nozzles will be sticky enough to pull it all away in one piece with the tweezers.

Carefully clean the nozzles of any plastic on their outsides.

Send the carriage and bed to X=100mm, Y=100mm. Then zero Z.

You should have left the second and third nozzles very slightly higher than the first on the X carriage when you put the hot ends on it. Now adjust the heights of the second and third nozzles so that they are at the same level above the glass as the first.

Your first multi-colour print!


Download the colour test object simple-test.rfo (download the individual white, red and green stls for Slic3r) from our Github repository here. Don't worry if your test colour filaments are not white, red and green as in the picture above. You will still be able to print it in whatever three colours you have.

You have a choice of slicing software to use. You have already installed Slic3r, but it needs to be set up for 3 colour printing; see Slic3r_Multicolour. You can also use our home-grown RepRapPro Slicer. This gives a huge amount of control over your prints; see RepRapPro Slicer.

But before you do, read the next section on colour registration.

Head Levelling and Registration

To get all three heads level, do this:

  1. First make sure that all three heads are clean. If you have solidified PLA on them it will be difficult to judge the position of the nozzle.
  2. Call the nozzles A, B and C (the order doesn't matter). Tighten the screws to raise B and C by about 1mm, and then raise A by about 0.5mm.
  3. Move the head so it is roughly in the middle of the glass plate and lower it to Z=0. If A is still clear of the glass, adjust the Z-height screw and lower again. You want A just touching the glass. Make sure that it is just touching, not pushing against it (remember that the glass is sprung and it will move down under a push).
  4. Then gently lower B and C by loosening their screws until they just touch the glass too. Then all the heads should be level.


Stop your print after it has finished the first layer (press the reset buttons on the master and slave controllers, then move the X carriage to one side by hand to stop the nozzle sticking to the print).

The result will probably look something like the above picture. The rectangle at the front is the shield structure the software builds to keep the nozzles clean (which is why it is so dirty).

But as you can see, also the heads are not quite in registration. Use digital callipers to measure the X and Y errors (dx and dy) for each colour (purple and red here) relative to the plastic from Extruder 0 in the machine (white here).

To find the current offset values values, use the Send box in Pronterface to send an M503 command to list them (you will get a lot of other data as well; the offsets are at the end).

You can set the correct offsets using the G10 G Code (see here for a complete list):

G10 P2 X-33.7 Y3.2 Z0

This says set the X, Y and Z offsets for extruder 2 (that's from the P2) to (-33.7, 3.2, 0). The precise meaning of the X, Y (and Z) values is: "move this extruder by this much to place it where Extruder 0 is". As you can see, in the picture the red extruder (Extruder 2) is too far in +X and too far in +Y.

This means that the dx and dy values you measured have to be subtracted from the X and Y values on the G10 P2 line.

Use the Send box in Pronterface to send the right G10 commands to your RepRap. You should leave the values for P0 to be all zero (that is the default, so you don't need to set that) and just correct the values for P1 and P2.

To save the values you set, send an M500 command. This will write the values into EEPROM in the controller, and then they will be picked up again automatically when you next turn it on.

You should never have to change the Z values from 0, incidentally. If you do the heads will collide with your print. (They are just there for completeness.) You should always adjust the Z offsets by using the nuts on the screws on the X carriage.

Hints and tips for multimaterial printing

  1. Make sure that you have the Watch or Monitor Printer checkbox in Pronterface unchecked when using the multicolour machine. Continually bombarding it with requests for its temperature (especially during a print) can occasionally cause trouble with the communications between the Master and the Slave controllers. (The problem occurs when the Master has requested the slave for its temperature as part of its internal operation, and Pronterface then coincidentally asks for that temperature again before the Slave has had a chance to reply to the first request.) You can click the Pronterface Check temp button occasionally if you want - the probability of the problem occurring with just one click is vanishingly small.
  2. If you are running Pronterface and you press the reset button on the Master or Slave controllers, give things about 10 seconds after the controllers have rebooted themselves before you ask them to do anything.
  3. Accurately setting the number of stepper steps per millimetre of filament fed for a single-material machine is described here. Unfortunately Marlin can't handle different numbers of steps per millimetre for multiple extruders. The way to get round this is to set the value right for Extruder 0, and then to make small adjustments to the value of Extruder1_ExtrudeRatio (and Extruder 2 as well) in the RepRapPro Slicer software. For example, for Extruder 1 if you ask the machine to extrude 100mm of filament and you get 98 mm of filament, set the value of Extruder1_ExtrudeRatio to 1.0204 (= 100/98).