By default, cura heats the bed first, then the hotend. This is fine, but that doesn't
mean we don't want to tinker with it.
If we look in marlin's documentation we will see there's GCODE commands, M commands, to
do each. M104 for the hotend, and M140 for the bed. And I guess if you're posh then you
have M141 too for the chamber but here in creality land we don't have this kind of thing.
Heated chambers...hah.
To make the printer wait between one and the other is also an M command. M109 is "wait
for hotend temperature" and if we look at the documentation we can see you supply the
temperature, so you can have it lower than the actual set temperature I guess and though
I haven't tried it, this would allow you to overlap the heating rather than having one
wait for the other, I can see why you might want to do this.
Similarly we have M190 which looks distinctly like an afterthought number, for the wait
for bed temperature command.
All good. Until you look at cura's startup code.
Yeah, nothing. Initially this is a bit mind boggling, how can you change the behaviour
of the heating start code if there isn't any?
Well it turns out...I know your'e not expecting me to say this but yes, it turns out, it's
complicated.
If we look at some generated gcode we can see we have all the right M codes right here
at the top. Set the bed to 70, wait for the bed here with the M190, then same for hotend,
M105 by the way is report temperatures, as in, to the host which would be octoprint or
whatever, can't say I'm sure what that's for in this context but it does it, even the documentation
says "nah dont do that, use M155" which ...whatever.
The worry here is that we can't edit this if it's not within our start code.
Luckily we can, but....
...it's complicated.
If you just stick it in there, then it might work or cura might override it. In my tests,
cura did not override it, but it did put it below its own code, so this would kind of
not work as intended, you'd be waiting for two preheats.
Might sound like cura misbehaving but if you think about it, do you really want to hard
code your start temperature into your gcode? No, probably not. Because of course it's a
setting in cura isn't it. Switch from PLA to TPU, what do you want to do? Change the
temperature, obviously.
So here's the way you do it.
By putting that parameterised bit in there, not only will cura populate it for you, but
it also then knows not to duplicate it with its own. Quite clever.
And of course you can switch these around however you want. As per this stackexchange
answer you can have simultaneous or sequential bed heating, again I will link below so you
can cut/paste this instead of typing it
If you have more than one extruder then you're in a fairly exclusive club but here's how
you do it, I'll link to this page below. There's some sass on this thread too so enjoy that,
seems common on the cura forums and it's always entertaining. Anyway Ghostkeeper is a dev,
if not the dev, so while I don't have multiple extruders and haven't tried it, what he says
will be canon.
As a side note, of not much use but I thought interesting anyway, there is also a G4 command
you can use to just insert a pause. It's called dwell, which makes it sound like it's come
from an 8 bit RPG but it's measured in milliseconds or seconds if you put a P or S infront of
the time, so we're talking G4 S10 for ten seconds. Might come in useful someday especially
if you're messing with filament change or something, so remember that I guess!
See you tomorrow!