MakerBot Print is our newest print-prepration software, which supports native CAD files and STL assemblies,
allows you to interact with all your printers via the Cloud, and many other exciting new features.

Download Now


E3D V6 - Slim heat break and filament cooler

by H5Labs Mar 12, 2019
Download All Files

Thing Apps Enabled

Please Login to Comment

how does the extruder config work. The M2 stock extruder stepper is already geared 5-1, and adding a bondtech geared extruder, it's more gearing. Is that necessary, can you save weight by using a smaller stepper for the extruder? I'm looking into moving to a piezo bed leveling on the M2 and easiest path is to use an e3d hotend.

I am working on a write-up and some 3D-printed parts that will help anyone who wants to make this modification to their M2. I will post this to Thingiverse once I get it completed. But, until then...

I used the new BondTech QR geared extruder stepper for 1.75mm filament (NOTE: I purchased the mirrored version of the QR extruder to minimize impact to my x-axis travel). It mates perfectly with the M2 extruder bracket and the extruder wiring harness plugs right in (But, you will need to re-position the wires [M2 - blue, space, yellow, green, space, red: BondTech - red, space, blue, green, space, yellow]). WARNING: Do not plug in or remove any stepper motor connector with power applied to the RAMBoard - you could fry the stepper motor driver.

Personally, I like the extra gearing of the BondTech stepper. Although the M2 stock extruder stepper could be used on the BondTech QR extruder - to do so, you would have to remove the gear from the BondTech stepper and place on the M2 stepper. Everything else should bolt right up.

NOTE: If you use the BondTech stepper, you will have to re-use the three stepper motor mounting screws. To do this, you will need to remove three screws from the BondTech stepper and use the longer mounting screws to bolt it to the stepper mount.

If you use the BondTech geared stepper, you will also need to enlarge the connector opening in the extruder "junction box". This is easy to do with a hammer and straight X-acto razor blade. Again, precision is not required. I plan to post a redesigned 3D-printable box as part of my write-up.

The E3D V6 hot end fits perfectly into the BondTech extruder - easy as you can get. But, the E3D V6 will not clear the original M2 hot end mounting plate. To minimize impact to the movement and home positions for the X and Y axes, the M2 hot end mounting plate will need to be cut (ouch!). But, not a difficult task - a bandsaw or hacksaw will work and it does not have to be exact - it just has to create clearance for the new hot end. I cut mine to be about flush with the X-axis slide-rail platform (it sticks out by about 3-4mm).

The included 100K Semitec NTC thermistor plugs right into the M2's thermistor connector - easy. The wires for the 30W heater cartridge will need to be routed down through the wire loom and into the RAMBoard control box and connected to the heated bed connections -OR- you can cut the connector off the original heater cartridge and splice it onto the E3D V6 heater cartridge (you will have to cut the E3D V6 wires shorter for this to work). I did the former but may do the latter as the wires are just a tad bit short for my taste.

The 30mm fan included with the E3D V6 does not directly plug into the M2's fan connector. So, I cut the connector off the M2's larger fan (the one originally used for filament cooling) and spliced it using solder and heatshrink onto the wires of the new 30mm fan.

For filament cooling, I simply repurposed the original 40mm fan used to cool the M2's extruder but plugged into the filament fan control wires instead of the extruder cooling fan wires. To mount the two fans, I developed this 3D print set so that no mechanical interference issues were introduced with these changes.

The X-axis home bump stop needed to be extended by about 10.3mm to maintain the same approximate X-axis home position. I simply 3D-printed a 10.3mm x 10mm x 4.5mm high block and glued it onto the existing X-axis bump stop temporarily. I have redesigned the M2 X-axis bump stop to add this additional length and will post that as well.

That completes the hardware/electrical modifications.

To accommodate these HW changes, a few settings had to be modified in the firmware. The very first thing I did was use Simplify 3D's communication window to copy the printer's settings that are communicated when the printer is first connected. That way, I could compare once I programmed my updated firmware. The next thing I did was to back up the existing flash and eeprom data contained in my M2's RAMBoard (this is an optional step). This was accomplished using an Atmel AVRISP programmer (Digi-Key P/N 1597-1524-ND - these are also prolifically available on Amazon from various vendors) and the following avrdude commands (download WinAVR from sourceforge) (NOTE: I experimented with this process first with a standard Arduino Mega 2560 board before I attached the programmer and attempted with my RAMBoard):

To back up the flash program:
At a command line, type: avrdude -p atmega2560 -c stk500v2 -P COMx -b 115200 -U flash:r:MakerGear_M2_original_flash_backup.hex:i
where "COMx" is the COM port assigned to the programmer - check your device manager (if using Windows) to see which COM port was assigned to it.

I found nothing stored in my RAMBoard's eeprom. But, if you've used any GCODE commands to store custom printer configuration settings, then these are stored in eeprom and you will most likely want to back them up. To back up the eeprom:
At a command line, type: avrdude -p atmega2560 -c stk500v2 -P COMx -b 115200 -U eeprom:r:MakerGear_M2_original_eeprom_backup.hex:i

The next step is to go to MakerGear's wiki page (http://makergear.wikidot.com/m2-firmware) and download the firmware for your printer (the M2 uses a version of Marlin 3D printer firmware). And, if you don't already have it, go to arduino.cc and download and install the IDE (Integrated Development Environment). In the Arduino software, navigate to the Marlin firmware directory and open "Marlin.ino". Changes will need to be made to the "Configuration.h" firmware file to accommodate the following:

I downloaded and made changes to version 1.0.2 of the firmware, so here's where/how I made these changes in "Configuration.h" (your line numbers may differ slightly):

Line 107: *New thermistor setting (M2 hot-end uses setting 1 - E3D V6 using 100K Semitec thermistor uses setting 5)
OLD - #define TEMP_SENSOR_0 1
NEW - #define TEMP_SENSOR_0 5

Line 327: *BondTech mirrored extruder requires inverting the stepper motor direction
OLD - #define INVERT_E0_DIR false
NEW - #define INVERT_E0_DIR true

Line 486: *New step rate for the extruder stepper (M2 stepper is 471.5 [but, probably different if using it with the BondTech extruder as the gear diamter at filament contact is likley different] - BondTech Stepper for 1.75mm filament is 476.5)
OLD - #define DEFAULT_AXIS_STEPS_PER_UNIT {88.88,88.88,1007.7,471.5}
NEW - #define DEFAULT_AXIS_STEPS_PER_UNIT {88.88,88.88,1007.7,476.5}

Once you make the changes, save the file. Then, under "Tools" -> "Board..." -> Select "Arduino/Genuino Mega or Mega 2560". Under "Tools" -> "Port" -> select the COM port associated with your 3D printer (your M2 should be plugged into the USB port).

Then, select "Sketch" -> "Verify/Compile". If it fails to compile due to "error: using typedef-name 'fpos_t' after 'struct'...", you will need to make the following corrections in the "SdBaseFile.cpp" file (search for fpos_t):

about line 297:
OLD - void SdBaseFile::getpos(fpos_t pos) {
NEW - void SdBaseFile::getpos(filepos_t
pos) {

about line 928:
OLD - fpos_t pos;
NEW - filepos_t pos;

about line 1495:
OLD - void SdBaseFile::setpos(fpos_t pos) {
NEW - void SdBaseFile::setpos(filepos_t
pos) {

Click SAVE. Then make the following corrections in SDBaseFile.h (search again for fpos_t):

about line 34 (this is just a comment - so not that important - just nice to do):
OLD - \struct fpos_t
\struct filepos_t

about line 38:
OLD - struct fpos_t {
NEW - struct filepos_t {

about line 43:
OLD - fpos_t() : position(0), cluster(0) {}
NEW - filepos_t() : position(0), cluster(0) {}

about line 199:
OLD - void getpos(fpos_t pos);
NEW - void getpos(filepos_t

Click SAVE. Then, the compile should work fine.

Then, select "Sketch" -> "Upload" to program the new, updated firmware to your RAMBoard. After it completes, go into Simplify 3D (or other control software) and look at the communications window to verify your changes are implemented.