Thursday 31 October 2013

Dual Extruders on the Lasercut Mendel90

The Lasercut Mendel90 was designed with a mount for up to 5 bowden extruders on the "extruder sandwich". So far I have been working with dual extruders: this is what the printer looks like in overview:

Here are some test prints with objects downloaded from thingiverse. The printer is also a remix on thingiverse.

Dual Extrusion dice on the Lasercut Mendel90
Dual extrusion dice by davemenc

Dual Extrusion cat on the Lasercut Mendel90
Two colour standing cat by nervoussystem

Dual Extrusion traffic cones on the Lasercut Mendel90
Traffic Cone for Dual Extrusion by CocoNut
As can be seen there are still some issues with ooze - pretty much like all dual extrusion systems out there but I have managed to counteract a lot of it by building a skirt all the way up the object and cooling the inactive nozzle.

Dual Extruders

The hot ends are the RepRapPro design, specifically meant for 1.75mm bowden systems and well proven on their printers.

RepRapPro hot ends mounted on the Lasercut Mendel90

I have also used RepRapPro mini extruders which are nice and compact with the inner gear mechanism.

RepRapPro mini extruder as mounted on the Lasercut Mendel90

The only changes I have made in the extrusion system as a whole is the bowden tube is more than twice as long to accommodate the difference in extruder mounting position and printer height.

Modified X Carriage

The main change to the Lasercut Mendel90 itself is a modified X carriage to mount the hot ends, including a mount for the breakout circuit board.

Lasercut Mendel90 Dual Extrusion X Carriage

The OpenSCAD render below shows the main components including the locations for the hot ends (in transparent grey).

Lasercut Mendel90 Dual Extrusion X Carriage OpenSCAD Render

Although the carriage belt attachment points have been moved slightly closer together the same length of belt will still fit. The new printed parts required are shown below: the belt fixings, bearings and breakout PCB can all be reused. The fan mount is very simple and not particularly effective - it uses a 40mm fan which only blows in the general area of the object being extruded.

 I have forked the Lasercut Mendel90 code on Github as "dual" and uploaded the changes (the stls that have "RRPE" in their files names.

Lasercut Mendel90 Dual Extrusion X Carriage OpenSCAD Plate

Wiring and Firmware changes

The extruders wired into the existing PCB utilizing the original E motor connections to carry the second heater current and the probe connection for the second thermistor:

Update for ease of understanding:
For reference the circuit board is labelled as follows, where the red numbers are not printed on the PCB

On the connector it should look like this:

More detail in the table below:

PCB (marking & red numbering)
E0 Thermistor GND
T0 (pin1)
Ribbon 4
T Pin 2
E0 Thermistor Signal
T0 (pin2)
Ribbon 3
T Pin 1
E1 Thermistor GND
Ribbon 4
P Pin 1
E1 Thermistor Signal
T2 (pin6)
Ribbon 5
P Pin 2
E0 switched GND
D10  -
Ribbon 9, 10, 11
H Pin 2
E0 +12V
D10 +
Ribbon 6, 7, 8
H Pin 1
E1 +12V
D9 +
Ribbon 13
MR Pin
E1 +12V
D9 +
Ribbon 14
MB Pin
E1 switched GND
D9 -
Ribbon 15
MG Pin 3
E1 switched GND
D9 -
Ribbon 16
MK Pin 4
E0, E1 always on Fan +
Ribbon 6, 7, 8
H Pin 1
E0 always on Fan -
Ribbon 3
T Pin 2
E1 always on Fan -
Ribbon 4
P Pin 1

The Lasercut Mendel90 kits use 26 AWG ribbon cable, rather than 28 AWG, which means the cabling can carry a higher current and is more than capable of the additional requirements of a hot end rather than a motor.

As there are already ground and +12V connections on the PCB the extruder cooling fans which are "always on" can be wired in, sharing the screw terminal spaces with the thermistor GND and hotend +12V. I was initially concerned that this arrangement might add significant noise to the thermistor circuits and degrade performance but I have noticed no adverse effects.

At the RAMPS end I took the software controlled fan cable from D9, put a plug on it and plugged it into T1 on the Panelolu2 adapter board. In addition the previously unconnected "probe" cable (wire 5 in the ribbon cable) has a plug put on it and then plugged into pin 6 on the T0-T1-T2 6 pin strip.

The firmware needs to be changed to use dual extruders on RAMPS (set "#define MOTHERBOARD 34 in Configuration.h and "#define EXTRUDERS 2" in Configuration_adv.h.

Filament management

The parametric spool holder comes in useful, although the bearings are not required for these light spools:

Lasercut Mendel90 Dual Extrusion Filament

I have also used some PTFE tubing as filament guides from the spools to the mini extruders.

How to implement it on your Mendel90

As this is still a work in progress I will not go into the fine detail of how to do it but hopefully this summary and the pictures will set anyone who wants to give it a go on the right track.
  • Print the parts for the X carriage and RepRapPro mini extruder.
  • Get hold of a two hotend kits. (a link to the RepRapPro eMakershop listing - similar hotend kits may be available elsewhere). You will need ptfe tube about 300mm long for each one, id 2.0mm od 4.0mm
  • Get hold of the vitamins needed for the mini extruders.
  • Assemble the mini extruders and mount on the Mendel90. If you have a laser cut Mendel90 this is straightforward. Any two positions will work:
  • Change the existing X carriage and extruder for the new x carriage. The fixings, belt and PCB can be re-used, and the E motor can be re-used on one of the mini extruders.
  • Wire it up according to the wiring information above.
  • RepRapPro has a good tutorial on slicing multi material files and setting the extruder heights and offsets, although I simply used a single walled cube, added twice to a multi material file and adjusted the offset until both walls printed on top of one another in X and Y.

Next Steps

The printer is working well in dual extrusion mode and the files are on github. I am really looking forward to see more Mendel90s out there with dual extrusion mods.  That said I have no intention of stopping here. Still on the todo list:
  • A better fan bracket that focuses the air on the extruded part, like the original Mendel90 one.
  • Improve the tool change gcode I use in Slic3r and tune the hot ends' PID, ooze temperature, etc to improve print quality and reduce print time.
  • 4 or 5 extruder carriage design - I will probably common the "cold" part of the hotend to reduce the number of fans and get the nozzles closer together.
  • New cabling plan for a 4 or 5 extruder setup.
  • Demonstrate the new electronics - more to follow on this in a couple of weeks.
  • Finish off the filament management with a guide incorporating a sponge cleaner
  • Design some 4 or 5 colour objects.
  • Ask RichRap for his "ultra easy dual mixer hotend" design!
All this will take some time so don't hold your breath! If you are just starting with 3D printing, or looking to make largely functional objects then I recommend staying with a single extruder system such as that on the standard Lasercut Mendel90.

Sunday 27 October 2013

OpenSCAD - Intro and Example: Designing a filament holder

Over the last few years I have increasingly used OpenSCAD for creating designs of 3D objects. Like many others I was initially put off by the lack of a WYSIWYG point and click interface - it takes time to get used to this scripted method of working.

The OpenSCAD design environment
OpenSCAD - scripted 3D CAD

A common question in forum posts is "why bother", a point and click CAD program is easier to use. For me the advantages come down to these key reasons:

  • Parametrization - Scripted CAD is at the core of the Thingiverse customiser and working with parameters is easy and natural to do when using a programming based approach.
  • Code re-use - Useful elements of designs can be used again and again, as you would with a library of functions in a program. A change to the library can easily be cascaded down to designs which use it.
  • Collaboration - The key advantage, tools like Git can be used to fork and merge the code. Many people can work on the same project in a robust way a method proven in software development.
Like everything its not perfect, I can see the following disadvantages in comparison to a point and click CAD program:
  • Not intuitive to start with - If you are used to learning a program by clicking on stuff to see what happens, as I do for most programs, it can be frustrating.
  • There is no simple way to import or export model files to other non scripted CAD programs other than as an .stl file - fine for 3d printing but not for people who want to use these other tools.
The rest of this (long!) post is a worked example using OpenSCAD to design a filament spool holder for the Lasercut Mendel90. I hope this will help to ease the transition into scripted CAD for those just starting out. This is not meant to replace the manual, or even be a tutorial of all functions. The OpenSCAD documentation is a comprehensive reference and links to a number of tutorials and other worked examples. The final filament holder code is available on github, and its a thing in the thingiverse.

A preview of what the spool holder looks like mounted on the printer:

On to the example!

Monday 21 October 2013

Mendel90 Lasercut - Calibration

Following on from my last post which gave an overview of the Lasercut Mendel90, this post outlines the steps to take to commission and calibrate the printer.

Fortunately, as the laser cutting process standardises the frame there are only a few steps to get up and running.


The Mendel90 Lasercut is not tied to a specific set of software and there are many great software packages out there for preparing 3D models for printing, for controlling the printer itself, and even for the firmware that runs on the electronics. The software covered here is what we have tested the most and recommend. The generation of the 3D models to print is outside of the scope of this post; a good place to start is Thingiverse which has many free models to download.

Slicing software

Slic3r takes a 3D model file as input and generates the "G Code" that instructs the printer. It is free and open source software that is constantly being improved and is available in versions for Windows,  Linux and Mac OSX.  Using this example of a herringbone gear set, the 3D model in "stl" format looks like this:

Slic3r allows you to set how you want the object printed, for example, you should set the layer thickness, density of infill, speed etc.

It produces text based instructions that look like this (a small excerpt from a file):
G1 Z0.250 F7800.000
G1 X60.415 Y89.757
G1 F1800.000 E1.00000
G1 X100.085 Y67.787 F1260.000 E11.03416
G1 X100.585 Y67.567 E11.15503
G1 X101.105 Y67.397 E11.27608
The G Code is simply a list of instructions which the printer follows one by one. There are many codes - the list on the RepRap Wiki is pretty comprehensive, but to get started you don't need to know this in detail as Slic3r handles it all automatically. 

We distribute a profile for Slic3r with the M90LC kit that allows you to get up and running quickly and the Slic3r manual is comprehensive.

Printer Control Software

The printer does not need a PC to run, as it can be controlled directly from the Panelolu2. However it is quicker and easier to control the printer with a PC for the initial calibration. To do this we use Pronterface which is part of Printrun. This is also available for Windows, Linux and Mac OSX.

Pronterface allows you to directly control the printer, move the axes, set the bed and extruder temperatures and load files to print. A nice feature is that it will render the G-code of a loaded file so it can be examined before printing. The screen capture below shows a slice through the herringbone gear G code


The RAMPS controller board on the printer runs Marlin firmware, which takes the incoming G-code from a connected computer or the SD card on the Panelolu2 and acts on it. In order for Marlin to function correctly it needs to be configured with the information about the printer it is controlling. We supply a version of Marlin with all these configuration changes made and only two parameters need to be tweaked during calibration. For an overview of the basic configuration changes possible, see this blog post.

The Arduino software environment is used to upload the firmware to the board. Firmware is updated once during calibration and then should not need further configuration unless you want to take advantage of new features in future firmware or modify your printer.


Before calibration a number of simple tests are run to ensure everything is hooked up right.

Communication in Pronterface: on connection the following should be displayed:
Printer is now online.
Marlin 1.0.0
echo: Last Updated: Oct  8 2013 08:22:09 | Author: (T3P3, M90LC v1.0)
Compiled: Oct  8 2013
echo: Free Memory: 4340  PlannerBufferBytes: 1232
echo:Hardcoded Default Settings Loaded<
echo:Steps per unit:
echo:  M92 X80.00 Y80.00 Z4000.00 E520.00
echo:Maximum feedrates (mm/s):
echo:  M203 X300.00 Y300.00 Z3.20 E45.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X1000 Y1000 Z10 E45
echo:Acceleration: S=acceleration, T=retract acceleration
echo:  M204 S1000.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00
echo:Home offset (mm):
echo:  M206 X0.00 Y0.00 Z0.00
echo:PID settings:
echo:   M301 P38.60 I4.55 D81.79
echo:SD init fail

Reading through this list you will see that it tells you what most of your Marlin configuration.h settings are.

The axes are then checked to ensure they trigger the limit switches, move in the right direction when commanded and that the Z axis limit switch is not too high. The extruder and bed are heated up. Once its all confirmed to work as expected the next step is calibration.

Calibration - Step 1

First the X and Y axis are set so that the extruder is the same distance above the print bed at every point. This is made simpler by using 3 point mounting for the bed and by leveling the X axis on the Z rods.

Using a sheet of paper as a feeler gauge, the distance between the extruder and the bed is set to be equal at X min and X max by moving the X-ends up and down the Z rods (blue arrow in the picture above.

Once the X axis is parallel to the bed, the single screw at the front of the printbed is used to move the bed up and down at the front until the bed is level in the Y direction. Once the bed is completely level the Z height is set. This is measured from the extruder at the centre of the bed up to the Z endstop and this number is entered into firmware.

Calibration - Step 2

Next the extruder step (E-steps) setting is checked to confirm it pushes the right amount of filament through. The E-steps are influenced by the filament type, and the hobbed bolt diameter. We set the firmware up for the hobbed bolts and filament we supply so only minor tweaking should be needed.

Using a ruler or calipers a length of filament (30mm to start) is measured off upwards from the top of the extruder. The extruder is then moved in Pronterface by that amount and if there is any difference the extruder steps per mm is recalculated to correct for the difference. The new extruder steps is then entered into the Marlin firmware.

Thats it! - time for a test print:

The fan has been left off up to this point to make calibration easier - it is now time to fit it.

Most people are opting for the acrylic cabinet which can also be fitted at this stage and goes together in a similar fashion to the frame with M3 screws and square nuts. Fitting it does not disturb the printer calibration:

The entire assembly and calibration process is described in more detail in the manual supplied with the printer kits.

I hope that helps to show what goes into the setup and calibration of the printer following assembly.

Monday 7 October 2013

Mendel90 Lasercut - Overview

Thanks for all the interest we have been getting for the new Lasercut Mendel90! This post is to give an overview for those new to 3D printers and answer questions about how easy the M90LC is to assemble. It is not designed to replace the detailed assembly instructions and user manual which are now awaiting final feedback from our beta testers before being published.

Printer Overview

The Mendel90 Lasercut is a RepRap printer: there is much more information about RepRaps in general on the wiki but in summary it is a printer which can print the plastic parts that go into its assembly along with many other interesting and useful things. To get an idea of what people are using RepRap-style printers for, a good place to look is Thingiverse. Most CAD and 3D design software can export ".stl" files which the printing software uses to generate print instructions. The printer works by laying down layers of plastic, one on top of the other, to build up an object, in a process called fused filament fabrication.

The Mendel90 lasercut has a build area of 200mm x 200mm x 200mm and comes with a single 0.4 mm extruder nozzle which can reliably print layers as thin as 0.1mm. With a smaller extruder nozzle it can reliably print as low as 0.02mm.

Looking at the printer from the front, the Mendel90 LC axis are X left and right, Y backwards and forward and Z up and down. The print head is in the 0,0,0 position when it is fully to the left (X=0), the heatbed is fully to the back (Y=0) and it is just touching the surface of the glass on the heatbed (Z=0). The "homed" or parked printhead position is at 200,200,200.

The main components of each axis are:

The frame parts are the base, portal, buttresses, back-top and extruder "sandwich" (for potential future developments) 

The electronics are mounted at the right buttress along with the power supply unit. They support the addition of other types of electronics in future upgrades.

General points

  • The printer is made up of sub-assemblies which need to be completed before each major part of the printer is assembled. The sub assemblies can, in general, be worked on in parallel if more than one person is assembling the printer, reducing the build time.
  • The printer design in regularly updated, so refer to the manual that is distributed with your printer for the most up to date instructions.
The next section will provide an overview of the assembly process

Wednesday 2 October 2013

Fun with bee vision colour spaces

I recently spent some time collaborating with Dr Lucas Wilkins, a researcher at the University of Sussex, helping him to visualise the bee vision colour spaces he has been working on. He wanted to be able to show the three dimensional models as a plysical object and 3D printing them is the obvious choice. 

As a 3D printing problem the shapes are interesting because they have no straight lines or flat surfaces, all edges and curves, the "bottom" and "top" are sharp points. After considering printing them with support we tried a simpler option first - slice them in half and then glue them back together with acetone vapor post processing.

A bee vision colour space picture by Dr Wilkins, University of Sussex

After successfully printing the colour spaces we used OpenSCAD to create frames ( in purple PLA in the photo above) by subtracting the colour space shape from the frame for a secure fit.

The details are here in his blog which also gives the links to information about colour spaces and what they are.

All the printing was done on our new Lasercut Mendel90, which will be available from our webstore shortly.