My N4MAX Start G-Code for a good first layer (adaptive mesh level & purge line for every print)
Hello Everyone, I want to share my Machine Start G code config. Since I've been reading a lot of people are having issues with their first layers and prints. I had a ton of issues with my prints, and it was getting very frustrating to print with this machine. So I decided to try an auto bed level that is included in ORCA slicer.
Basically is Orca Slicer's auto bed level and mesh along with the default Neptune 4 max profile to prepare the machine. The machine will home, heat up, probe and do a bed mesh the size of the print before starting, then it will purge a small line of filament prior starting the first layer.
For big prints, it will take a while to do the bed mesh, but I think is worth it, and lets face it, if you are printing above 40x40x40 quality is priority vs speed, so I guess 10 minutes or so is not that big of a deal to get a good first layer to grip the print.
Anyways, if any of you would like to try it, go ahead, I think for the people who are having a headache with the first layer it is a good option to try. Just replace the machine g starting g code in the machine settings.
If you have any observations or improvements to this g-code please share your thoughts in this thread. any improvement / comments are welcome.
I also recommend before trying this manually leveling your printbead with a screw adjust or a first layer print to get tune the z offset.
edit: my machine is not modded, it has the original hardware and firmware. Hope to soon add an eddy probe.
Here it goes:
;;===== date: 20240520 =====================
M400 ; wait for buffer to clear
;[printer_model]
;initial_filament:{filament_type[initial_extruder]}
;curr_bed_type={curr_bed_type}
M220 S100 ;Set the feed speed to 100%
M221 S100 ;Set the flow rate to 100%
M104 S140
M190 S[bed_temperature_initial_layer_single]
G90
G28 ;home
G1 Z10 F300
G1 X{print_bed_max[0]*0.5-50} Y0.5 F6000
G1 Z0.4 F300
; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=1 ADAPTIVE_MARGIN=0
M109 S[nozzle_temperature_initial_layer]
G92 E0.0 ; reset extruder
G1 X{first_layer_print_min[0]-10} Y{first_layer_print_min[1]} Z0.8 F6000.0 ; position 10mm left from the lower left of the first layer
G1 X{first_layer_print_min[0]-10} Y{first_layer_print_min[1]+30} E30 F360.0 ; extrude 30mm of filament in the y direction
G92 E0.0 ; reset extruder
G1 E-0.5 F2100 ; small retraction
G1 Y{first_layer_print_min[1]+40} F6000.0 ; move an additional 10mm without extruding
G92 E0.0 ; reset extruder
Edit 2: Please read Accomplished_Fig6924 comment in this thread, he gas a great explanation of the adjustments that can be done to this code and share some codes of his own, they seem to be more robust and contains different versions for the neptune's printer models.