This is an update to our previous Thoughts on Kobra 2 Max. We would like to share our experience with tramming the bed of the Kobra 2 Max.
As we mentioned previously, the 7x7 49-point auto-bed-leveling seems not sufficient enough for such large bed. The nozzle always gets too close to the bed where the screws are.
The auto-leveling sensor on this machine is basically a small metal detector. It will only sense the spring steel under the PEI coating, which might not be accurate if the PEI coating is not the same thickness. We also suspect the screw holes on the magnet sheet affecting the value of the sensor, as metal detector relies on magnetic field, and we still get high spots around the screws after tramming the bed.
We spend sometime on the following to get a good first layer.
We are sharing our experience solely for informational purposes. We do not encourage users to disassemble the printer or adjust configuration files that are not meant to be accessible by default. We do not accept responsibility or liability for any damage caused to the printer as a result of following modifications.
We don't think this will be necessary after we find a way to manually modify the bed mesh. But it might help if you want everything perfect.
There are 8 metal spacers under the heat-bed which are not height-adjustable. We replaced 7 of them with silicone spacers (bought from Aliexpress, and we will have them in-stock in our next shipment), that allowed us to adjust the height of the bed at corners.
The silicone spacer we used is 18mm tall and 16mm diameter. Total 7 of them. Combine with 3 different printed (PLA will be fine) shim and installed as follow:
Please note: This is only for experienced users, modifying printer.cfg will void your warranty.
Anycubic does not open source their Klipper based KobraOS (it is heavily modified Klipper, since they need to get it working with the AMS clone in Kobra 3) and block external connections to the OS. There is no way natively to modify printer.cfg but someone found a way to download/upload the printer.cfg through USB drive. Full story and credits go here https://klipper.discourse.group/t/printer-cfg-for-anycubic-kobra-2-plus-pro-max/.
The gcodes can be downloaded here. There are 2 gcodes in the zip, using them by "print" the gcode file on the printer:
To get the bed mesh and values need to be updated, we did the following steps:
We updated our start gcodes, now it only heat up the nozzle before extrusion.
; Start G-Codes G90 ; use absolute coordinates M83 ; extruder relative mode M140 S[first_layer_bed_temperature] ; set bed temp M190 S[first_layer_bed_temperature] ; wait for bed temp G28 ; move X/Y/Z to min endstops G1 Z20 ; nozzle to 20mm G92 E0 ; zero the extruded length G1 X3 Y3 F6000 ; move to 3 x 3 G1 Z2 ; nozzle to 2mm M104 S[first_layer_temperature] ; set extruder temp M109 S[first_layer_temperature] ; wait for extruder temp G1 Z0.28 ; nozzle to 0.28mm G1 E6 F500 ; extrude 6mm G1 X180 E25 F500 ; extrude 25mm of filament in a 18cm line G1 Z2 ; nozzle to 2mm G1 E-0.4 F3000 ; retract 0.4mm G92 E0 ; zero the extruded length again G1 X181 F4000 ; quickly wipe away from the filament line M117
End gcodes also here, same as previous post.
; End G-Codes
{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+2, max_print_height)} F600 ; Move print head up{endif}
G1 X5 Y{print_bed_max[1]*0.85} F{travel_speed*60} ; present print
{if max_layer_z < max_print_height-10}G1 Z{z_offset+min(max_layer_z+70, max_print_height-10)} F600 ; Move print head further up{endif}
{if max_layer_z < max_print_height*0.6}G1 Z{max_print_height*0.6} F600 ; Move print head further up{endif}
G1 E-1 F3000 ; retract 1mm
M140 S0 ; turn off heatbed
M104 S0 ; turn off temperature
M107 ; turn off fan
M84
*The bed photo is stolen from https://www.printables.com/model/671915. All credits goes to the author.