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

Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Dondolo v1.01b

by Gianni3D Feb 9, 2015
Download All Files

Thing Apps Enabled

Please Login to Comment

No Enough Grip not Work in Dual for mee . Only SIngel Use

I built the Dondolo but I have the problem that I can not find the right Mk7 Gear. I have a MK7 Gear with 8mm outer diameter, a MK8 with 9mm and a MK9 with 13mm. The first two do not have enough contact pressure where only one of the two filaments is being conveyed, with the latter one being pulled in and the other pulled out. As arms for the Dondolo I use the following remix arms of Thingiverse https://www.thingiverse.com/thing:2780478 maybe someone knows why this may be or what I have done wrong maybe. Furthermore, not both are Nozzels in the middle But one is at 18.8mm night left offset when looking from the front of the printer I use the following pendulum https://www.thingiverse.com/thing:1687120 because I use the hot ends shown there in the pendulum is also a hot end at 0.2 lower than the other abe both hot ends are, I think times identical built.

Dondolo modified arms remix
Dondolo Pendulum for ED v6 clone
by Adizag

I used MK8 gears with a outer diameter of 7mm. I got really good results using 172.50 steps with PLA, ABS, and PETG once spring tension set correctly.

I also had the issue of the one filament being pulled out when the other was being pushed in. If you look at the pendulum I posted it has dimples near the drive gears, however this is for a DyzEnd that I never really got working. What works really well for me was those dimples using super glue + baking soda on the original design, which corrected this in/out issue for me.

I had a lot of issue with the servo and finally resolved by using external +8V power supply. I posted this with some firmware info on the comments below.

The extruder offset that I used the provide the best alignment was:
Extruder 1:
X: 9.5
Y: 1.25
Extruder 2:
X: -9.5
Y: -1.25

Hope that helps.

Hi everyone,

I'm using Marlin 1.1.9 and I configured it like ElectroFlux said below.
Question: in slic3r, do I kneed to put a M280 command in the "tool change gcode" or do Marlin recognize that the servo should rotate when it sees that the gcode goes from E0 to E1 (or vice versa) and so leave the tool change gcode box empty? Is there any special thing to do in slic3r (besides selecting which stl each hotend should print) I should know about?

Thanks a lot!

TheBlackOmega, sorry for delay, just saw your post today.
I'm using Cura, which does not require M280 and puts the T0/T1 tool change in when needed.
I used the below:

Extruder 1 End Gcode: G1 X150.00 Y160.00
Extruder 2 End Gcode: G1 X130.00 Y160.00

I did this due to use of a Prime Tower roughly 20mmx20mm at fixed location of X140.00 Y160.00. This way when the carriage moves to the Prime Tower at the end of the tool change, the new nozzle will be in the middle of the Prime Tower (at the fixed location, which is also in the slicer). Then as it starts the Prime Tower (from the middle/inside) it wipes the nozzle and leaves any extra crap in the middle of the tower. Sorry, I don't have experience with Slicer and dual nozzles and tool changes, but hope this helps.

Hi ElectroFlux, thanks for the help.
As I understand it, Marlin internally does the M280 when changing filaments (which makes sense: that's why it's set in config.h) but I can "manually" move it from a console using M280. I'll post an up to date guide once I'll be done building mine, using a recent Marlin.

TheBlackOmega, I guess what I meant to say is that when Cura does the tool change, is just issues with T0/T1 and agree with you that Marlin may internally issue the M280. I too can issue the M280 in the console, and actually used this when tweaking the firmware settings below regarding the servo back in May. In summary, you can use M280 in to console for tweaking firmware settings (like the servo), but the Cura slicer ultimately just puts T0 or T1 in the actual GCODE (don't remember seeing any M280s in the sliced GCODE).

Comments deleted.

Hello, сan you please send email me the solidworks or stp files afillatov@gmail.com ?

Hi Artfill92.

I haven't seen the original author replying to many of the comments for a while now.
Just a heads-up that the program FreeCAD (which is free) will convert or Save-As STL files as STEP files.
I needed to use the same, as many of the FreeCAD assemblies I work with only places STEP files in assemblies correctly.

Can you please email me the solidworks or stp files if it does not bother. nurmasaidov@gmail.com

Крепление для anet a8 можно переделать?

А текущее пробовал? Не подходит?

На 2мм уже чем надо межосевое подшипников валов оси x.

Кто-то делал dondolo на anet a8? Куда сервопривод и хотенд второго экструдера подключать?

Not sure if you're still responding to comments, but here goes. I noticed there are several holes in the design that look like they'd be for bar and button magnets. Was that an abandoned design concept but left in the models, or was that missed in the materials list and assembly instuctions?

Thanks for great design.
I need to aplly dondolo on my prusa type printer. my printer is consist of MKSGEN1.4 board and mini12864lcd.
I tried to upload the firmware from Marlinkimbra, but it failed to upload..
So I want to try modify my own firmware. my firmware version is marlin1.18.

I can't find “else if(code_seen('T'))” on Marlin_main.cpp
Plase let me know how to apply dondolo to Marlin1.18.

Search for the line “else if(code_seen('T'))” and modify the code as shown:
//Added for DONDOLO dual extruder
if(tmp_extruder == 0) {
if(tmp_extruder == 1) {
if(tmp_extruder >= EXTRUDERS) {

With Marlin version 1.1.8 you DO NOT need modify the Marlin_main.cpp as documented above / by author. I also needed to change the following in my configuration.h with Marlin 1.1.8 and got this working just fine.

I'm using an MK8 gear with a 5mm shaft for 1.75mm filament and needed to tune my extruder steps from 100 (with MK7 gear) to 172.50.

Hoping to publish a REMIX soon with all the parts (have carriage that works with this and 2020/2040 profiles), firmware, and slicer settings changes needed to make this work 100%. I had issues with the standby temps being too low and also needed to lax the Thermal Runaway settings in the advanced configuration due to false heater failed errors.

The biggest issue I had starting out with this is that I originally powered the servo from the Ardunio 5-volt supply. After switching the servo several times, the Ardunio would RESET, probably due to the voltage dropping due to the higher current draw of the servo. I then switched to an EXTERNAL 5-volt supply, and while the RESETING stopped, I noticed that the the servo switching didn't always end up in the same place. After much experimenting, I found that using an 8-volt EXTERNAL supply cured all/both issues, and this is now working extremely well.

■ SWITCHING_EXTRUDER_SERVO_ANGLES { 110, 0 } ; 110 degrees for T0 and 0 degrees for T1
■ DISABLE_INACTIVE_EXTRUDER false ; Default = true; You need this or T1 will stop working after switch (it's the same extruder as T0)
■ INVERT_E1_DIRECTION false ; Needs to be opposite of E0
■ SERVO_DELAY (1000)
■ DEACTIVATE_SERVOS_AFTER_MOVE ; Turn off servo after tool change

08/22/2018: I finally had time to post this carriage (2020/2040) REMIX along with the parts to change the E3D hotend to a Dyze DyzEnd last night.


If any of you have questions regarding the parts on this REMIX, the electronics/servos used, Marlin firmware questions or the like, please go ahead and comment on this REMIX.

Dondolo 2020/2040 Rail Mount & DyzEnd Hotend

As I know you have to uncomment/set in your configuration.h:

  • HOTEND_OFFSET_Z { 0.0, ??? }
  • HOTEND_OFFSET_X {0.0, ???}
  • SERVO_DELAY { 500 }

??? must be measured

Comments deleted.

Can I please have the original CAD files? I need them for my new Hypercube project... I need to do some adaptations...

Ma quanto pesa questo accroccco...mah...

Hi Gianni,
The "Servo Setup Procedure" is missing in the Dondollo V1.08 Assembly Guide (REV. 1.01).

Thanks Petr

Is there someone that is using Dondolo with a bltouch sensor?

Comments deleted.

Use the wizard for Firmware Version 4.2.9, put "EXTRUDERS 2" and the Dondolo options will appear.


Comments deleted.

Can i print Ninjaflex. Polyflex filament with dondolo ?
How can adjust the Two nozzel ? In the height to the printer bed. To Exact same height

1) Yes, successfully tested with Ninjaflex: https://www.thingiverse.com/thing:856101.
2) By setting the proper Z_OFFSET in fw. No need for an EXACT hardware height alignment of the two nozzles.


i4 Logo

Thank you for your quick response. Did you get some more information for me a source about the z offset settings.

Is there the code for the servo also in a recent Marlin firmware? I took advantage of the RC 1.1 x
Ups Sorry

Give another Way :-)
New Version Marlin Includes the Code , show configuration.h Zeile 174ff
// A dual-nozzle that uses a servomotor to raise/lower one of the nozzles



define SWITCHING_NOZZLE_SERVO_ANGLES { 0, 90 } // Angles for E0, E1

//#define HOTEND_OFFSET_Z { 0.0, 0.0 }


Comments deleted.

Can i print Ninjaflex. Polyflex filament with dondolo ?
How can adjust the Two nozzel ? In the height to the printer bed. To Exact same height

Comments deleted.

1) Yes, successfully tested with Ninjaflex: https://www.thingiverse.com/thing:856101.
2) By setting the proper Z_OFFSET in fw. No need for an EXACT hardware height alignment of the two nozzles.


i4 Logo

Cutting an M4 screw to the desired length?....:-)


"What unholy wizardry is this!.."

Umm... Does this work with smoothieware?

EDIT: I have two semi-decent extruders and was hoping to use this with a bowden setup. What do i need?

Does someone made this for a prusa i3 mk2s?
I made one but there is not enough space between frame and servo...spacers for x axis are needed!

I had the same problem. I've designed a kit, including the spacer you need.
Take a look at: https://www.thingiverse.com/thing:2535888

Dondolo Geeetech I3 Pro B Kit
by Skytter

Take a look at: https://www.thingiverse.com/thing:1017953. Just as an example, spacers are provided for XZ frame.
You can design and print the ones needed for your Prusa i3 xxxx version.


Prusa i3 Hephestos Dondolo Upgrade Kit

For everyone that need it here is my design for solve this https://www.thingiverse.com/thing:2556656

Prusa i3 MK2S z-axis supports

Thank you, and compliments again about this project

Hi Gianni,
Could you send me Solid Works data for little rework?
I use different extruders and I don't want use a long time to replace it.
Your variant means "stationary" mounting. But my idea is "Quick extruder replace" possibility.
Thank You in advance.

Hi Gianni,

I would like to congratulate you for this amazing project.

I would like to ask you something:
1) Do you confirm these stl are suitable for e3d full metal version?
2) Cam setup manual is still missing. Are there some details to care of when mounting the cam?
3) Is there a reason to use threaded rods with 604ZZ? Why not smooth rods?

Thank you

I took a little inspiration from this and made one that doesn't require any electronics or motors :). I really would love to see someone else make it. It works flawlessly for me.

Simple Zero Ooze Dual Extruder - CRUX - no electronics, motors, or changed firmware

I have installed my Dondolo successful in my AM8. Nice work !!!!!!!!!!
Only one problem I have left. I can´nt change the Z-OFFSET of the 2nd hotend in Marlin 1.1.1
I can read out the offset but it makes no sense

So I like to change the Pendulum to mak it adjustable. Can you share the CAD File, it makes easier to work?

Try this fw:
http://www.marlinkimbra.it/. Using the online configurator and setting 2 as the number of extruders you will ha ve the choice for "Dondolo".
With this fw you surely have the possibility of stting the Z offset for both.


Hi Gianni,

wich version of Marlinkimbra you´ve allready tested?
My test looked good first but every time I change my Tool (HotEnd) the machine is going 1mm down
If I print a job I have the same issue. So I getting a wrong height after switching extruder.

Hi Mike
I have the same pb :

MarlinKimbra code does not work on my printer (pb in MK_Main.ccp line 11243)

Here are the log of destination[Z_AXIS] during extruder changes when i send T1 and T0

09:08:47.944 : Echo:Origine XY Premier
09:08:47.944 : No move on toolchange
09:08:47.944 : z_diff: -0.80
09:08:47.944 : z_raise: 0.30
09:08:47.944 : z_back: 1.10
09:08:47.944 : destination[Z_AXIS] before raise: 100.00
09:08:47.944 : current_position[Z_AXIS] before raise: 100.00
09:08:48.116 : destination[Z_AXIS] after raise: 100.30
09:08:48.116 : current_position[Z_AXIS] after raise: 100.00
09:08:49.925 : destination[Z_AXIS] before back: 100.30
09:08:49.925 : current_position[Z_AXIS] before back: 100.00
09:08:50.628 : destination[Z_AXIS] after back: 98.90
09:08:50.644 : current_position[Z_AXIS] after back: 100.00
09:08:50.644 : Echo:Active Driver: 0
09:08:50.644 : Echo:Active Extruder: 1
09:13:42.907 : Echo:Origine XY Premier
09:13:42.907 : No move on toolchange
09:13:42.907 : z_diff: 0.80
09:13:42.907 : z_raise: 1.10
09:13:42.907 : z_back: 0.30
09:13:42.907 : destination[Z_AXIS] before raise: 100.00
09:13:42.907 : current_position[Z_AXIS] before raise: 100.00
09:13:43.470 : destination[Z_AXIS] after raise: 101.10
09:13:43.470 : current_position[Z_AXIS] after raise: 100.00
09:13:45.289 : destination[Z_AXIS] before back: 101.10
09:13:45.289 : current_position[Z_AXIS] before back: 100.00
09:13:46.007 : destination[Z_AXIS] after back: 99.70
09:13:46.023 : current_position[Z_AXIS] after back: 100.00

Original Code

    #if HAS(DONDOLO)
      // <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower.
      float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder],
            z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0),
            z_back  = 0.3 - (z_diff < 0.0 ? z_diff : 0.0);

      // Always raise by some amount (destination copied from current_position earlier)
      destination[Z_AXIS] += z_raise;
      planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder, active_driver);


      // Move back down
      destination[Z_AXIS] = current_position[Z_AXIS] - z_back;
      planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder, active_driver);

I change it to :

  // Move back down
  destination[Z_AXIS] = destination[Z_AXIS] - z_back;

It's ok with this change, it works when i send T0 or T1( when i don't hit the Z End Stop, for the firsts layers it's not good with my offset of 0.8 because i hit the end stop ... but it's an other problem)

But ... i don't not why (i suppose something like relative or absolute Z moving) ...when i try to print the extruder 1 is not at the right height

I try to find and other solution ... but if you find something ... please share it !

I have installed Version 4.3.2 Stable and it is working
Was Easy to use the configurator.

I can start calibrating :)

Thanks Gianni,

i´ll try it. I hope I understand the setting in the config

Comments deleted.

There is a "anti-oozing_printable_template.PDF" scale 1:1 (the file you are talking about is just the preview) and the original "anti-oozing_plate.sldprt" (SolidWorks part).
This project is not for you.


Hi Gianni,

i'm building myself a XY-Core 3D Printer and I a want to use your extruder - wich, by the way, is totally awesome !!!
I have to redesign the X-Carrige in order to fit my Printer - can you please give me the files as STEP?
My E-Mail is marinescud85@gmail.com

Thak you in advance for your answer!

Can you please email me the solidworks files if it does not bother. geliscan@gmail.com


Have you got them?

Hi Gianni
What a great design, I have been think of something like this for a while and you have a working design congratulations.
Will you be publishing the corexy tool changer files at any time? That looks very impressive.

Also, I have a D-Bot and would like to adapt the mounting of the Dondolo for this type of machine, I notice in this thread it looks like you have made the solidworks files available to a few people. Is it possible they can be made available to me please, I would upload the adaptions once complete.

This is an awesome design, thank you for sharing!

A request please, I make use of Z-Probe for bed leveling, any possibility to add a mount point for an Inductive sensor mount to the design?

Another question. Where I must set extruder offset for printing?

I have a question. In marlin_main.cpp i find a code :

else if(code_seen('T'))
tmp_extruder = code_value();
if(tmp_extruder >= EXTRUDERS) {

I should change it to :

else if(code_seen('T'))
tmp_extruder = code_value();

//Added for DONDOLO dual extruder
if(tmp_extruder == 0) {
if(tmp_extruder == 1) {

if(tmp_extruder >= EXTRUDERS) {


Could it be possible to get the assembly step file of the latest version?

Unbelievably AWESOME! Great work!

Would you be able to design a neat way to attach inductive probe?
Those things are so pupular nowadays, it is hard to believe that this great design does not have one.

Thank you


I would like to ask what are the exact dimensions of this extruder? And one more thing...This motor are strong enough? These are only 0.26Nm torque. What is the highest print speed with these motors?

And the most important thing... May could you upload something editable file from this. Maybe step file?

Thanks for your answer!

Hi, I like your extruder design. I would like to make one but I am not sure about flexible filaments... Please, does the extruder print also with a flexible flament? Isn't there a problem with the longer path from driving gear to the hotend?

http://www.thingiverse.com/thing:856101 , this was printed in ninjaflex. I tested the extruder both with E3D v6 and E3D Lite hotends without any problem. If you precisely cut the bowden tube as explained in the assembly guide there will be no gap in the filament path before the driving gear so no way to go out for the filament.
The ability of printing flexible filaments was one of the reason to make a DIRECT extruder.


i4 Logo

Very nice. Thank you.

So I've installed the extruders, and did all electronics and firmware adjusment! All looks good!

But I have 2 problems:
1.I have about 0.5 mm z offset between the 2 extruders

  1. The servo seems no to go all the way left and right. I changed the angles value in marlin from 10—120 to 10—180 and now it looks better, but not perfect...

Any ideas???


"I have about 0.5 mm z offset between the 2 extruders"

Simply adjust the second extruder "Z OFFSET" in the firmware accordingly to the actual offset.

"The servo seems no to go all the way left and right. I changed the angles value in marlin from 10—120 to 10—180 and now it looks better, but not perfect..."

Is the servo cam correctly centered? To correctly install the servo cam you have to set the servo angle at the center of the full range (65°) then install the cam pointing towards the stepper motor axys. Finally you can fine adjust the 2 positions angles (10°-120°).


Found the Z OFFSET and it is working. (better to add a delay after z movement, before servo actuation).
Can you please upload a video of the servo cam changing the 2 positions?
Playing with the dondolo and cam, it seems to span about 180+ degrees, not only 110...

Just saw this in your video.
So it doesn't need to go all the way!

Thanks again for the great design!!
By the way - where can i find such a spring? Couldn't find it on the Internet...


I found it in a briko market in Italy (BRICOMAN). If you can't find a steel spring try a rubber band. ... :-)


Just saw this in your video.
So it doesn't need to go all the way!

Thanks again for the great design!!
By the way - where can i find such a spring? Couldn't find it on the Internet...


the price could be right depending on how many I can have made...

Im going to make aluminum servo arms for this would any one else like one?

sure if the price is right

Hi! When I power on printer servo move to some angle and them move to angle from marlin(SERVO_ENDSTOP_ANGLES to {0,0 0,0, 80,100)). Do you have same problem?

I would like to ask you, where should I connect print fan to ramps 1.4? I would like to regulate the fan speed.

great job
in the video , what core xy design is this?

Thanks, all the printers in the videos are my own designs.


will you publish it ?

Hello Gianni,

Great design!, I though about something similar a while ago but it remained just as an idea, I like your cam system to ensure a consistent positioning of the hot ends, my idea didn't imply moving them, it was just a servo system type of clutch to grip one filament or the other.
I see that you discontinued the 3mm version but is there any possibility I could get those files?, all my filament is 3mm and I have a lot!, of course I would go ahead at my own risk!

Again, great design.


Hi Irobri,
altough every print in the examples gallery was printed with the (original) 3mm version this is more tricky than the 1.75mm.
You need a stepper driver with a current-decay adjustable and\or higher microstepping capabilities (G3D, RAPS128) otherwise you will see some artefacts mainly caused by the lower step rate. The lower step rate also increase the heating of the motor so you have to fine adjust the max current to avoid overheating and, on the other side, to have enough torque (more than in the case of 1.75mm filament) to drive the filament.
Anyway I added a compressed file (3mm_version_parts.rar). ...:-)



Hi Gianni,

Thanks, I already downloaded the file. Regarding you concerns, when you tried the 3mm version which I understand it was working ok, what drivers were you using?, I currently have 8825, and lots of people are using direct drive with them and 3mm filament so in theory there shouldn't be any problems or am I missing some thing?

Thanks again for the reply


I used G3D driver (only for the extruder motor). I have not tested the 8825 with 3mm filament in Dondolo to say they don't work, I tested the 8825 with 1.75mm, 24v power supply, motor 17HS16-0284S and I can say that RAPS128 is better.
What I wanted to explain is that the 3mm version is harder to make it working.
The artfacts I speaking of are such that are visible only in GOOD CLEAN prints (the most of people never saw them!). My motors never heat over 40°C even if they print continuosly for 27 hours (and 200 hours in 9 days http://www.thingiverse.com/make:214269), many people often put a fan on the back of the extruder stepper (I call this "being stupid").
This project has more than 300 "I like it" ( not many indeed ) but only 7 "I made it", in my opinion it means that is not so easy as it appear. It's not for beginners.



Medieval Castle

tnx 4 the gr8 design!!! I've printed all parts and assembled the mechanical assembly.
but, electrincs is not my strongest side and arduino in quine new for me...

  1. You wrote "the Servo Cam (PP10) will be installed in the Servo Setup Procedure." - where is the servo setup procedure...?
  2. how should I connect the 5v convertor to the servo...? where should I connect it to the board (Arduino Mega + RAMPS)

I still havent got to the firmware yet....... I'm thrilled to see it working!
thanks in advance!


  1. the "Servo Setup Procedure" is still a "coming soon" topic!... :-D
    I' ll try to put it down in the next days.
  2. the DC-DC input is the main power supply of your board (typically 12V).


HI The Power is 6 Volt over DC Step Down right?
And Signal to Pin

Why Marlinkimba Wizard not works?
I See no Option Dondolo plz Help me


Thanks for the answes.
I'm sorry i'm really new to this arduino thing... I'm using arduino Mega + Ramps 1.4.

  1. I don't have "Marlin_main.cpp" in my firmware files... tried to search for the line “else if(code_seen('T'))” but couldn't find it in no other file...
  2. In Pins.h, under "#if MOTHERBOARD == 33" (which fit Arduino Mega, right?) I have Servos pins definition. I want to add it, but how can I know the pin numbers? I found that RAMPS1.4 servos pins numbers are D11, D6, D5, D4.

Except this, I think I changed all other codes...
Thanks in advance,

Is it right that there is no 3 mm support with this project at the moment?

It is right. Tough the 3mm version was the first I made the 1.75mm is far more reliable and esier to setup. Also the 1.75mm filaments are gaining the market becoming cheaper and more available the the 3mm. Too many versions, too many pieces and variants made the project harder to understand for the people and harder to maintain for me. So I decided to simplify as much as I could.


Did you know that the (Idler_3mm_sx_dx) is the same part as (Idler_175mm_sx_dx)? If so why....mine wouldn't drive the1.75 filament because both the idlers would touch together in the middle by the holes ..I had to grind both of them to get it to barely work...Im going to change them and move the hole some for the filament...

Ciao,quale scheda madre monti?

Megatronics v3 e RADDS con Arduino Due.
In attesa della Ultratronics.



I was wondering if you would be willing to collaborate or provide the CAD files for this so I can do a remix that incorporates a nema 14 and a 5:1 gear set?

Do you mean a NEMA 14 with planetary gear box?


Gianni, sei un grande! ;) grazie!
Proverò a stamparlo... voglio due colori sulla mia piccola prusa!

Leggi bene tutte le istruzioni. Stampalo in PETG, usa i componenti indicati. Non è un progetto facile ma seguendo le indicazioni funziona ... e bene!... se hai una Hephestos c'è anche l' upgrade kit completo.



On a delta printer, would be cool to mount two extruders, rotated as your, then change the delta movement to compensate every nozzle rotation.

EDIT: Nevermind... was a stupid idea.

Too heavy for a delta.
There are more elegant solutions to implement a multi-nozzle system in a delta printer.


to do what i meant, the delta printer must have 1 only arm instead 2 so can be possible to control the rotation of the nozzle with just the 3 motors. Can be done such thing? You are the engineer :)

I understand what you mean!...:-) ... Well, the configuration you suggest is simply unstable.
You can do what you have in mind in a different way but not so simple as you suggest.


Can you send me the Solidworks files (.part) on my mail plz

Hi, is it just me or we are missing PP14 from the assembly guide?

page 5 PP14 in picture and part list
page 22 "Print Cooler Assembly" PP14, PP13 and EP4
page 25 "Connecting the Print Cooler to the X-Carriage"

Did I forget something?

Please let me know.



nope, i ment that the part is not uploaded in here

Ok, I understand!
The "Print Cooler" it is not intended as belonging to the "core" of Dondolo, (the X-Carriage itself is on the "borderline"!).
Among the Dondolo files the PP4 is named "Extruder_Chain_Support_v2.stl" and is slightly different.
The PP4 part referred in the "Assembly Guide" (and the X_Carriage) is uploaded in the project:
http://www.thingiverse.com/thing:1017953 (Prusa i3 Hephestos Dondolo Upgrade Kit.

I hope this will help you.



Prusa i3 Hephestos Dondolo Upgrade Kit

sorry i didn't get back to you, yep that was what i was looking for, thanks .)

Gran bel lavoro Gianni. Oggi guardavo una Stratasys e mi sei venuto in mente. Un saluto!


:-D.... non ho mai fatto mistero di essermi studiato anche gli estrusori della Stratasys. Lo sforzo progettuale è stato piuttosto orientato verso la possibilità di realizzarlo interamente in plastica e con pochi pezzi pur conservando una buona precisione.
Questo anche per dimostrare che con le FDM si realizzano anche oggetti funzionali e non solo prototipi. Se poi scegli il materiale giusto (io uso il PETG) durano quanto e più del metallo. ... :-)
Questo per consentire a tutti di realizzarlo e stampare in dual meglio delle varie ShareBot, Ultimaker, MakerBot etc. etc. ... anche Zortrax volendo! ... :-D

Comunque grazie!... ;-)

Avevo letto che pezzi funzionali non conviene farli in PETG per via della sua elasticita o sbaglio ?
Credevo che era Meglio ABS o Nylon per tali realizzazioni CMQ Grazie progetto :D

Ormai si leggono più cazzate che cose serie. A scrivere non ci vuole molto. Io faccio così: ondivido la mia esperienza e la supporto con i fatti senza aver la presunzione o la volontà di convincere nessuno. A ciascuno la sua valutazione. L' ABS non lo considero nemmeno per questo tipo di impiego sia come caratteristiche meccaniche che come facilità di stampa lo ritengo inferiore al PETG, l' elasticità è una caratteristica positiva, a mio vedere, ed una maggiore rigidità può essere ottenuta aumentando lo spessore dei perimetri e dell' infill. Il nylon è meccanicamente adeguato ma MOOOLTO più difficile da stampare e con stabilità termica dimensionale nettamente inferiore il che si traduce in minore precisione e tolleranze di realizzazione più grandi con conseguente aumento delle criticità nella realizzazione del sistema.
Spero di essere stato sufficientemente chiaro e di una qualche utilità. .... :-D


Come darti torto, da quando ho scoperto il Petg non ne faccio a meno! Si stampa come il PLA, non è tossico come l'ABS ed è resistente come il Nylon :)

I have arduino mega 2560 and Ramps 1,4. Please let me know how and where to connect servo. Some pictures would be great.

Servo signal S (usually yellow) on RAMPS pin D11.
12V and GND from power supply to Vin+ and Vin- of an external DC-DC 5v switching converter.
Vout+ and Vout- (5v , GND) of the external DC-DC switching converter to 5v and GND of servo input (usually RED and BROWN).

That's all!




at first i want to say, that the extruder is really great - but i have a little problem with the servo.

I use a ramps board, and connect on every servo port a servo from another producer. The Extruder motor changes the rotation direction but no servo rotates. I don't know where's my mistake.

Has anyone an idea?

Thanks a lot

I have non information about your fw.

Did you enable the servo support?

define NUM_SERVOS 1

Did you have a power RC servo (like the servo used in the Dondolo)?... in this case you need an external DC-DC to supply the servo (the internal DC-DC have no enough current driving capabilities, only 500mA or less).

Let me know!...:-)


Hello Gianni,

thanks a lot for your fast reply.

Yesterday evening i've found my mistake. I've forgotton to plug a jumper for the power of the Servo.

Nice weekend


Nice w.e. to you too!..:-)

Comments deleted.

what do you mean for "to print from the other side"?... upside down?... mirrored?
Mail me:


Hi, It tried to use http://marlinkimbra.it/ to configure the Dondolo extruder, but for me it looks as the code contains no dondolo lines at all. I just could find some lines in the configuration...
Found it... As firmware version you have a least to use th 4.2.x.dev.
Now it is fine

Ok!!.... let me know about your progres!...:-)

The software itself is working fine now. Now I´m trying to tune the parameters to get it working. I have the issue that I would like to use the same filament as on my other printer and this one is 2.85mm. And currently the filament is slipping quite a lot..
It would be great if you could share the most important parameters as:
Steps per unit / Feedrate / Retraction Feedrate / Max Acceleration / etc....
For me it is also still not crystal clear which parts I should now use for the 3mm filament. Down in the comment it is written that it might be better to use an Mk7 with the Cam_Pendulum_1392_175mm?

altough the 3mm version was the first I made (and almost all the prints in the pics gallery of this project are printed with the 3mm version!) it is also harder to make it working. The 3mm filament need a stronger traction spring (shorter spring) and a higher torque. Being the first version, every part that is not explicitly marked "175" is intended for 3mm version. The driving wheel is MK8 for both, GOOD QUALITY Mk8, with sharp theeth!... I found E3D are very good altough more expensive.
The parameters you are asking for are machine depending. If you make the "Hephestos Upgrade Kit" I can give you the fw already configured and the profiles for Cura and Simplify3D for others you have to do it yourself. When you have a system "almost" working please contact me and I help you to make it, at least, "good" working. ... :-)


I would say it is almost working :-). I´ve checked your design to fix the springs and noticed that there are two slots, so I´ve put now two springs. Bothe are very tight. I´m hoping that the piece will not break, but till now it worked fine. If it will break I will have simply to reenforce the spring holder...
I´m not 100% sure with my Mk8 drive, so I ordered two new onces, hopping that they are maybe a little bit sharper.
I believe I still have an issue with the retraction. I have the impression that the drive is retracting better as inverse.....
I also believe that the retraction length is to long, but I´m not sure where to adjust this.
I have the E3D hotend... And the printer is a self made MegaPrusa. So I have also had to adapt your design a little bit.

Would also be great to get two pictures of the servo in both endpositions. I did the setup as described, but it is always better so see how it should be..
The problem also with the servo is that in some places I could find one enpoint set to 120. And on some others to 110.

the spring (one) dont' have to be so tight if the teeth drive are sharp enougheven if 3mm filament need more force respect to 1.75mm. The drive gear must be positioned with the hobbed part centered respect to the filament duct on the pendulum. Depend on the dimensions of the dive (MK8) may be better in reverse position with a spacer. I use a retracion length of 6mm.
For the insertion of servo cam you have to put the servo in the middle position of the full ragge (65°) the inserting the cam pointing towards the motor shaft. In both end-positions the cam must be perpendicular to the surfaces of the pendulum it is pushing. Fine adjust the end-positions (default 10, 120) to satisfy this condition.


Hi Again
First and very important: MANY Thanks for your Help
So I´m doing some progress. In fact I´ve had a technical issue: I´v had the ball bearing in the main Pendulum being out of the pendulum, because I was not using a spacer.. So the whole construction became unstable, unfortunately I did not see it direct...
Now I´m wondering about the DEFAULT_AXIS_STEPS_PER_UNIT {80,80,4000,120,120,120,120}? YOu are using 120 for the 1.75 filamant I believe. Would be great to know the values for the 2,85 or 3mm Filament. And yes, it would be great if you could upload me your prusa configuration/profile as well.

right 120 steps/mm is good for me and my driving wheel the same for the 3mm filament version.
You have to fine tune this parameter on your machine marking the filament and extruding a known length.
What do you mean for "configuration/profile"? I already uploaded the entire Marlin fw for a very common prusa like the Hephestos.


Hi Franci
Sorry, wrong expression. I wanted to say the Cura Configuration / Profile.


name = Hephestos
defaultQuality = Xs4yddQh1TfTsq4yBoTeU4deOBOj5ROS
travelSpeedMin = 125
travelSpeedMax = 150
firstLayerSpeedMin = 15
firstLayerSpeedMax = 30
infillSpeedMin = 20
infillSpeedMax = 45
infillType = 0
innerPerimeterMin = 20
innerPerimeterMax = 45
outerPerimeterMin = 10
outerPerimeterMax = 30
printSpeedMin = 30
printSpeedMax = 60
nozzleDiameter = 0
gcodeFlavour = 0
retractionCombing = True
multiVolumeOverlap = 0.05
cutOffObjectBottom = 0
shellThickness = 0.2
infillTopBottomThickness = 0.9
infillDensityPercent = 20
supportType = 0
platformAdhesion = 0
dualExtrusion = 0
wipeAndPrimeTower = False
oozeShield = False
enableRetraction = True
retractionSpeed = 60
retractionDistance = 5
multiExtruderSwitchAmount = 6
startGCode = """
; Default start code
G28 ; Home extruder
G1 F9000 X15 Y15 Z5
{IF_EXT0} T0
G28 ; Home extruder
M107 ; Turn off fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
; Activate all used extruder
{IF_EXT0}M104 T0 S{TEMP0}
{IF_EXT1}M104 T1 S{TEMP1}
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
{IF_EXT0}M109 T0 S{TEMP0}
{IF_EXT1}M109 T1 S{TEMP1}
endGCode = """
; Default end code
G1 X20; Get extruder out of way. Uncomment to use!
M107 ; Turn off fan
; Disable all extruder
G91 ; Relative positioning
{IF_EXT0}G1 E-1 ; Reduce filament pressure
M104 T0 S0
M104 T1 S0
G90 ; Absolute positioning
G92 E0 ; Reset extruder position
M140 S0 ; Disable heated bed
M84 ; Turn steppers off
preSwitchExtruderCode = """
G0 F9000 X100 Y130
postSwitchExtruderCode =
wipeAndPrimeTowerVolume = 30
retractionMinimumTravel = 0.5
minimumExtrusionBeforeRetract = 0
zhop = 0
skirtLineCount = 3
skirtDistance = 3
skirtMinimumLength = 150
solidInfillTop = True
solidInfillBottom = True
infillOverlapPercent = 15
supportStructureType = 0
supportOverhang = 65
supportFillPercent = 20
supportDistanceXY = 0.5
supportDistanceZ = 0
supportExtruder = 1
spiralizeOuterContour = False
brimWidth = 5
raftExtraMargin = 5
raftLineSpacing = 1.5
raftBaseThickness = 0.3
raftBaseWidth = 0.3
raftInterfaceThickness = 0.3
raftInterfaceLineWidth = 0.3
raftAirGap = 0
raftAirGapLayer0 = 0
raftSurfaceLayer = 1
fixCombineEverythingA = True
fixCombineEverythingB = False
fixKeepOpenFaces = False
fixExtensiveStitching = False
fanFullAtHeight = 1
minimumSpeed = 10
coolHeadLift = False
numQuality = 4
skinSpeedMin = 20
skinSpeedMax = 45
combing = 1
perimeterBeforeInfill = True
name = 0.3 mm
signature = yUmVhdY1RX30Bo6avwaujiBjY0TOBwJk
layerHeight = 0.3
layer0widthPercent = 100
firstLayerHeight = 0.3
name = 0.2 mm
signature = Xs4yddQh1TfTsq4yBoTeU4deOBOj5ROS
layerHeight = 0.2
layer0widthPercent = 100
firstLayerHeight = 0.3
name = 0.15 mm
signature = dgsYInkvVQfPpA0i77x9q7GCXH6Kc892
layerHeight = 0.15
layer0widthPercent = 100
firstLayerHeight = 0.3
name = 0.1 mm
signature = 66b4LMslFhzDcgy0zERniFSC1aL8Yjcs
layerHeight = 0.1
layer0widthPercent = 100
firstLayerHeight = 0.3

Hi, is it also possible to connect the servo direct to the ramp board without using an external dcdc power supply?

Hi, the servo connectors of RAMPS board are for low power servos, for this design I use a high torque metal gears servo. Altough the servo is active just during the switch between the hotends and the power consumption is very low, during the switching (and for a fraction of a second) can absorbe up to 2A of current. The 5v regulator on the board is capable of 500mA. The cost of a DC-DC switching regulator is about 2EU.


hello, amazing design.
I have two E3D v6 3mm Bowden extruders which pendelum do I print?

Hi FL3X,
there is no specific version for 3mm bowden, I think it is possible to print the 1.75mm version and use a drill bit to enlarge the ducts to fit the tube of the 3mm filament.


I tried the 1.75 file but the metal parts don't fit. Is it possible to get the source file so i can edit it tho fit these ?

The dimensions are the same for all the E3D heatsinks ( v5, v6, Lite, Pro, bowden, direct) originals. Maybe the problem is the shrinking factor of the material used. I prefer to use PETG, the shrinking is negligible. With ABS you have to scale (enlarge) a bit. I'm far from home for Christmas holiday when I'back home I'send you the source file if you mail me: franci.gianni61@libero.it.


Thank you very much for your work!
I printed parts and tried to update the firmware. I uses an ultimaker2 so i modified Marlin for UM2 with arduino software. My motherboard is an ultiboard v2. In "pin.h", i haven't pins for the new servo and honestly i don't know where i can plug it on my motherboard. I am mechanical engineer and electronic is totally new for me so could you please help me?

Thank in advance.


I' ll take a look at Ultimainboard v2 schematics. ...:-)



thank you! i checked the pin mapping of arduino 2560 and the drawing of my motherboard and i found a available pin!!!!
now, the servo moved between two layers (i mean two changement of filament ), i changed in "Marlin_main.cpp (after "void servo_init()" ), this lines :
// #if (NUM_SERVOS >= 1) && defined(SERVO0_PIN) && (SERVO0_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 2) && defined(SERVO1_PIN) && (SERVO1_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 3) && defined(SERVO2_PIN) && (SERVO2_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 4) && defined(SERVO3_PIN) && (SERVO3_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 5) && defined(SERVO4_PIN) && (SERVO4_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 6) && defined(SERVO5_PIN) && (SERVO5_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 7) && defined(SERVO6_PIN) && (SERVO6_PIN > -1)
// #endif
// #if (NUM_SERVOS >= 7)

I changed the maximum numbers of servos from 5 to 7. It seems the first one are already used by printer (X,Y,Z,E0,E1).
But now at the end of the print, the bed don't move down and i have the error message "Z switch error" but only in case of end of printing...strange!

Did anyone using this extruder already print Filaflex, or Filaflex-like filament? Is the path between the motor and the hotend not too long?
Nice piece of mechanic, BTW!

I printed Ninjaflex (shore hardness A85, Filaflex is A82), 1.75mm :
The path is not very short but the PTFE tube of the hotend is very close to the driving wheel and cutted it to fit both the pinch roller ball bearing and the driving wheel itself, no space left for the filament to run out.
I usually print at 30mm/s that is 50% faster then the recommended printing speed.
I tested both E3D v6 and E3D Lite hotends with success.


i4 Logo

Very interesting! I've been looking at ways to solve the issue of oozing for dual extrusion, and this looks like it works quite well! Have you considered creating a bowden-only version/releasing all of the SolidWorks files? I'm running a DIY Ultimaker V2, and I would love to keep the printhead mass down as low as possible. I understand if you don't want to release your files though!

Betwen the goals of this design there is the capability of printing flexible filaments like gum. It's a very hard job to print gum with a bowden feeder. About releasing the source files, it's still a "work in progress", too soon now, surely in a near future!..:-)


Hey Franci,
First of all, great work, great design! Thank you for sharing :)

I printed one, assembled everything and tested it with a servo tester i had. Everything works great so far.
Unfortunately i would ram the extruder into my frame (Prusa Steel) if i print too tall objects.
Thus i have a request/suggestion:
Would you please extrude the x-carriage on the side which connects to the backplate? by 10mm for me? this would act as a spacer and the stepper motor wouldn't touch the printer-frame anymore.
If you can't tell what i meant^^ i would be glad to send you pictures or a shematic. Right now i'm printing a spacer to do the job, but a spacer is... meh.. i don't like spacers :)
Greetings, Sebastian

Hi, for a standard Prusa i3 6mm is enough. I designed the extruder in this way tryng to balance the mass and avoiding a torque on the X smooth rods. The best would be to move the Z-X structure 6mm far from the frame. In my upgrade kit for the Hephestos I redesigned the lower and upper Z support. I know that this is harder with the Prusa Steel. Please send me some pics and I' ll try to redesign the X-Carriage .

This is my email: franci.gianni61@libero.it


Thanks for your work,
I've send you an Email.

Greetings, Sebastian

Ok, i understand. And else one question. How better to fix bearings? In picture is see like black fastenings. In construnction there are like mounting faces.

I think you are speaking about the LM8UU linear ball bearings, they are assembled to the X-Carriage by two plastic strip ties each.
I think the is simplest, fast, relyable way I found. But you are free to redisign the X-Carriage with a different locking system.


And else one question. Have you any problem with servo trembling? I have bed autoleveling and sometimes there is a big problem.

The mechanism is self-stabilizing in extreme positions. The servo only switch from one to the other and then is disabled. This ensure a long life for the servo, low power consumption, absence of trembling due to servo instability and first of all PRECISION, because this not depends on servo precision.
Anyone who pretends to use a RC servo for precise positioning really don't know how a RC servo works!..:-)


"The mechanism is self-stabilizing in extreme positions." How it does exactly?? I did not notice any means for that...

Can i use 1.75 filament with different nozzle diameters - 0.3 and 0.5?

Sure!... tipically 0.3 for perimeters and 0.5 for infill or 0.3 for small detailed models and 0.5 for large and strong machanical part.
It is just a matter of slicing software, Simplify3D can manage different extruders for infills and perimeters.


Hello, franci! Thanks for great idea - i will use it. I have a question - in you Marlin firmware can i use bed autoleveling? Ramps 1.4.

Certainly, you only have to assign a different servo channel for the bed autolevelling servo and the Dondolo servo.
Please use the http://marlinkimbra.it/ firmware configuration tool selecting the firmware version 4.2.x dev, it support Dondolo for many boards.


Thanks for the great design!
Extrusion with one Extruder works perfect but I can't get the servo to move.
I have used Marlinkimbra with enabled servo and have tried out several Setups. The Servomotor is hooked up to an external 5v powersupply but the servo isn't moving anyway. Can someone help me out with a working Firmware to find out what is going wrong? Thanks in advance!

I have uploaded a Marlin for Prusa i3 Hephestos Dondolo Powered. Make the changes you need to fit your printer.
Be also sure that the external 5v power supply share the same GND connection of servo signal pin.


Thanks for the fast Support! You saved my day :D
Servo is moving now. I will check the source Code to find out what went wrong.
Again, manny thanks!

To inserte the servo cam in the right position send a M280 P0 S65 command then insert the cam pointing to the motor shaft.


What's nema17 used for?

Comments deleted.

For driving both the filaments (alternatively, not at the same time!). This is a direct driving double extruder.


So if I use two Bowden extruders I can make printhead lighter.

Of course!..:-) ... with bowden feeders the head is lighter. Problably you will have more trouble trying to print with flexibles materials like gum (ninjaflex).

Advantages & disadvantages...


do you have a printable template for the anti-oozing plate? I will need to hand cut those and I am unable to open a .sldprt file to get exact dimensions.

Just uploaded a .pdf file with the anti-oozing printable template!..:-)


thank you very much. :) and thank you for sharing the design this was allot of fun to put together!

Happy to know you liked it!...:-)


What does the number on the cam reference?

The number on the pendulum cam indicates the distance of the upper corners from the motor shaft axys. The greater the filament diameter the greater the number. The reason why they are strange numbers (13.92 instead of 14, or 16.08 instead of 16?) is that they are indirect parameters.


Does anyone have some tips and tricks to prevent slipping of the filament?
I have a MK8 pulley, but the 3mm filament keeps slipping. I used a verry stiff spring, and even applying tension by hand doesn't work.

If you have a good quality driving wheel (well shaped and sharp teeth) you don't need a "very stiff spring"!
Surely the 3mm filament version is more critic then the 1.75mm version because a more large wheel (like Mk7) with a planetary-gear reduction would be better. But I made it working with an Mk7 (very good from E3D) and the direct stepper motor,... so you too can!... ;-)


Thanks for the reply.
I re-hobbed my mk7 pulley, now the filament doesn't slip.


Hello Franci,

Can you explain how to integrate the firmware into my printer? I'm using a RUMBA board which is essentially a RAMPS with everything on one board. I assume that I will need to find a pin for the servo signal output (I will use the pin that is my bed leveling servo, after turning off bed leveling). After I update the steps/mm of the marlin package that you uploaded here, Is there anything else that I need to edit?


Alberto Cotronei integrated the Dondolo on is MarlinKimbra firmware. So it's pretty easy to configure the fw with Dondolo support for any supported board that have the requested feature to drive it (like Rumba is). Please use the configurator tool available here:
Select the Firmware version 4.2.x dev which is stil under dvelopment but I have already tested with success on a Prusa ie Hephestos "Dondolo Powered".

Has anyone found a spring for sale in the US that works well?

Ciao, sto cercando di costruire il tuo dondolo, progetto che ritengo molto interessante.
Il tutto per un doppio jhead con filo da 1,75mm. Ho alcuni dubbi:
A cosa servono i due fori nel centro della parte bassa del backplate? e gli incavi nel retro del pendolum?
il motore dell'estrusore ha abbastanza forza nonstante le dimensioni ridotte?
se ti interessa ho aperto un post sull'argomento nel forum di reprap italia:

Do you have you any info on wiring in the servo, motors etc, onto circuit board?

The wiring strictly depend on the board model. Any board capable of driving two hotends can succesfully wired. Depending on the driving capabilities of the DC-DC converter on your board you may need an external DC-DC to supply the 5v to the servo (3-4EU), if you have an heated bed and a RAMPS board you also need an external mosfet driver (3EU).
There are a large variety of possibilities and configurations. .... :-)


Nice work Franci, did you have to post process the g-code in your slicing engine in addition to the firmware changes?

No, no need to post process the G-code. ... :-)


Hi! so I need to use the commands "T0" and "T1" to change extruders?

Yes!... just as any other double extruder.


ok). thanks for response.

This design is great! I'd love to modify it to be compatible with my ORD Hadron. Could you please upload an .STP file for each of the parts that mate with the linear bearings? I can then reconfigure them so that the entire assembly can mate with a base plate. It'd be awesome if you would export an STP of the entire assembly, but I really just need the parts that connect to the linear bearings.


I suppose you have to redesign the X-Carriage or modify the Backplate to match your actual X-Carriage.
I'll send you the step files of both.


Love the design and want to build it. But worried about thickness of stepper motor as I have a prusa i3 and are concerned about it hitting the top frame. What are the measurements of that motor, as it looks thinner than a Nema17 42BYGHW208 I'm looking to buy?

I've just uploade a 6mm spacers set for standard Prusa i3. Just put between the frame and the Z axis (top, bottom, right, left) supports. The stepper motor I use is exactly the 42BYGHW208: 43mm x 43mm x 33mm (H x W x D).

Ciao. ... :-)

Still waiting on a few parts ordered, but thought I would get the printed parts underway.
Just printed the twin fan ducts, and realized they don't fit my J-head hot-ends :(
Have you any plans to design fan ducts for the J-head hot-ends? If so when? Or should I give it ago in sketchup.

Much thanks

Usually the J-head hot-end don't need the cooling fan.


is there a diagram or some feedback on which screw goes where?
the m3x25mm are the only ones I knew where they go hehehe...

My confusion also comes from the fact that I still didn't disassemble my extruder motor to be placed here yet.


Hi, I'm working on it!...:-)


Thank you :)

How important is it to have the spring exactly 50x6x1mm?

You can use any spring you like but you have to tune it for the right tension. Because there is no adjustable tensioner you have to shorten the spring until you have the right tension.


Any suggestions on where to purchase the spring?
Thanks for the fantastic design. Can't wait to have it on my printer

You can experiment different expansion spring shortening, if necessary, to achieve te right compression force.

Ciao. ... :-)

un lavoro eccellente.

Grazie Daniel!!...(y).... :-)

I have the same idea and similar design,
Urs r better then mine, i love it

Hi Liusega,
I saw your work when it was still in progress. I' m a follower of your videos on Youtube. No mistery, no doubt it was a source of inspiration in my design. Thanks!!...:-)


I wasn't a mechanical designer, And the 3d software for the design is not too good.
Don't have enough knowledge ,skill and experience.
But I know there are better way to do this...Here u r.
Great job~~

This is the magic of sharing and of co-operation!!.... Congratulations to you too!!....:-)


Hi, I am very impressed with the project, just got myself a MiniMax by Maker's Tool Works, and since it has no Extruder assembly and a flat vertical X carriage, I am convinced I need to make your Thing.
I need to modify the Back Plate to work with your design and OpenBuild Rail system, most likely will CNC it,

I would appreciate if you can email me the full assembly in solidworks format, so I don't have to redraw it from the existing stls?

Thank you!

Thanks for sharing this project ! :)

Hi franci. Great job!

I´d like to know which material I have to use to print this, PLA or ABS? Since it´s use E3D All Metal hotends, I think the better material is ABS. Am I right? By the way, As I have some spare J-Head hotends, is that possible to have a version of the "Pendulum_101.STL" and "Doble_clamp.STL" to be used with then?

Thanks in advance.


I printed all the parts in PETG but you can use ABS or PLA without any problems.
I' am currently working on the E3D v6 1.75mm version, the J-Head version... "coming soon"!..:-)


Thank you for the prompt response. I´ll wait for the J-Head version....
PS: I forgot to tell you that all my spare hotends and PLA filaments are 3mm in diameter.... :D

Just uploaded the modified Pendulum and Doble_Clamp for J-Head.
I have not phisically tested (virtually assembled in CAD!)
"Pendulum_J-Head.stl", "Doble_Clamp_J-Head.stl".
Let me know!... :-)


Hi franci, see the results of you great job in the "Make" section. The J-Head fitted very well. So, I´ll start to print the entire extruder. Have to buy the specific stuff like bearing, servo, spring, etc.... It took 2 hours to print the pendulum and the clamp. BTW, do you have the X Carriage to be used with LM10UU linear bearing? My Prusa I3 uses all 10mm linear guides. Thank you once more. Regards.

Thank you again! I will start print those parts right now to see if it fits well, I´ll keep you informed.
Regards from Brazil.

Mail me the cad drawings of your X carriage and I' ll try to help you.


Hi Gianni,

What I asked is if you can make a version of your "X_Carriage_R2" to be used with LM10UU. I´m pretty sure that the one in "Thing files" is for LM8UU. Am I right?
PS: The center of the two parallel bars of x axis are 45mm.

Thanks and regards.

Are you using a GT2.5 belt?

It is a GT 2 belt and pulley 6mm width (2mm pitch).

This is another difference!... I asked the model to evaluate everything I have to modify.

it is not a very easy job and I want to be sure to make a usefull work.... :-)


hi, very good job, does exist a 1.75mm version ?

Hi, in this days I'm assembling a second Prusa i3 GW with a 1.75mm filament version of the Dondolo. I think easier to make it working then 3mm. You can adapt this version, just sand the pendulum cam to adapt to the reduced diameter. In the final version I put the PTFE tube of E3D v6 inside the pendulum channel to make a continuos and very smooth channel direct to heatbreak.

already designed it for chess hotend, got all the pieces but no time to mount it... anyway i can share redesigned pendulum if anyone is interested

Please publish your redesigned "pendulum" and I put a link to your work!..:-)


Hi, would it be possible to somehow get even 40mm fans to cool the nozzles? O:) I was searching for quite 25/30 and not quite successfull :/

You have to re-design the double fan-duct. You can put the fan you like but be carefull to ensure at least 4FCM of air flow for each hotend to avoid jamming problem.

Hey Franci, do you perhaps have some sort of a drawing file (or solidworks file) of the metal anti oozing plates? I am modifying this to use with E3D's V5 hotends. Thank you in advance!

I uploaded "anti-oozing plate.sldprt". Among the configurations there is a "flattened" version usefull for cutting on a brass or aluminium (or what you prefer!) 0.5mm sheet.


Thanx!! would it also be possible to get the solidworks file of the x-carriage?
I just noticed that my belt has a different pitch than yours..
Sorry for the hassle and thanks for sharing!!

Done!!... :-D

Is it in the thing files? can't see it..

Sorry!... maybe something went wrong! Now the X carriage (sldprt) is there (thing files).

can't find sldprt file of x carriage...

I am impressed with your work so far, thanks for sharing with us all.

I was wondering if you had any problems getting the hotend nozzles to the exact same height. How did you set up the firmware for different heights of the nozzles, if any, to stop printing issues? Or are you using some kind of auto bed levelling for both? If this is the case do you have any recommendations for auto bed levelling with this?

no problems in getting the hotend nozzles at the same height. Just slightly loose the 3 screws of the hotend clamp, put the bed in touch with one tip nozzle, switch to the other hotend and adjust to put bed in touch with this too. Tighten the screw and check the alignment. The alignment of nozzles is not so critical as in fixed hotends. 0.1mm of misalignment have no serious effects on print quality. No auto bed levelling is used.

Excellent, thanks for the quick reply and the advice, it is appreciated.

I was unable to configure marlin because it does not compile when I'm your guide , could you send me the marlin program I modify it to suit my RepRap . thank you

I uploaded my Marlin in the Thing files. I hope it may be of some help for you. ... :-)

Hey, what type of fan duct are you using in the pictures? and does it work well?
Great work! I am printing the parts now!

The fan duct in the picture is out of date, resulting in jamming problems with PLA and PETG.
I replaced the stl file with the new one supporting 30mm fans. The pictures shows the old one. Adopting fans with CFM > 4 allow a lower working temperature with ABS too and then less warping problem (I lowered the temperature of 10°C).

Is a 40mm fan duct for model cooling. Nothing special, it does the job for me but I' m not a specialist of PLA. I' ll upload the stl file in case you are interested in the "complete solution"!..:-)

At tool change what is triggering the servo?

Please read the "DONDOLO_v1_firmware_setup_guide.pdf" in the "Thing Files". ... :-)

Sorry totally missed that one. :-) I have to say, this thing looks amazing. Great work!!

Uploaded the stl file for the new hotend dual fan duct. Now supporting the original 30mm (4 CFM) fan of E3D v6 hotend.

WARNING!! Testing PLA and PETG raised an issue with the hotend cooling system (not enough!). I' m redisigning the dual hotend fan duct
for original 30mm fan (twice the air flow).


impressive the cleanness of your prints. I'm fighting with my dual bowden .. thinking to switch on dual direct.
This solution seem very good way to prevent the problems generated by 2 extruders at same height.
I think that i'll buy the components... and try to assemble your solution.

What about 4 extruders? Any problem with FilaFlex?

Hi,. 4 extruders = 2 extruders x 2 carriage my next step but in a more robust CoreXY frame!... :-)
Never tested FilaFlex!,,, Did you plan to print two colors woman shoes?..:-)

Saludos Renato,


The two part have no empty intersection!... my slicer can't manage this situation. If you can arrange the stl files in such a way that lead to disjoined parts I' ll try to print it. ... :-)

Simplify3D should slice it good, almost from my impression looking the result. Let me see if i can fix :)

hi!.... I uploaded some pics. The result is not as good as I 'd like. I printed at half of the original size (50%) but loading a previous factory file I forgot to reduce the extra distance on restart after a tool change resulting in exceeding flow with some little blobs and contamination. I fixed in Blender the problem of the intersecting parts with a boolean subtraction.

Comments deleted.

No problem with the slicer. The problem is printing, there are region common to black part and to red part. ... :-)

I tried to print my Pigalle V5 in 2 Materials.. but still my bowden have problems with the tool change retractions.. sometime the filament stuck.

I'm uploading soon the Pigalle V6 in 2 materials.. so you can print it.

Ps. I'm italian too :)

So for 1,75 filament i just make shorter arms of a camma pendulum?

NO!... it's not a matter of diameter but of type of hotend!... you can put hotends for different filament diameters without any modifications if they are of the same type (and then of the same length) v6/v5. ..:-)

Ah, i see now. Iam going to put 2*1,75 chess hotend on it, but still waiting for bearings from ebay .)
Anything that i should consider when planing to use it with 1,75 instead of 3mm filament then?

Looks awesome,

but I have little bit tricky setup and I am not sure about it.

Do you think it would be possible to have this setup?

A. e3d v6 1.75mm
B. e3d v5 3mm

I have the v5 now and I want to swithc to 1.75mm but got tons of expensive material for 3mm.... so your design would be perfect

Hi, it not possible without redesigning the "Pendulum" part to accomodate the two different hotends (v6 is shorter!)

Amazing. Can you share your design files so others can tweak it to print on their machine? I had this idea for so long. It's great to see it in action.

lay out initial model in solid works?

Comments deleted.

What diameter of filament are you use? 3mm or 1.75mm

I'm using 3mm filament (the "worst case" between the two!). I had to build my custom drive gear, the commercially available are not sharp enough!!... :-) I suppose with a 1.75mm filament is easier and the commercial MK8 drive gear will do the job. :-)

nice work!,

How do you mount the pendulum on the backplate? Theres a 5mm hole on the pendulum that looks like a pivot, but theres no hole on the backplate.

The pivot is the motor shaft, this is the really good idea. A F695 ball bearing (5x13x4 flanged) is mounted in the 13mm hole in the pendulum and then coupled with the 5mm motor shaft.
I have to write a more deatailed description but it's still in progress (but working!). ...:-)


awesome!, would you mind sharing the source file of the pendulum, so i can make a 625 bearing version?

Do you use google+?, i would like to contact you.

The 625 is 5x15x5 bearing no flanged, its hard to fit. ...:-)
This is my mail franci.gianni61@libero.it.


Guys, did you worked out a version for 625? I would have use for one .)