22 minutes ago, kupfeli said:Where did you find this?
CarloK is working at Ultimaker, so he has his sources 🙂 And if I am not completely wrong he is in the firmware team, so he probably wrote the code for it.
- 1
22 minutes ago, kupfeli said:Where did you find this?
CarloK is working at Ultimaker, so he has his sources 🙂 And if I am not completely wrong he is in the firmware team, so he probably wrote the code for it.
35 minutes ago, kupfeli said:I understand though that the 2+ Connect is geared towards the “just print my stuff without tinkering” people, so i understand the less dependencies the better.
Yes it is and I know and understand that some people want to do more and want to have more control, but on the other side, the UM2+C is my most used printer, I really love it and never had the need to fine tune something during the print. I also had a Prusa printer some time ago and there I often had the need to tune something during the print, but not with an Ultimaker printer.
The only thing that is really missing is the pause feature, but as far as I know, it will come in the future.
8 minutes ago, Smithy said:CarloK is working at Ultimaker, so he has his sources 🙂 And if I am not completely wrong he is in the firmware team, so he probably wrote the code for it.
Aaaah that explains it, cool 🙂
3 minutes ago, kupfeli said:Aaaah that explains it, cool 🙂
Yeah, BigBrother is watching us here 🙂
5 minutes ago, Smithy said:Yes it is and I know and understand that some people want to do more and want to have more control, but on the other side, the UM2+C is my most used printer, I really love it and never had the need to fine tune something during the print. I also had a Prusa printers some time ago and there I often had the need to tune something during the print, but not with an Ultimaker printer.
The only thing that is really missing is the pause feature, but as far as I know, it will come in the future.
Ah yes, well I also really love the Ultimaker 2+ Connect, excellent and reliable prints and a bottom surface that is jaw-dropping 🙂
The thing is, now for the first time I am printing a foil, consisting out of white letters and a black background (it is for an Enigma machine) so I need to first print the white letters, then change material and print the rest.
Unfortunately Cura does not let me print two objects on top of eachother, so I need to merge the gcode manually and put some pause in between where I can change material.
So as there is no pause possibility, I just add gcode to move the extruder up and down slowly and during that process I simply pull out the material and push in the new material until material comes out. Of and before that issue a gcode command to set the current E value to 0. Only way I can think of doing this without the bed/extruder cooling off too much.
If there are better ways I would gladly hear them!
Oh and probably I will use Simplify3D, as I cant get Cura to print just one layer, somehow it is always a minimum of two, no matter what I change in the settings.
Your workaround sounds good, but you can also pause the print directly on the printer too. That's they way I do a filament change during the print, when the spool is empty. The downside is, you have to watch the print, but as far as I understood you have to change is soon after the print start, so not a big deal.
4 minutes ago, kupfeli said:somehow it is always a minimum of two
If I remember correctly it is a behavior (bug?) of Cura, but not 100% sure.
10 minutes ago, Smithy said:Your workaround sounds good, but you can also pause the print directly on the printer too. That's they way I do a filament change during the print, when the spool is empty. The downside is, you have to watch the print, but as far as I understood you have to change is soon after the print start, so not a big deal.
If I remember correctly it is a behavior (bug?) of Cura, but not 100% sure.
Yeah the pausing is a problem though, as it takes a long time to click on the skip cooldown and then the change material etcetera. I am going to try some stuff now and will post it here, so maybe others can benefit from it too 🙂
I tried to create my own Cura build yesterday, but couldn't get the Docker buildchain running, so I am going to invest some more time later on maybe to make a native buildchain, but maybe I will also stick to S3D.
M600, M601 are not Marlin gcodes. I mean, Marlin does not support those and this printer is *mostly* Marlin.
Neither M0 nor M1 work? Did you try M0?
There are 2 computers inside the UM2+C and they each take gcodes. There is the linux computer that reads the gcode file first and then sends the gcodes to the second computer through I think USB cable. The second computer is running Marlin. Some of the commands are sent onto the second computer, but some are blocked and dealt with by the first. So for example on the UM3/S3/S5, (yes I know you have a single nozzle printer) the T0 and T1 commands are likely converted to multiple gcodes to move the print head over to the nozzle switching device. They might be implemented on the Marlin board but I think they are implemented (at least partially) on the linux computer.
Anyway to my point - @CarloK knows all this and knows if I'm wrong about the linux computer implementing some of the gcodes, but he may have copied and pasted the above list from the Marlin computer and possibly M0 is implemented by the linux computer. Possibly? I mean I think the linux computer has to do the actual pausing because it controls the display. Therefore the M0 command doesn't need to be part of implemented Marlin gcodes. So I'd give it a shot.
43 minutes ago, gr5 said:M600, M601 are not Marlin gcodes. I mean, Marlin does not support those and this printer is *mostly* Marlin.
Neither M0 nor M1 work? Did you try M0?
There are 2 computers inside the UM2+C and they each take gcodes. There is the linux computer that reads the gcode file first and then sends the gcodes to the second computer through I think USB cable. The second computer is running Marlin. Some of the commands are sent onto the second computer, but some are blocked and dealt with by the first. So for example on the UM3/S3/S5, (yes I know you have a single nozzle printer) the T0 and T1 commands are likely converted to multiple gcodes to move the print head over to the nozzle switching device. They might be implemented on the Marlin board but I think they are implemented (at least partially) on the linux computer.
Anyway to my point - @CarloK knows all this and knows if I'm wrong about the linux computer implementing some of the gcodes, but he may have copied and pasted the above list from the Marlin computer and possibly M0 is implemented by the linux computer. Possibly? I mean I think the linux computer has to do the actual pausing because it controls the display. Therefore the M0 command doesn't need to be part of implemented Marlin gcodes. So I'd give it a shot.
Thanks for your extensive reply gr5! Yes unfortunately M0 did not work, I am almost sure, but I will give it another try to be certain!
So yeah, the following worked for me, I had enough time to change to black filament, push it through manually, flip the lever, clean the nozzle and it started printing the black part perfectly 🙂
Only thing that could be added is a nozzle cooldown to 90 degrees, do a cold pull, heat up the nozzle again and push through the black filament. That way you unclog the nozzle too. But I don't need that right now.
Here is the code for you guys and gals wanting to change filament during print for instance and have no pause function on your printer:
;FILAMENT_CHANGE_SCRIPT_START G0 F1000 Z1.0 G0 F1000 X0.0 Y0.0 G0 F1000 Z200.0 ;MOVE UP AND DOWN A FEW TIME IN MM/MIN, TIME TO CHANGE MATERIAL = 2 minutes (if the feedrate is indeed mm/min) G0 F60 Z170.0 G0 F60 Z200.0 G0 F60 Z170.0 G0 F60 Z200.0 ;TELL THE ENGINE THAT THE EXTRUDED POS IS ZERO NOW G92 E0 ;MOVE SLOWLY TO THE RIGHT (SO NOW YOU HAVE TIME TO CLEAN THE NOZZLE) G0 F60 X50.0 ;EXTRUDE TO ZERO POS G1 F1500 E0 ;MORE TIME TO CLEAN THE NOZZLE G0 F60 X0.0 ;FILAMENT_CHANGE_SCRIPT_ENDEdited by kupfeli
Great, thanks a lot for sharing your gcode.
And the result looks very nice and clean!
On 1/17/2022 at 9:03 PM, kupfeli said:Thanks for your extensive reply gr5! Yes unfortunately M0 did not work, I am almost sure, but I will give it another try to be certain!
Confirmed now that M0 and M1 do not work. What I have also confirmed is that you should not fiddle around too much with the gcode if you are using a Ultimaker 2+ Connect. The M104 and M109 are problematic commands and somehow it seems they are not properly implemented. Sometimes the printer just hangs and can only be restarted by a flip of the switch. The same gcode runs fine in other occasions, so that is weird.
Somehow waiting for cooling down with M109 R90 for instance also does not work.
Anyhow, I will stop experimenting to prevent the printer from getting ruined and basically you dont really need to fiddle around, only when doing multicolor prints 🙂
I've spent some time exploring the Filament Change and Pause at Height features on my UM2C.
Unfortunately it's not very well hanlded as you guys suggested, but at the end I found an "OK" solution.
Here is a summary of my tests (Fimware 1.5.2, Cura 5.1) :
- Pause at height
- Marlin (M0) => ✓~
- Griffin (M0) => ✗✗
- BQ (M25) => ✓~
- RepRap (M226) => ✓~
- Repetier/OctoPrint (@pause) => ✓~
- Filament change
- Firmware conf => ✗✗
- Marlin (M600) => ✗✗
- RepRap (M600) => ✗✗
✓~ : Travel only : priter just travels in park position then returns to work immediatly
✗✗ : Ignored by printer
So to recap, Filament Change is just totally ignored, but some of the Pause at Height commands do something.
So at the end, because the pause button on the screen works quite well (we can even change the filament), I use one of theses pause command to notify me when to manually tap the pause button (the traveling of the gcode pause command does a different motor noise). It's clearly not ideal, but it's works.
I've talked with the Ultimaker support to have more information about this, and here are some quotes of their answers :
Quote"Filament Change" script does not work at all with Ultimaker 3D Printers.
"Pause At Height" post processing script is not officially supported by the Ultimaker 2+ Connect at this time. Our developers are aware of the request but I am sorry we are unable to commit or promise a timeline for it to be added at the moment due to the summer holiday season and also because of several tasks of higher priority.
So maybe it will come in a futur firmware release 🙂
On 8/18/2022 at 1:17 PM, Nico04 said:I've spent some time exploring the Filament Change and Pause at Height features on my UM2C.
Unfortunately it's not very well hanlded as you guys suggested, but at the end I found an "OK" solution.
Here is a summary of my tests (Fimware 1.5.2, Cura 5.1) :
- Pause at height
- Marlin (M0) => ✓~
- Griffin (M0) => ✗✗
- BQ (M25) => ✓~
- RepRap (M226) => ✓~
- Repetier/OctoPrint (@pause) => ✓~
- Filament change
- Firmware conf => ✗✗
- Marlin (M600) => ✗✗
- RepRap (M600) => ✗✗
✓~ : Travel only : priter just travels in park position then returns to work immediatly
✗✗ : Ignored by printer
So to recap, Filament Change is just totally ignored, but some of the Pause at Height commands do something.
So at the end, because the pause button on the screen works quite well (we can even change the filament), I use one of theses pause command to notify me when to manually tap the pause button (the traveling of the gcode pause command does a different motor noise). It's clearly not ideal, but it's works.
I've talked with the Ultimaker support to have more information about this, and here are some quotes of their answers :
So maybe it will come in a futur firmware release 🙂
Thanks alot for sharing this with us !! 🙂
Hi there, apologies for pulling this post from its gave but "Change material while print is paused. It is now possible to pause the print and change the material spool in the paused state." is from 1.5 release notes from June 2022.
What has then be introduced and how can it be used?
4 hours ago, utopiah said:Hi there, apologies for pulling this post from its gave but "Change material while print is paused. It is now possible to pause the print and change the material spool in the paused state." is from 1.5 release notes from June 2022.
What has then be introduced and how can it be used?
I think the release notes are out of context if you had not used the 2+C before that firmware release..
You were not able to change material when you manually paused the printer from the touch screen before.
This update only made that possible.
It is still not possible to use stop at layer height etc gcode to pause the 2+C as noted in this thread its either ignored or it only pauses for a moment before auto resuming itself.
If you want to change material while printing you will need to manually pause the machine from the touch screen.
On 1/16/2022 at 5:23 PM, CarloK said:This should be about it:
//Implemented Codes //------------------- // G0 -> G1 // G1 - Coordinated Movement X Y Z E // G2 - CW ARC // G3 - CCW ARC // G10 - Retract filament to given distance from nozzle tip (will affect the E-position) (G10 S-16.5 F300) // G28 - Home all Axis // G90 - Use Absolute Coordinates. Affects all axes, including the E-axis. See M82 for E-axis only. // G91 - Use Relative Coordinates. Affects all axes, including the E-axis. See M83 for E-axis only. // G92 - Set current position to coordinates given // G280 Prime blob. S0 = blob, S1 = none, only moves filament to nozzle tip //RepRap M Codes // M104 - Set extruder target temp // M105 - Read current temp and status info // M106 - Fan on // M107 - Fan off // M109 - wait for extruder to reach target temp //Custom M Codes // M17 - Enable/Power all stepper motors // M18 - Disable all stepper motors; same as M84 // M80 - Turn on Power Supply // M81 - Turn off Power Supply // M82 - Set E codes absolute (default) // M83 - Set E codes relative while in Absolute Coordinates (G90) mode // M84 - Disable steppers until next move // M92 - Set axis_steps_per_unit - same syntax as G92 // M114 - Output current position to serial port // M115 - Get Firmware Version and Capabilities // M140 - Set bed target temp // M142 - Set system lights (M142 w[0-255]) Note that the parameter letters are all lower case. // M190 - Wait for bed to reach target temp // M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000) // M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!! // M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec // M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2. // M205 - Advanced settings: minimum travel speed S=while printing, T=travel only, B=minimum segment time [us], X=maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk // M206 - Set additional homing offset // M218 - Set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y> Z<offset_on_Z> // M220 S<factor in percent> - Set speed factor override percentage // M221 S<factor in percent> - Set extrude factor override percentage // M290 P<powerBudget> I<idle_power_consumption> // M291 R<nominal_bed_resistance> A<bed_resistance_per_degree> V<bed_voltage> // M292 T<hotend_nr> R<nominal_hotend_cartridge_resistance> V<hotend_slot_voltage> P<max_hotend_power> // M299 - Set retracted filament length: T<hotend_nr> R<retracted length> // M301 - Set nozzle PID parameters FF, P, I, D, i, C and R (Q: Debug dump enable/disable) // M302 - Allow cold extrudes, or set the minimum extrude S<temperature> // M304 - Set bed PID parameters FF, P, I, D, i, C and R (Q: Debug dump enable/disable) // M400 - Finish all moves // M401 - Quickstop - Abort all the planned moves. This will stop the head mid-move, so most likely the head will be out of sync with the stepper position after this // M405 - Enable/disable the flow sensor hardware. S1=active A=averaging value // M406 - Re-init flow sensor algorithm // M407 - Read raw flow sensor value: S<sensor number> // M907 - Set digital trimpot motor current using axis codes. Current in mA. X-axis sets Y-axis as well. (M907 X1300 Z1300 E1250) // M998 - Intentionally stop the system as if by an error. // M999 - Restart after being stopped by error // M12000 - Set build volume maximum position (M12000 X200 Y200 Z200) // M12001 - Set build volume minimum position (M12000 X0 Y0 Z0) // The minimum and maximum position combined define the build volume for the printer. They also define the default homing coordinates. // M12003 - Get board type // M12004 - Set the direction of each axis. M12004 X[0/1] Y[0/1] Z[0/1], To set direction per extruder: M12004 T[0/1] E[0/1] // M12005 - Set the extruder temperature compensation // M12006 - Set the build plate temperature compensation // M12010 - Read/Write TMC2130 stepper driver registers. R[register index] (S[driver index]) (V[new register value]). A driver index of 0xFF will address all drivers. // M12020 - Activate the high power 24V self test. This will check if the 24VHP can be turned off and on. Triggers an error if it can't. // M12030 - Set the Top Cap fan speed: S<speed 0-255>, without S-parameter the fan will be in 'auto' mode. // M12031 - Read the topcap present signal // M12032 - Read the topcap temperature
Do these work got the Ultimaker 2 extended + ??
and what is G11 ?
thanks in advance
gcodes are detailed here. UM2+C will implement mostly in Marlin format so look at the marlin column when figuring out a gcode. G10, G11 are retract and unretract. Most firmwares don't support that. They are used commonly on the UM2 but I didn't think they were used on the UM2+C. Usually you direct the extruder directly in gcode e.g. G1 E0.532 F1200 with the retract distance and speed in the gcode.
https://reprap.org/wiki/G-code
Recommended Posts
CarloK 205
This should be about it:
Link to post
Share on other sites
kupfeli 9
Awesome, thank you so much! Where did you find this?
Unfortunately that means I cant pause my printer using gcode 😞
A workaround I though of is moving the Z up and down with a very low feedrate that takes a while and then I have time to change filament.
I dont really understand why something like the filament change command is not supported. I do understand the Arduino/firmware situation, where you cant control the lcd from the gcode, but then again…printers like prusa also have kind of the same situation but there it works right?
I understand though that the 2+ Connect is geared towards the “just print my stuff without tinkering” people, so i understand the less dependencies the better.
Link to post
Share on other sites