Delta printer first layer calibration
-
@fjpanag said in Delta printer first layer calibration:
I nevertheless had to perform a mesh bed compensation, and then I remember being stunned by a perfect first layer!
So, I never spent any more time or thought on this.what firmware version were you on then, and which version are you running now?
-
@T3P3Tony said in Delta printer first layer calibration:
@fjpanag said in Delta printer first layer calibration:
I nevertheless had to perform a mesh bed compensation, and then I remember being stunned by a perfect first layer!
So, I never spent any more time or thought on this.what firmware version were you on then, and which version are you running now?
Sorry, I neglected to mention this information.
When I built the machine, I was using RRF v2.03 initially.
I then upgraded through all versions, as they where being released, up to RRF v2.05.1.I have the tendency to believe that the problems started after an update towards v2.04 or v2.05, but I am not sure. Initially I thought that it was a calibration issue, and didn't pay much attention. So, maybe it was a coincidence as well.
Quite recently I migrated to RRF3, in the hope that my problem will be solved.
I started with RRF v3.0, and worked my way towards the latest v3.4.5, testing all releases in between.
The problem remains identical in all RRF3 versions.(I will also post my config files soon)
-
@Phaedrux said in Delta printer first layer calibration:
Please share some specific information such as The results of M122 and M98 P"config.g". Share your config.g, homedelta.g and bed.g. Your slicer start gcode as well.
Here is the requested information.
M122:
=== Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.5 (2022-11-30 19:36:12) running on Duet WiFi 1.02 or later Board ID: 08DJM-9178L-L4MSJ-6J9F6-3S46N-9T3QP Used output buffers: 2 of 26 (26 max) === RTOS === Static ram: 23836 Dynamic ram: 75512 of which 0 recycled Never used RAM 11868, free system stack 92 words Tasks: NETWORK(ready,288.3%,211) HEAT(notifyWait,4.1%,308) Move(notifyWait,161.5%,282) MAIN(running,181.9%,155) IDLE(ready,8.1%,30), total 643.9% Owned mutexes: WiFi(NETWORK) === Platform === Last reset 21:52:04 ago, cause: software Last software reset at 2023-03-22 22:00, reason: User, GCodes spinning, available RAM 12516, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x04 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 30.5, current 32.3, max 40.5 Supply voltage: min 23.9, current 24.3, max 24.6, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0 Driver 1: standstill, SG min 0 Driver 2: standstill, SG min 0 Driver 3: standstill, SG min 0 Driver 4: standstill, SG min n/a Driver 5: Driver 6: Driver 7: Driver 8: Driver 9: Driver 10: Driver 11: Date/time: 2023-03-23 19:52:55 Cache data hit count 4294967295 Slowest loop: 148.02ms; fastest: 0.16ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 14.2ms, write time 142.7ms, max retries 0 === Move === DMs created 83, segments created 36, maxWait 575518ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 540526, completed 540526, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters 0 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.1 === GCodes === Segments left: 0 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 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty === Filament sensors === Extruder 0 sensor: ok Extruder 1 sensor: no data received === Network === Slowest loop: 144.21ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(2) HTTP sessions: 1 of 8 = WiFi = Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.27 WiFi MAC address 84:0d:8e:b2:f3:7f WiFi Vcc 3.46, reset reason Turned on by main processor WiFi flash size 4194304, free heap 21168 WiFi IP address 192.168.1.100 WiFi signal strength -72dBm, mode 802.11n, reconnections 3, sleep mode modem Clock register 00002002 Socket states: 2 4 0 0 0 0 0 0
M98 P"config.g"
HTTP is enabled on port 80 FTP is enabled on port 21 TELNET is enabled on port 23 Warning: Heater 1 predicted maximum temperature at full power is 566°C Warning: Heater 2 predicted maximum temperature at full power is 455°C Warning: Heater 0 predicted maximum temperature at full power is 379°C Warning: Heater 0 predicted maximum temperature at full power is 309°C Warning: Heater 1 predicted maximum temperature at full power is 450°C ok
Slicer start code:
G21 ; use millimetres G28 ; home all axes T[initial_extruder] P0 ; select the first tool (without running the tool-change script) M568 S160 R160 ; start pre-heating the printhead G32 ; delta auto-calibration G29 S1 ; load the mesh grid compensation heightmap G90 ; absolute positioning M83 ; extruder relative mode G92 E0 ; reset extruder position G1 X0 Y130 Z0.20 F6000 ; go to the starting position M568 S[first_layer_temperature] ; set printhead temperature M116 ; wait all temperatures to be reached
-
Also, here is my heightmap:
-
Can you post your config-override.g file?
-
@fjpanag so from what you posted mesh compensation is in use, you have a heightmap. Can you also post an annotated image showing the offsets of the extruders and probe, and how that relates to the bed.
Something else to check is with the heightmap enabled and T0 selected move to 3 or 4 points that are also probe points and then jog up or down to check what the offset at those points should be using a feeler gauge.
-
@Phaedrux said in Delta printer first layer calibration:
Can you post your config-override.g file?
Sure, here it is.
@T3P3Tony said in Delta printer first layer calibration:
Can you also post an annotated image showing the offsets of the extruders and probe, and how that relates to the bed.
Can you please explain this? You want a photo of the extruders?
Something else to check is with the heightmap enabled and T0 selected move to 3 or 4 points that are also probe points and then jog up or down to check what the offset at those points should be using a feeler gauge.
I did the following experiments:
- Enable bed, set it to working temperature, wait for heat to spread
- Select T0
- Home the printer (
G28
) - Execute delta calibration (
G32
) - Get hotend on X0 Y0 Z0 and check nozzle-bed distance with feeler. It's perfect.
- Move the head to other points defined in
bed.g
and check nozzle-bed distance again.
The distance is not correct. Some points are higher, some lower.
- Enable bed, and wait
- Select T0
- Home the printer(
G28
) - Execute delta calibration (
G32
) - Run mesh compensation (
G29
) - Apply the heightmap (
G29 S1
) - Get hotend on X0 Y0 Z0 and check nozzle-bed distance with feeler. It's higher than before.
- Move the head to other points defined in
bed.g
and check nozzle-bed distance again.
Again, the distance in other points is not correct.
But, the results are different than before (without applying the heightmap). That is, some points that were higher than normal before are now lower, and vice-versa.
-
I think you may have effector tilt which is causing the probe to have trigger heights that vary with XY position. This is a common side effect of using a probe that has an XY offset from the nozzle, and why using the nozzle tip as the probe is recommended on a delta.
Have a look through these search results: https://forum.duet3d.com/search?term=effector tilt&in=titles
-
@Phaedrux said in Delta printer first layer calibration:
I think you may have effector tilt which is causing the probe to have trigger heights that vary with XY position. This is a common side effect of using a probe that has an XY offset from the nozzle, and why using the nozzle tip as the probe is recommended on a delta.
Have a look through these search results: https://forum.duet3d.com/search?term=effector tilt&in=titles
I was thinking the same thing.
No tilt can be observed, but nevertheless it may be there.
However, in a
bed.g
file, theG30
commands can take theH
parameter.
Supposedly, this is to compensate for this:The H parameter is an optional height correction for that probe point. It allows for the Z probe having a trigger height that varies with XY position. The nominal trigger height of the Z probe (e.g. at bed centre) is declared in the Z parameter of the G31 command in the config.g file. When you probe using G30 and the probe triggers, the firmware will assume that the nozzle is at the nominal trigger height plus the value you have in the H parameter. For example, when doing delta calibration, it can account for the change in trigger height caused by effector tilt, if the vertical offset caused by the tilt has been measured
This option does not work. It miss-behaves badly as noted in my original post.
Either I understand something wrongly, or there is a bug in this functionality, or the problem is different (and thus this parameter cannot help me).
What is the proper procedure to calibrate this
H
parameter? -
@fjpanag the reason I asked for the annotated image of the print head + probe is to see what the offsets where, in relation to the bed etc
-
@T3P3Tony said in Delta printer first layer calibration:
@fjpanag the reason I asked for the annotated image of the print head + probe is to see what the offsets where, in relation to the bed etc
I hope I understood correctly and that the following are helpful.
This is the front view of the effector (one nozzle is missing at the moment).
The nozzles are at the left and right of the effector's center. In the Y coordinate they are in line with the center (no Y offset).
The actual, calibrated offsets for the nozzles are:
T0: X -9 Y 0
T1: X 8.83 Y -0.05
This is the back view of the effector.
BLTouch is located behind the nozzles (behind = more positive Y).
It is in the center of the effector in the X coordinate.Its actual calibrated offsets are: X -1.1 Y 26.9
This is a bottom view of the effector.
All three parts and their relative position can be seen.The gray line runs across the X axis, and passes through the effector center and the two nozzles.
The probe is located behind this line by 26.9mm, at its center.I don't understand how to provide a picture showing "the relation to the bed".
If you need any more information, please let me know and I will try my best. -
@fjpanag said in Delta printer first layer calibration:
I don't understand how to provide a picture showing "the relation to the bed".
I think i can work it out from the pictures. The point about "relation to the bed" was (for example you have the BL touch 27mm away from the X0 position, but i wanted to confirm if it was +27 or -27. They do look right to me.
@fjpanag said in Delta printer first layer calibration:
The thing is that when you adjust on point, the exactly opposite (in the circle) is thrown completely out of calibration!
Re-adjusting the opposite point, then sends the first point to a completely wrong Z.This is what I wanted to try and understand, i had a suspicion that something could be flipped/inverted.
As an experiment can you setup a simplified bed mesh that its a central point and then a small number of points around that (say 6). Then, after normal delta calibration, but without bed mesh enabled probe each point and then measure the nozzle offset. (this will also allow you to confirm that the point the probe touches when probing, and the nozzle is when you measure the offset ate exactly the same point on the bed). Once that is done, use G29 to mesh the same points and upload both you menaul measurements and the mesh here.
-
@T3P3Tony said in Delta printer first layer calibration:
@fjpanag said in Delta printer first layer calibration:
I don't understand how to provide a picture showing "the relation to the bed".
I think i can work it out from the pictures. The point about "relation to the bed" was (for example you have the BL touch 27mm away from the X0 position, but i wanted to confirm if it was +27 or -27. They do look right to me.
Ah.. I understand now. Indeed I invested a great deal of time on ensuring that all offsets have a correct sign. In fact, in most cases I indeed tried to reverse it, just to confirm that the results will then be "horribly wrong".
In fact if I reverse the Y offset of the probe, probing is no longer possible. One extremity of the Y axis is probed outside of the bed, IIRC.
@fjpanag said in Delta printer first layer calibration:
The thing is that when you adjust on point, the exactly opposite (in the circle) is thrown completely out of calibration!
Re-adjusting the opposite point, then sends the first point to a completely wrong Z.This is what I wanted to try and understand, i had a suspicion that something could be flipped/inverted.
As an experiment can you setup a simplified bed mesh that its a central point and then a small number of points around that (say 6). Then, after normal delta calibration, but without bed mesh enabled probe each point and then measure the nozzle offset. (this will also allow you to confirm that the point the probe touches when probing, and the nozzle is when you measure the offset ate exactly the same point on the bed). Once that is done, use G29 to mesh the same points and upload both you menaul measurements and the mesh here.
This sounds interesting, but it will take me some time.
I will report back soon! -
I am sorry for the delay, it took me some time to set up the test.
@T3P3Tony I did as instructed:
- Printer reboot,
G28
to home. - Delta calibration (
G32
). - I selected T0.
- I checked the nozzle offset for 9 points, no compensation active.
- I run mesh compensation for the same 9 points.
I did the procedure twice, both times the results were very similar, I don't see any repeatability issues.
Attached you may find the
heightmap.csv
as recorded duringG29
.Also the file
manual.csv
, contains the offsets as they should have been according to my manual measurements.
(I paid extra attention to the sign, I think I got it correct) - Printer reboot,