Panning Dual Hotend for Prusa I3 by __ShapeLabs__ 3d model
Warning. This content is not moderated and could be offensive.
m4
3dmdb logo
Thingiverse
Panning Dual Hotend for Prusa I3  by __ShapeLabs__

Panning Dual Hotend for Prusa I3 by __ShapeLabs__

by Thingiverse
Last crawled date: 4 years, 5 months ago
Hey Guys,
i've designed for my printer a panning dual hotend. It can lift the unused nozzle, so there isn't a contaminant of the printed filament an no oozing. The filament cooling is integrated as an air duct in the slider. You've to print the parts careful. They have some critical points.
Furthermore you need some purchase parts:
2x 50mm Fans
3x IGUS RJMP-1-8 Linear Bearings
1x Graupner DES586BB Digital Servo
Some M3 & M4 Screws
2x Hotends
2x Aluminium bracket 30x30x2
1x LJC12A3 Proximity Switch
Some Hot-Temperature Silicon
You can watch a video oft the prinhead in action on youtubehttps://www.youtube.com/watch?v=6Enaf-HHfRo
Note:
It could be, that the nozzle moves not to the limit stop. So the servo isn't strong enough to bend the cables an the filament PTFE tubes. Make the cable loop a little bit bigger and take longer filament tubes
Software implementation
There are two ways to implement this in Software:
The first easier way is, to use in slic3r a tool change command like this:M340 P0 S[next_extruder]
Then you can replace the S0 or S1 with a post-processing script.
Here is an example, wihch should work under linux or os/x:
#!/bin/shfile="$*"echo "Post-processing G-code file: $file"#Replace S0sed -e 's/M340 P0 S0$/M340 P0 S1570/g' $file > "$file.tmp"#Replace S1sed -e 's/M340 P0 S1$/M340 P0 S1850/g' "$file.tmp" > "$file"#remove tmprm "$file.tmp"
The other way is to modifiy the firmware of the printer. I'm using the repetier firmware. Here are only two little modifications nessecary:
Add in the configuration.h these two lines:
#define T0_SERVO_POSITION 1570#define T1_SERVO_POSITION 1850
The values are individual and they depends how the servo is assembled
The other modification is in the "commands.cpp" near line 2450
There is following else-if-condition :
else if(com->hasT()) // Process T code
{
Commands::waitUntilEndOfAllMoves();
Extruder::selectExtruderById(com->T);
}
A modification like this should drive the servo automatically with a T0 or T1 command in the gcode or from Terminal:
else if(com->hasT()) // Process T code
{
Commands::waitUntilEndOfAllMoves();
Extruder::selectExtruderById(com->T);
//----------------Addition Panning Hotend -------//
if(com->T == 0)
HAL::servoMicroseconds(0,T0_SERVO_POSITION,0);
else if (com->T == 1)
HAL::servoMicroseconds(0,T1_SERVO_POSITION,0);
//------------------------------------------------//
}
HaveFun
Henning

Tags