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 most part, 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 with a single colour/extruder before starting the work on this page. If you are upgrading an existing 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.
When you have followed the single-colour machine instructions through to the end, then start...
Step 1 - Installing the slave electronics
Remember to disconnect both the power and the USB before making any electrical changes to your RepRap.
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 3 way.)
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.
Take the insulating tape off the power wires and connect them to the slave controller. Make sure to get the polarity right.
The 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's motor goes to the X motor output of the slave, and its head goes to the slave's extruder heater and extruder thermistor connectors.
Extruder 3's motor goes to the Y motor output of the slave, and its head goes to the slave's bed heater and bed thermistor connectors.
Finally, take a 660mm length of 4-way ribbon cable. Separate out three of the four wires at each end and put a three-way shell connector on each one. Put a 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.
Run the four wires across the bars at the front of the machine where no other wires run to minimise interference.
You will get the neatest result if you make the wire slightly too long, connect one end, run it and cable-tie it round the frame, then cut it to length and fit the connectors at the other end.
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.
Step 2 - Check
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.
Step 3 - 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 S205 R160 G10 P1 X-34 Y4 Z0 S205 R160 G10 P2 X-11 Y51 Z0 S205 R160
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.
Step 4 - Your first multi-colour print!
Download the colour test object three-colour-testblock.rfo 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.
Then go to the RepRapPro Slicer page to find out how to slice it to G Codes and then print it, but before you do read the next section on registration.
Step 5 - Registration
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. To find the set values at any time, send an M503 command to list them (you will get a lot of other data as well; the offsets are at the end).
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
- 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.
- 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.
- 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).