Nozzle rams into bed when not near center
-
...I'm ready to pull out whatever is left of my hair over this.
I've been slowly working on my converted Anycubic Kossel Linear Plus printer over the past 12 months or so, putting in a Duet WiFi board, Haydn's magnetic arms, a Duet Smart Effector, and a borosilicate glass plate (among other rebuild items).
The issue I'm having now is that I can print small objects (20mm calibration cube, 3D Benchy, etc.) without major problems and they look great. But once I print anything that is larger and requires travel any considerable distance away from the center of the plate, the nozzle drags against the glass and I have to emergency stop the printer to avoid damage.
I have auto-calibration included in the start G-Code in Cura for each print, and I do not have an auto-home set after that. My bed is almost perfectly level, I have a bubble level that, when placed on various parts of the plate, reads the same at each position. Also, it looks the same (the same amount of almost perfectly level) when placed atop the Smart Effector, bubble is in the same place.
I have performed Z trigger height calibration with paper at 5 points on the bed (X0/Y0, X100/Y100, X-100/Y100, X100/Y-100, and X-100/Y-100), and they're all within 0.1mm of each other, but I'm not sure how to take that variance into account in G-Code (or if I need to at all).
I took a speed square and checked for warping on the glass plate, and there doesn't appear to be any of that going on, but just in case, I've ordered some mirrors that are due to arrive tomorrow and I will try those to see if that changes anything.
The magnetic arms are all within 0.02mm of each other in length, 304.12mm-304.14mm.
I'm going to post my config files in the hopes that I have made some obvious, boneheaded mistake, but I'm starting to wonder if this thing will ever work. Any advice on what to check next or tweak would be very much appreciated. At this point, I feel equally like I could be one tweak away or completely turned around, I just don't know.
-
-
Include your homedelta.g and bed.g as well as the out put put M122 and M98 P"config.g" please.
Have you seen these?
https://duet3d.dozuki.com/Wiki/Calibrating_a_delta_printer
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareDeltaPrinter -
@Phaedrux said in Nozzle rams into bed when not near center:
Include your homedelta.g and bed.g as well as the out put put M122 and M98 P"config.g" please.
homedelta.g bed.gM122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 2.05.1 running on Duet WiFi 1.02 or later Board ID: 08DGM-917DA-G4MSJ-6JTD6-3S86L-19N7A Used output buffers: 3 of 24 (6 max) === RTOS === Static ram: 25712 Dynamic ram: 92664 of which 336 recycled Exception stack ram used: 392 Never used ram: 11968 Tasks: NETWORK(ready,764) HEAT(blocked,1232) MAIN(running,3816) IDLE(ready,160) Owned mutexes: === Platform === Last reset 00:02:19 ago, cause: power up Last software reset at 2021-01-20 13:59, reason: User, spinning module GCodes, available RAM 11944 bytes (slot 3) Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task 0x4e49414d Error status: 0 Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest block write time: 0.0ms, max retries 0 MCU temperature: min 2.6, current 8.6, max 8.7 Supply voltage: min 12.7, current 12.8, max 13.0, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: standstill, SG min/max 0/378 Driver 1: standstill, SG min/max 0/391 Driver 2: standstill, SG min/max 0/369 Driver 3: standstill, SG min/max not available Driver 4: standstill, SG min/max not available Date/time: 2021-01-20 15:47:44 Cache data hit count 413972580 Slowest loop: 3.60ms; fastest: 0.06ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Move === Hiccups: 0, FreeDm: 160, MinFreeDm: 154, MaxWait: 126689ms Bed compensation in use: none, comp offset 0.000 === DDARing === Scheduled moves: 5, completed moves: 5, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Stack records: 2 allocated, 0 in use Movement lock held by null http is idle in state(s) 0 telnet is idle in state(s) 0 file is idle in state(s) 0 serial is idle in state(s) 0 aux is idle in state(s) 0 daemon is idle in state(s) 0 queue is idle in state(s) 0 autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 15.46ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 1 of 8 - WiFi - Network state is running WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.23 WiFi MAC address 60:01:94:2e:12:42 WiFi Vcc 3.38, reset reason Turned on by main processor WiFi flash size 4194304, free heap 23648 WiFi IP address 192.168.1.36 WiFi signal strength -55dBm, reconnections 0, sleep mode modem Socket states: 0 0 0 0 0 0 0 0
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled
Have you seen these?
https://duet3d.dozuki.com/Wiki/Calibrating_a_delta_printer
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareDeltaPrinterI have read them and followed them, yes.
-
Cura start gcode?
-
@Phaedrux said in Nozzle rams into bed when not near center:
Cura start gcode?
G32 ; auto-calibration G21 ; metric values G90 ; absolute positioning M107 ; start with the fan off G92 E0 ; zero the extruded length G1 F4000 E3 ; extrude 3mm of feed stock G92 E0 ; zero the extruded length again G1 F{speed_travel}
-
Thanks. I'm not a delta user, so I can't really see anything that is obvious to my eyes, but at least we now have all your relevant files posted so someone with a better feel for deltas might spot something off.
-
Contrary to many (most?) other duet (+ smart effector) delta users, I do NOT include G32 in my slicer's start gcode. I've found that, depending on the filament in use, the bit of ooze from the nozzle can impact the calibration negatively.
What I typically do is, whenever I change the filament to something that requires different heating parameters, I heat the bed and plate to what new filament requires, clean the nozzle (cleaning filament, then wire brush the nozzle until there's no oozing whatsoever) and manually run G32 a few times until the deviation values are consistent, and then save that to config-override.g (via M500.)
(I have the re-running of G32 automated via conditional gcode, but it's best to do everything manually until you understand what's going on.)
Then in my slicer config, I use G28 (to just home the printer) before it starts printing.
-
@deltwalrus, please run G29 after auto calibration and shown us the resulting height map.
-
G29 89 points probed, min error -0.240, max error 0.062, mean -0.035, deviation 0.046
-
the picture please
-
Sorry about that.
-
did you use M500 to save the calibration or did you put the values in config.g?
-
I did not run an M500 immediately after running the mesh grid compensation, no. I wasn't aware that was necessary, I figured it stored that information automatically after it ran. Thanks for the tip on that.
I will run another auto-calibration, then another mesh bed compensation routine, then I will run an M500 and try the print again.
As a side note, is there ever an instance where you would not want to store the results of a calibration or mesh bed routine? Shouldn't that be done automatically (in a macro maybe)?
-
No change in behaviour after running calibration, G29, M500, then starting print. Nozzle hits the bed near the "top left" part of the print, starts to actually rotate the glass bed with it, and even managed to dislodge one of the magnetic arms from the ball before the emergency stop halted the motion and reset the board.
-
This post is deleted! -
@deltwalrus said in Nozzle rams into bed when not near center:
I figured it stored that information automatically after it ran.
It does, but only while the printer is powered on. The values are lost after a power cycle unless they are either saved to config-override.g with M500 and adding M501 to the end of config.g to load it. Or manually copying the resulting calibration command into config.g
-
@deltwalrus said in Nozzle rams into bed when not near center:
I did not run an M500 immediately after running the mesh grid compensation, no. I wasn't aware that was necessary, I figured it stored that information automatically after it ran. Thanks for the tip on that.
G32 not G29.
-
I just got the new mirrors today, will test them for thermal suitability then give the problematic print another go.
-
It appears either my old glass plate was warped, or in the process of removing it and installing the mirror I fixed this issue, because a larger print is going right now and the bed ramming seems to be resolved.
Go figure.