Good afternoon everyone! Received my mk3 earlier this week. I have an Ender 5 with klipper, with an SKR E3 mini, v2. This is be important in a moment. I have removed the direct drive I had on the system, in favour of using the mk3 in direct mode to drive the printer. I have written the macros for T0 through T3. Set the mk3 into direct mode (hold button for 10 pulses, then release). I am getting a single pulse returned, so mode 1. I have the drive motor connected to my SKR board so it can act as the extruder. I can extrude filament up to the y adapter and then it seems to not have enough power to go any further. The macros seem to work but again, the motor seems to lack power to move the filament.
The SKR board is using the TMC 2209 driver. I force it into spreadCycle mode, which apparently provides more torque to it. I've also updated the run current pretty high to 1.75 and it still struggles - it can move the filament with a 'nudge' but I would expect it to be much stronger? I also moved the tube for T0 to another connection on the Y adapter to see if it was an issue within there but it made no difference.
Any thoughts on how I can make this work better? My goal is to built the macros in Klipper to change the filaments so the code is not needed in the slicer. Turning on multiple extruders should be all that is needed.
I have a lot of experience with 3d printing, klipper etc., so I'm a bit baffled why the issue.
Check out my DD adapter for my Ender5. https://www.thingiverse.com/thing:6169501
Update: SUCCESS!!!
I now have it working in Klipper, on an Ender 5 with direct drive. I will eventually upload the entire config with pictures to a Github for others to see.
A couple of notes. I still have a bit of work to do on the tip forming. I still get strings on the filament sometimes, which don't seem to cause a problem but twice got bigger blobs which plugged my all metal Dragonfly hotend.
I am not happy with how PrusaSlicer does the purge tower. It tends to blob out a bunch of filament and then run a few lines but its messy and leaves the extruder tip unclean - I get some mixing of the colors as a result I believe.
All of the code is in Klipper as macros. The only thing I added to the Slicer under Tool Change G-code was to prevent oozing affecting the print and to give the extruders the best angles to draw the filament out - G0 X10 Y10 Z5. Not required, but it really helps for me.
The klipper macros are as follows:
Unload_Extruder - extracts the filament from the extruder - mostly used by other macros.
Load_Extruder - feeds the filament through the machine extruder to the tip - mostly used by other macros.
Unload_and_Home - extracts the filament from the tip and retracts the filament into the 3d Chameleon, then homes the 3d Chameleon.
Load_and_Home - Homes the 3d chameleon and feeds filament 0 to the machine extruder, then loads to the tip.
T0 to T3 - checks which filament is loaded, and if not that filament, it unloads then loads the correct filament (Please note, below I only have T0 and T1 but T2 and T3 are exactly the same only changing the pulse time.
I saw somewhere else someone talking about G4 Sss doesn't or you have to add time, etc., well Klipper doesn't support G4 Sxx it only supports G4 Pxxx! P should be multiples of 500 for each half second.
I hope it helps someone!
[gcode_macro Unload_Extruder] gcode: ; Unload the extruder ;begin switch from extruder {previous_extruder} to extruder #{next_extruder} M117 Unloading Tool current extruder M118 Unloading Tool current extruder G91 M82 ; turn absolute distances for the extruder ; unload extruder {previous_extruder} G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-10 F600; slowly allow it to cool G0 E28 F2000 ; blob elimination ; back to tip size G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-10 F600; slowly allow it to cool G0 E28 F4000 ; blob elimination G0 E-10 F4000 ; quickly retract the filament to shape it G0 E1 F4000 ; quickly ram the filament to shape it G0 E-10 F4000 ; quickly retract the filament to shape it G0 E28 F4000 ; quickly ram the filament to shape it ; back to 1.8 constriction G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-20 F100; slowly allow it to cool M118 Finishing up G92 E0 G0 E-80 F2000 G92 E0 G4 P5000 M400 M118 Done! G90 M83 [gcode_macro Load_Extruder] gcode: M83 ; but make sure the extruder stays in relative G92 E0 G0 E100 F2000 ; <<<<<----------- EDIT THIS DISTANCE TO FINE TUNE THE FILAMENT LOADING TO STOP BLOBBING OR UNDEREXTRUSION M83 ; turn relative distances for the extruder G4 P1500 ; This is just a half second extra reloading time... just to make sure M400 G90 M83 G92 E0 [gcode_macro Unload_and_Home] gcode: {% set svv = printer.save_variables.variables %} {% if svv.currentool == -1 %} M117 Already Extracted M118 Already Extracted {% else %} Unload_extruder M82 SET_PIN PIN=3dchameleon VALUE=1 G4 P2750 ; dwell for .5 seconds - adjust this to match your machines single pulse time SET_PIN PIN=3dchameleon VALUE=0 ;G4 P15000; wait for it to happen ; adjust this time to match t {% endif %} SAVE_VARIABLE VARIABLE=currentool VALUE='-1' M400 G90 M83 [gcode_macro Load_and_Home] gcode: {% set svv = printer.save_variables.variables %} {% if svv.currentool > -1 %} Unload_and_home G4 P10000 M117 Loading... M118 Loading... M83 SET_PIN PIN=3dchameleon VALUE=1 G4 P2250 ; dwell for .5 seconds - adjust this to match your machines single pulse time SET_PIN PIN=3dchameleon VALUE=0 G4 P10000; wait for it to happen ; adjust this time to match t M400 Load_extruder SAVE_VARIABLE VARIABLE=currentool VALUE='0' G90 M83 G92 E0 {% else %} M117 Loading... M118 Loading... M83 SET_PIN PIN=3dchameleon VALUE=1 G4 P2250 ; dwell for .5 seconds - adjust this to match your machines single pulse time SET_PIN PIN=3dchameleon VALUE=0 G4 P10000; wait for it to happen ; adjust this time to match t M400 Load_extruder SAVE_VARIABLE VARIABLE=currentool VALUE='0' G90 M83 G92 E0 {% endif %} [gcode_macro T0] gcode: {% set svv = printer.save_variables.variables %} {% if svv.currentool == 0 %} M117 Already T0 M118 Already T0 {% else %} Unload_Extruder M83 M400 SET_PIN PIN=3dchameleon VALUE=1 G4 P500 ; dwell for .5 seconds - adjust this to match your machines single pulse time SET_PIN PIN=3dchameleon VALUE=0 G4 P15000; wait for it to happen ; adjust this time to match the actual tool change time - subtract the time it takes to load for the last 1" into the extruder ;G4 S30 M400 Load_Extruder M400 SAVE_VARIABLE VARIABLE=currentool VALUE='0' {% endif %} M117 Tool T0 M118 Tool T0 G90 M83 G92 E0 [gcode_macro T1] gcode: {% set svv = printer.save_variables.variables %} {% if svv.currentool == 1 %} M117 Already T1 M118 Already T1 {% else %} Unload_Extruder M83 M400 SET_PIN PIN=3dchameleon VALUE=1 G4 P1000 ; dwell for 1 seconds - adjust this to match your machines single pulse time SET_PIN PIN=3dchameleon VALUE=0 G4 P15000; wait for it to happen ; adjust this time to match the actual tool change time - subtract the time it takes to load for the last 1" into the extruder ;G4 S30 M400 Load_Extruder M400 SAVE_VARIABLE VARIABLE=currentool VALUE='1' {% endif %} M117 Tool T1 M118 Tool T1 G90 M83 G92 E0
Update:
I could not get it to work in mode 1 (direct drive). There just wasn't enough power in the stepper to make it happen.
So, I went back to mode 2. But before I could start testing again I had to install direct drive on the printer again, calibrate and make sure I was printing well.
Specifics - From the point the filament enters the extruder and to the hot end it is 118mm. This machine is running Klipper so the macros are being moved into Klipper.
Below are my macros at the moment. The only difference between t0, t1, t2 and t3 are the time it spends with the button pushed.
This is first draft but I want to add some variables in this so that Klipper knows which tool it is on at any given time. I also want to add a homing to the 3d Chameleon, to the homing code.
So I'm making progress. Any comments or suggestions are welcome. Should I move this someplace else cause I guess I'm not really 'getting started' anymore :)
[gcode_macro T0] gcode: ;ACTIVATE_EXTRUDER EXTRUDER=extruder ; - 3D Chameleon Mk3 Tool T{next_extruder} - ;begin switch from extruder {previous_extruder} to extruder #{next_extruder} M117 Unloading Tool current extruder M118 Unloading Tool current extruder M82 ; turn absolute distances for the extruder ; unload extruder {previous_extruder} G92 E0 ; go to holding position to unload the stock extruder G0 X100 Y9 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 M82 ; cool (and size) in 1.8mm tube G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-10 F600; slowly allow it to cool G0 E1 F2000 ; blob elimination ; back to tip size G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-10 F600; slowly allow it to cool G0 E1 F4000 ; blob elimination G0 E-10 F4000 ; quickly retract the filament to shape it G0 E1 F4000 ; quickly ram the filament to shape it G0 E-10 F4000 ; quickly retract the filament to shape it G0 E1 F4000 ; quickly ram the filament to shape it ; back to 1.8 constriction G0 E-20 F4000 ; quickly retract the filament to shape it G0 E-18 F100; slowly allow it to cool ; turn the fan off M107 ; this printer has the fan in the way, so turn it off ; retract it back out of the extruder G92 E0 ;G0 E-0 F2000 G92 E0 ;G0 E-30 F2000 ;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 ; load extruder #{next_extruder} ; M117 Loading Tool T{next_extruder} ; press the button to select the new extruder G0 X0 Y-3 F2000 ; press the button G4 P500 ; dwell for .5 seconds - adjust this to match your machines single pulse time G0 X0 Y3 ; back off the button G4 S15; wait for it to happen ; adjust this time to match the actual tool change time - subtract the time it takes to load for the last 1" into the extruder G0 E118 F3000 ; << ------- ADJUST THE E50 VALUE TO STOP IT RIGHT AFTER IT LOADS INTO THE STOCK EXTRUDER (50mm is the default) ; ADJUST THE F1500 TO MATCH THE SPEED OF THE FILAMENT FROM THE 3D CHAMELEON ; NOTE: This defaults should work, but you can always tune them to be perfect. G4 P1500 ; This is just a half second extra reloading time... just to make sure 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 E0 F2000 ; <<<<<----------- EDIT THIS DISTANCE TO FINE TUNE THE FILAMENT LOADING TO STOP BLOBBING OR UNDEREXTRUSION ;G92 E0 M83 ; turn relative distances for the extruder M117 Tool T0 M118 Tool T0 G0 X110 Y110 F3000
Update: It's a fail! The extruder is just not strong enough to feed through to the hot end. I have installed a brand-new Dragonfly hotend, installed a BMG extruder with the default motor and was printing with this easily. Hook up the 3d Chameleon, and the extruder just makes a clicking sound with no feeding of the filament. I changed it to filament 2 to free it up, and can easily push it through with my hand to have a nice extrusion so its not like there is too much drag or something. I have printed the tension modifiers - 2.25 in fact and still not strong enough for a simple extrusion. I can't even get to programming the macros for Klipper if it can't even extrude/extract or move it. I will keep trying but looking for suggestions on next steps.
Update: Thanks Dave for the info! It helped a lot. Installed the 2.0 tension spring sliders. Much better performance but not quite there. It slips, it fails to pull the filament out of the hotend, and when successful, it skips and doesn't retract enough. I will print out a set of 2.25 and see if that makes a difference. I will also try and up the amp to the motor.
Thanks - printing now - where does it go?
Solved my issue I think. It's always a stupid cable. I used the cable that came with the package to connect to the motherboard. WRONG. I grabbed a new spare and its working now. I have extrusion. Now I need to go through the macros and fix the distances being retracted because it's going to far out, and not back in far enough :) Easy to fix I think. But I may to an extrusion test to make sure I have my rotation_distance set correctly since I had a BMG extruder before, which is geared, the 3D Chameleon is not. The nice part about doing it this way is you shouldn't have to play around too much with the slicer.
Dave what rotation_distance are you using? I'm also going to look for the tension tuning sliders. The link you provided is not found.
Thanks
Norm
Would be intereseted to see how this turns out. I had the same setup except I had an OmniaDrop direct drive on mine. Here is my printer.cfg
[tmc2209 extruder]
uart_pin: PC11
tx_pin: PC10
uart_address: 3
run_current: 0.650
hold_current: 0.500
stealthchop_threshold: 5
How does it run without the Y adapter? How about with the old motor -?
I no longer have any Creality printers, but have worked a little with my Rat Rigs running on an Octopus mainboard with an APUS extruder.
Here is the link to the tension sliders that Bill referenced
https://www.tinkercad.com/things/8oN2sybev8Z-copy-of-3dchameleon-mk3-tension-tuning-sliders/edit
For Mode 1, you need to print our Tension Sliders to increase the tension applied to the drive.
I'm not at a place where I can post a link, but you can search our Tinkercad site for it or search this forum for links.
Bill