OpenNeptune3D / OpenNept4une

Transform your Neptune 4 3D printer with OpenNept4une, a collection of scripts designed to replace the manufacturer's software, reverting to the original open-source projects for enhanced performance, reliability, and features.
GNU General Public License v3.0
322 stars 36 forks source link

Adds the possibility to wait for the bed to stabilize #176

Closed Rottenbeer closed 2 months ago

Rottenbeer commented 4 months ago

It seems the beds need like 30 min until they are stable and do not expand anymore, after heating them up. I add another paramter to PRINT_START to be able to wait for a some seconds before starting the print. PRINT_START can be called like this to wait for 30 minutes: PRINT_START BED_STABILIZE_WAIT=1800000 BED_TEMP=...

barrenechea commented 4 months ago

This looks good to me, as I have a similar setup! I was just wondering if it is possible to handle calculations to make it more accessible as a param input. In my enclosed N4 and with a Bentobox running, I usually reach a stable temperature in 10 minutes. Still, I don't think having milliseconds of granularity (or even seconds) would be "required" for bed temperature stabilization.

If the input parameter could be in minutes and the GCode could handle passing it to milliseconds, this would be golden for the end-user experience!

Rottenbeer commented 4 months ago

@barrenechea yes, you are right! I fixed it and changed it to minutes.

halfmanbear commented 4 months ago

If these parameters are configured in the slicer machine start g-code anyway, it might be easier to include the commands below in the Plus / Max Orca Profile Bundles. By default, they can be commented out. Users can enable/configure as they please.

# SET_BED_TEMPERATURE TARGET=[hot_plate_temp_initial_layer]    ; Plus/Max bed pre-heat
# G4 P{30 * 60000}    ; Plus/Max 30min heat-soak (milliseconds)
Screenshot 2024-05-01 at 11 56 29
Rottenbeer commented 4 months ago

@halfmanbear true, but it's easier to get this via as an update via a systemupdate, then you don't have to fiddle with profiles and it's kinda more readable if it's a parameter like this: image You just have to put the wait time in and that's it.

halfmanbear commented 4 months ago

I'm a bit cautious about adding complexity to the base printer.cfg, especially since this feature might only be utilised by some Plus & Max users.

We can accommodate model-specific features within the Orca profiles, as they are tailored for each model.

It's important to note that regardless of the implementation approach, users will need to insert lines within the filament profile start G-code to activate this feature.

Rottenbeer commented 4 months ago

@halfmanbear don't you think this is useful for neptune 4 and 4 pro users as well?

halfmanbear commented 4 months ago

I have a pro personally, I've not found it to be useful to heat-soak the bed.

I think there is more at play than just thermal expansion of the bed (not to say that the stabilized bed temp isn't beneficial).

Although once you start printing, your laying down an insulating material and blowing air at the part and bed. This probably causes more thermal variations over the surface than starting a print with the temperature slightly uneven.

I believe the main issue is that the larger beds need more frequent on time (once at temperature) to maintain the target temp. This causes the probe supply voltage to vary with the heaters pwm load. Causing it to read inaccuratly and do a bad mesh.

I assume the extended heat soaking causes the pwm percentage of the bed heater on-cycles to reduce over time, resulting in an improvement in probe accuracy thus better first layers.

lexxxel commented 4 months ago

I personally use PROBE_ACCURACY to see if my bed is heat-soaked:

heat-soaked my output is:

  10:43:29 
  $ G28
  10:43:52 
  // PROBE_ACCURACY at X:189.250 Y:144.550 Z:7.733 (samples=10 retract=2.500 speed=6.0 lift_speed=20.0)
  10:43:55 
  // probe at 189.250,144.550 is z=0.002500
  10:43:56 
  // probe at 189.250,144.550 is z=-0.000000
  10:43:57 
  // probe at 189.250,144.550 is z=-0.000000
  10:43:58 
  // probe at 189.250,144.550 is z=-0.000000
  10:44:00 
  // probe at 189.250,144.550 is z=0.002500
  10:44:01 
  // probe at 189.250,144.550 is z=-0.002500
  10:44:02 
  // probe at 189.250,144.550 is z=-0.000000
  10:44:03 
  // probe at 189.250,144.550 is z=-0.002500
  10:44:04 
  // probe at 189.250,144.550 is z=-0.002500
  10:44:05 
  // probe at 189.250,144.550 is z=-0.000000
  10:44:05 
  // probe accuracy results: maximum 0.002500, minimum -0.002500, range 0.005000, average -0.000250, median -0.000000, standard deviation 0.001750

What I do not know is how to get the result of PROBE_ACCURACY in gcode, because I have not invested time, BUT on my N4Plus I do not require 30min for a 30°C bed, but about 1h for a 80°C bed.

halfmanbear commented 2 months ago

@Rottenbeer any objections on switching the parameter;

BED_STABILIZE_WAIT_MINUTES to BED_HEAT_SOAK_MINUTES

In the near future It will be much easier modifying & updating our provided Orca profiles due to @phillipthelen slicer profile generating PoC.

I won't be adding this placeholder to the Orca profiles untill they require updating or untill the slicer profile generation tool is complete.

That being said I will merge this PR with Dev & update the Wiki after the next Dev to main merge. 👍

Rottenbeer commented 2 months ago

@halfmanbear we can change the parameter name, yes.

Rottenbeer commented 2 months ago

@halfmanbear updated.

halfmanbear commented 2 months ago

Awesome 👍