Weeks in the making I finally got the servo to cut the filament reliably. The trick was a buck converter and using the upper range of the servos input Voltage.
My issue now is what to do with the mk4 gcode? It seems that the mk4 firmware has a servo action built in at a extruder change, separate from the mk4 gcode. What are the key command lines to tinker with? In mind mind, on a extruder change filament should back out of hot end, then a cut. Short end fed back in extruder other end retracted. Right now the servo does a cut but it doesn't retract out of the hotend. Right now my 3Dc loads the first extruder and will make a cut for the 2nd but won't load the 2nd correctly My assumptions are highlighted yellow.
; Auto generated 3D Chameleon Mk4 Mode 3 Tool Change GCode for PrusaSlicer
; - 3D Chameleon Mk4 Tool T{next_extruder} -
;begin switch from extruder {previous_extruder} to extruder #{next_extruder}
M117 Unloading Tool T[previous_extruder]
M83 ; turn relative distances for the extruder
; unload extruder {previous_extruder}
G92 E0
; go to holding position to unload the stock extruder
G0 Y231 F2000 ; <<----- EDIT THIS LINE TO SET THE INITIAL LOCATION OF THE BUTTON
; if this is the first load, then don't unload
G91 ; move to relative mode
M83
; load extruder #{next_extruder}
M117 Loading Tool T{next_extruder}
{if previous_extruder>-1}
; back out the filament for cutting
G0 E-40 F500 ; retract a bit, adjust this to tune waste ; on the sprite extruder Hot end to extruder gears is about 44mm
; <<<< insert mechanical cutter code here! >>>>
; <<< Start Of Tip Shaping V3 >>>
;M702
;G92 E0 ; Zero the extruder
;G0 E10 F500; push out the molten filament
;G0 E-13 F4000; quickly retract
;G4 P5000 ; Wait for 5000ms (5 seconds)
;G1 E-50 F1500 ; Quickly retract 50mm to fully unload the filament
; <<< End Of Tip Shaping V3 >>>
; we skipped to here if it was extruder -1
{endif}
{if previous_extruder>-1}
; retract it back out of the extruder
G92 E0
G0 E-0 F2000
G92 E0
G0 E20 F2000 ; <<<---- if mechanical cutter, change to a positive value of at least 5mm
G92 E0
; ok - out of extruder - press button to remove it all the way
G91 ; move to relative mode
M82
; we skipped to here if it was extruder -1
{endif}
; press the button to select the new extruder
G0 Y3 F2000
{if next_extruder==0}
G4 P500 ; dwell for .5 seconds - adjust this to match your machines single pulse time
{endif}
{if next_extruder==1}
G4 P1000 ; dwell for 1.0 seconds - adjust this to match your machines two pulse time
{endif}
{if next_extruder==2}
G4 P1500 ; dwell for 1.5 seconds - adjust this to match your machines three pulse time
{endif}
{if next_extruder==3}
G4 P2000 ; dwell for 2.0 seconds - adjust this to match your machines four pulse time
{endif}
G0 Y-3
G4 P2000 ; wait for cutter to work
; ok command selected - back out filament if needed after cut
{if previous_extruder>-1}
G0 Y3 F2000 ;
G4 P5000 ;
G0 Y-3;
G4 P400
{endif}
G0 Y3 F2000 ;
G4 P5000 ;
G0 E30 F1500; <<<--- adjust this E value to tune extruder loading was 25
G0 Y-3;
G4 P400
G92 E0
G90 ; move back to absolute mode
M83 ; but make sure the extruder stays in relative
; reload filament all the way into extruder
G92 E0
G0 E-25 F2000 ; <<<<<----------- EDIT THIS DISTANCE TO FINE TUNE THE FILAMENT LOADING TO STOP BLOBBING OR UNDEREXTRUSION
G92 E0
M83 ; turn relative distances for the extruder
M302 S180 ; prevent cold extrusion
M117 3D Chameleon Tool T{next_extruder}
; This should be a purge line at the start of the print
{if previous_extruder==-1}
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset Extruder
G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish
{endif}
Hi Matthew, did You succeed to get the Clippy working? Let us please take a look at Your final Tool Change GCode, thanks.
You say, "Right now the servo does a cut but it doesn't retract out of the hotend. Right now my 3Dc loads the first extruder and will make a cut for the 2nd but won't load the 2nd correctly My assumptions are highlighted yellow." Let's break this down... the servo cuts but it doesn't retract out of the hot end, but that's what the G0 E-40 is doing. That line backs the filament out 40mm (out of 44 for that extruder) so that there is only 4mm left as the tip below the drive gears. (Be careful here, that might be too small, on looser extruders.) Second, once you press the button, it will cut the filament. Now, in your gcode, you have a line not highlighted, G0 E-0 F2000, which isn't needed... not sure what it is. The second one is that E20... that's not correct. That's the part it should be pulling away from the blade and pushing the filament back into the hot end. So it needs to be something like G0 E40 to match your backout or 45 just to be safe. That will pull the filament away from the blade and release the filament above the cutter a. These two actions make sure there is no filament between the cutter and the drive gears... so the filament won't run into something.
Once the buttons start to be pressed, then the 3DChameleon will present the new filament to the extruder. That must be timed properly... the extruder needs to start loading the new filament before the filament actually reaches it. This will insure the new filament will hit the old filament below the extruder's drive gears. But, you only want them to load into the drive gears enough to load the filament firmly... and then you can purge the old filament by pushing the new filament.
You adjust the timing with the G4 for how far the 3DChameleon pushes it... and the E30 for how long you need the extruder to load... ideally, with the value of 30, it will start moving the extruder while the new filament is 15mm away from the drive gears and will load 15mm into the drive gears. Since you unloaded 40mm, you now have 25mm remaining, which your second block can continue to load the rest of the way. Adjust that value to get it to load the filament just before it starts the extrusion. That way it will complete the last mm or 2 in the purge block.
Bill