SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
6.61k stars 773 forks source link

add option to define chamber preheat cycle (build plate position + temp, target chamber temp) #1146

Closed ckuhtz closed 10 months ago

ckuhtz commented 1 year ago

On a printer like the Bambu X1C (or an enclosed P1P), if the printer is homed, the build plate is moved near the top, the build plate is set to a user-defined temp (say 120C), the aux fan is turned to high, it can be used to rapidly heat the chamber to the desired temp (user-defined). Once the target chamber temp has been reached, the normal printing program can then proceed as before. Essentially, you're convection heating the chamber with the build plate as the aux fan can easily carry away the heat produced by blowing over it. By the time the build plate reaches temp target, it generally is within the target range for the chamber as the airflow is pretty efficient for the heat transfer.

Build plate temp needs to be driven through the build plate settings as the max will depend on the type (120C for Bambu engineering plate, for example). Target chamber temp needs to be driven through the filament setting. With both of these variables, it's ambient independent (although a max cycle time might be a nice safeguard as well as a max chamber temp per printer type, but not must have). Build plate position for this operation should probably should be tacked on to printer settings; it's desirable to not have it all the way under the nozzle, but 5-10mm below.

Aside from Bambu, there are other types of printers where this can also be used, which is why I think this is a nice feature add for those of us printing materials where chamber temp can make a diff.

I currently do this manually, but it sure would be nice to automate this step; I have no idea how I'd go about implementing this or I'd already have done it.

Any takers? Disagree? Agree?

sudermanjr commented 1 year ago

This would be a great feature, and a very common use-case with Voron printers. We're doing this manually right now for printing ASA. @fr3ak2402 I don't believe you fully addressed the core concept of the suggestion by @ckuhtz with your response.

ckuhtz commented 1 year ago

@fr3ak2402,

thanks for your reply. Please carefully re-read what I wrote.

The field for setting the printing chamber cannot be entered in the filaments, as this does not really make sense. Because the Bambulab has no heating for the chamber [..] Also, I'm not sure why Bambulab has the aux fan blowing over the print board during heat up, it could be related to board leveling or longevity of the print plate.

It doesn't.

That's why I suggested the slicer orchestrate the printer in the way I described above: Use the bed heater with airflow to heat the chamber, which is what many of us are doing manually already. By positioning the bed carefully, you can speed up the process.

Not sure what to say to the rest of your response as it seems completely out of context to me.

Thank you, Christian

ckuhtz commented 1 year ago

This would be a great feature, and a very common use-case with Voron printers. We're doing this manually right now for printing ASA. @fr3ak2402 I don't believe you fully addressed the core concept of the suggestion by @ckuhtz with your response.

Thank you. Concur, this is something I noted on Bambu X1C but has applicability beyond that as the idea can be implemented anywhere.

There's no reason why OrcaSlicer can't or shouldn't be a superset to whatever Bambu throws out. Just like Bambu innovated on top of others.

No, manually stitching profiles with custom G-code is neither scalable nor reliable.

fr3ak2402 commented 1 year ago

@ckuhtz I'm sorry that I misunderstood you above, I wouldn't deny that either. I looked at it from the developer's point of view and not from the user's point of view. My mistake, had a long day today.

But the X1C does not have a heater in the sense of a separate heater (it is only intended for the chamber), so it uses the heating board to heat the chamber or have I misunderstood something.

I like your suggestion. I think we got off to a bad start because of that.

I own 5 X1C printers myself. I would build the feature into the slicer and also test it on my X1Cs.

I just have to think about how best to incorporate this into the slicer, since we don't actually want to make any changes to the BBL profiles. The reason is that it is more difficult for us to maintain them when Bambulab develops them further, because we then have to adapt a lot etc.

But no matter, we'll get through that with a suggestion to install it in the slicer.

Actually this would be the easiest way with the X1C, but in view of the other printers that are suitable for the function, every G-code had to be fitted.

I could write you a G-code for your X1C which will turn on the AUX fan when heating up if you want... so that you have it automated, you just have to tell me which filaments you want it for. Or rather, does this feature make sense for all filament types?

Should the feature be switched on and off? Then I can also add an option on the UI.

ckuhtz commented 1 year ago

Small comment, the fan speed of the aux fan is heighest about 6x "1-step" toggles down from the top. Seems that's least resistance for the air to move over the plate. (You can hear it if you home, move plate to top, and then toggle down one step at a time). I don't know what that translates to in terms of dimensions, sorry. Looks like ~10mm below nozzle to me.

ckuhtz commented 1 year ago

@ckuhtz I'm sorry that I misunderstood you above, I wouldn't deny that either. I looked at it from the developer's point of view and not from the user's point of view. My mistake, had a long day today.

Alles klar. ;-)

I own 5 X1C printers myself. I would build the feature into the slicer and also test it on my X1Cs.

Cool. Thank you. Let me know if you'd like help testing it. I'd love to see how this is implemented if you don't mind tagging me on the PR.

I just have to think about how best to incorporate this into the slicer, since we don't actually want to make any changes to the BBL profiles. The reason is that it is more difficult for us to maintain them when Bambulab develops them further, because we then have to adapt a lot etc.

Understand. Does Bambu Studio actually throw up on anything added to the json that it doesn't recognize or is it just ignoring it? If it's ignoring the property, then we can just add an object and enumerate properties within that as a superset.

But no matter, we'll get through that with a suggestion to install it in the slicer.

Thanks!

Actually this would be the easiest way with the X1C, but in view of the other printers that are suitable for the function, every G-code had to be fitted.

Right. I think there needs to be an option in the machine profile to enable per machine. Once enabled (and specified with the appropriate G-Code), the options in the filament and process become live. ILR, this could become a feature to turn on chamber heaters for machines that have it instead of using the bed heater + fan + position of the build plate as a workaround.

I could write you a G-code for your X1C which will turn on the AUX fan when heating up if you want... so that you have it automated, you just have to tell me which filaments you want it for. Or rather, does this feature make sense for all filament types?

I personally only care about things like ASA. But PC and others could be a candidates. I don't know what an X1C does if you were to get to 90-100C for chamber and 180C for bed. :-) So, ABS, ASA, and other filament/process ilk that are in that same temp range would be targets on a first go around.

For PLA, this doesn't make much sense obviously.

Should the feature be switched on and off? Then I can also add an option on the UI.

Yes. I think it needs to be controllable and something to enable explicitly for a process profile. In the Others tab maybe? Call it "[ ] Chamber pre-heating" with a tooltip like "Enable this to pre-heat the chamber temperature to the desired target temperature. Requires support in machine profile." Ideally, it'd be greyed out if the machine profile doesn't have the magic bits to tell it "yes, this machine can do it" and "this is the g-code for how to do it".

So, correction to the first post, filament doesn't need to know about this. But the machine and process profiles do (and associated UI).

Happy to help any way I can.

SoftFever commented 1 year ago

I did similar things on my Voron. Take a look at print_start/HEATSOAK macros I wrote here: https://github.com/SoftFever/Voron2.4_350_SoftFever/blob/master/macros.cfg

But I don't see a chance to achieve that with Bambu printers. Bambu users are at the mercy of Bambu when it comes to achieving a high level of freedom and customization. I won't hold my breath ;)

github-actions[bot] commented 10 months ago

GitHub bot: this issue is stale because it has been open for 90 days with no activity.

ckuhtz commented 10 months ago

Is there really no way to achieve this programmatically? Would be nice to stop this manual step.

SoftFever commented 10 months ago

There's nothing the slicer can do in this case except issue a command instructing the printer to wait until a certain temperature or time is reached, as this involves reading sensors and controlling hardware. The printer's firmware must support these commands. While this is straightforward with open-source firmware, it's worth noting that BambuLab's printer firmware is not open-sourced.

markaudacity commented 2 months ago

This issue is definitely not completed as of 1.9.1