• Tags
  • Documentation
  • Order
  • Register
  • Login
Duet3D Logo Duet3D
  • Tags
  • Documentation
  • Order
  • Register
  • Login

Bed compensation not working as expected.

Scheduled Pinned Locked Moved
General Discussion
6
16
934
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • undefined
    CarlosR
    last edited by 23 Sept 2021, 11:40

    Hi all,

    We are trying to perform the bed compensation in our machine.

    After running the Z home routine, we stablish the Z datum = 0, and we lift the nozzle until trigger de endstop. We update the axis limits with the machine position value when it reaches the endstop (the axis range is from 0 to 89 aprox).

    Then we load the heightmap at X0 Y0 (the position where we perform the Z probing on homing).

    The problem is that the bed is higher in other positions.

    If the nozzle isn't in the axis limit, the bed compensation works properly as the nozzle is lifted automatically by the compensation values (keeping the same machine position values).

    But if the nozzle is in the Z axis limit, the Z machine position is still 89 (+ bed comp: 0.5), but the real range is 88.5 so the nozzle touches the bed.

    We don't know if we are understanding the behaviour correctly...

    Our fw version is 3.4.beta2

    undefined 1 Reply Last reply 24 Sept 2021, 07:15 Reply Quote 0
    • undefined
      DonStauffer @CarlosR
      last edited by 24 Sept 2021, 07:15

      @carlosr I think you have to have the bed reasonably level first. I do:

      G28
      G32 ; usually a few times
      G29

      undefined 1 Reply Last reply 24 Sept 2021, 07:50 Reply Quote 0
      • undefined
        Marcossf @DonStauffer
        last edited by 24 Sept 2021, 07:50

        @donstauffer Run G32 just execute bed.g macro, in this case this file it's empty.

        As @CarlosR said, our printer have Z max endstop and a Z probe. When it reach top point endstop after heightmap.csv have been charged, it add some space to the compensation.
        In this moment when z=0, all higher points are below the bed surface, but the M114 show the amount of compensation given for that point.

        undefined 1 Reply Last reply 27 Sept 2021, 07:59 Reply Quote 0
        • undefined
          Marcossf @Marcossf
          last edited by 27 Sept 2021, 07:59

          Someone could give us a hint whats wrong with our setup? We are unable to print if the Z=0 is bellow the bed surface after the heightmap comes into calculation.

          undefined 1 Reply Last reply 27 Sept 2021, 08:15 Reply Quote 0
          • undefined
            PCR @Marcossf
            last edited by 27 Sept 2021, 08:15

            @marcossf please post config.g bed.g and your homeall.g

            undefined 1 Reply Last reply 27 Sept 2021, 15:22 Reply Quote 0
            • undefined
              Marcossf @PCR
              last edited by 27 Sept 2021, 15:22

              @pcr Probably our files are a bit complex because we have a lot of variables and complex relations among config files. It's a gantry XY axis, fixed bed, moved by 1XD v1 boards and absolute closed loop encoder motors on all axis Plus 3Z vertical axis with a tool dock each, toolhead type recognition, z lenght switch...

              Only the mesh level compensation doen't work as expected as said. At this moment we dont use G32 (bed.g), just issue the commands manually to test it.

              • Homeall.g:
              T-1 ; unselect tool
              M584 P5 ; 5 axis visibles
              G91 ; relative positioning
              M574 Z2 S1 P"!43.io0.in"
              M574 U2 S1 P"!44.io0.in"
              M574 V2 S1 P"!45.io0.in"
              G1 H1 Z100 U100 V100 F2000 ; lift ZUV relative to current position
              G1 H1 X-405 Y-255 F2000 ; move quickly to X and Y axis endstops and stop there (first pass)
              G90 ; absolute positioning
              M584 P3 ; 3 axis visibles
              G1 X51 Y0 F2000 ; move to physical X50, Y-61 (logical X0,Y0)
              M400;
              G92 X0 Y0 ; establish current position as X0,Y0
              G30 K0; z probbing
              M208 Z0 S1
              G1 H4 Z100 F1500 ; lift Z relative to max position
              M400;
              set global.noToolMax = {move.axes[2].machinePosition}
              M208 Z{move.axes[2].machinePosition} S0
              M114
              • bed.g:
              M561 ; clear any bed transform
              G29 S0 ; probe the bed and enable compensation
              M400 ; wait for movements to finish
              G28 ; home all
              • Z-probe config.g part:
              ;################################# Z PROBE 0 CONFIG #################################
              M950 S0 C"out4" ; create servo pin 0 for solenoid on Out4
              M558 P8 C"io3.in" H20 R0.5 F1200 T2000 ; set Z probe type and the dive height + speeds
              G31 X0 Y0 Z0 ; set Z probe trigger value, offset and trigger height

              Maybe we don't understand how the "autolevel" works in RRF. We used before Marlin's autolevel in other machines for years, but the behaviour of this probe and map system seems to act different.

              All the compensations of the heightmap.csv are taken in count in all XY coordinates (check with M114) BUT bellow the bed surface once G29 S1 P"heightmap.csv" is loaded. Always it adds 0.70mm of travel to real Z=0 to the compensation given to that point XY.

              Our tool leght switch works as expected for each tool, giving a correct Z=0 before activation of the compensation.

              undefined 1 Reply Last reply 27 Sept 2021, 16:11 Reply Quote 0
              • undefined
                PCR @Marcossf
                last edited by 27 Sept 2021, 16:11

                @marcossf just for refernce If you Machine z Limit in M208 is Z0 it can Not Go any more down. So If your Mesh is negativ it will only Go to Z0 even If the Mesh says EG z -0.8

                undefined 1 Reply Last reply 28 Sept 2021, 08:08 Reply Quote 0
                • undefined
                  Marcossf @PCR
                  last edited by 28 Sept 2021, 08:08

                  @pcr Being Z=0 after applying the mesh correction, the Z=0 limit calculated is below the bed surface. So it adds more travel to Z axis when mesh is loaded.

                  Without mesh correction the probe point and the nozzle point Z=0 is correct. We test precision and repetability of Z probe and Z lenght switch and it is consistent, so could be causing innacuracy but both are correct.

                  Tested with a 3:3 grid, 9:9 grid and 20mm G29 grid gives the same incorrect compensation.

                  We will try to update to latest beta 3 and look for diferences.

                  undefined 1 Reply Last reply 29 Sept 2021, 17:51 Reply Quote 0
                  • undefined
                    Marcossf @Marcossf
                    last edited by 29 Sept 2021, 17:51

                    Hello again,

                    We have been trying to reduce the number of variables involved in mesh bed leveling to try to figure out where the problem we are referring (the level of Z = 0 is below the bed surface once the heightmap.csv is loaded).

                    An interesting test was the test of the probe with G30 from 20mm height in X0 Y0 coordinates and the same test where the probe with G30 S-1 triggers from the same height and the same coordinate.

                    With the G30 we get a reasonably consistent measurement and an average precision of 0.03mm. The problem that we appreciate is if we do the same test with G30 S-1 where it returns the activation height of the probe. What we see is that it increases as we test it.

                    Could this been the reason for the heightmap being done incorrectly? Why this dissimilar behaviour? We would expect the same linearility than G30 being the same probe and same coordinate.

                    7dcda78a-b8dc-4336-bff7-a4d25d70b400-image.png

                    There isn't any difference with RRF 3.4b2+, 3.4b3 or 3.4b4

                    b9fb94e2-9be0-4018-a62b-c997aa54a5d4-image.png

                    The X0 Y0 in the map is Z 0.255 higher from Z=0 and really is -0.50 below bed surface.

                    undefined undefined 2 Replies Last reply 29 Sept 2021, 18:58 Reply Quote 0
                    • undefined
                      petriheino @Marcossf
                      last edited by 29 Sept 2021, 18:58

                      @marcossf
                      Could you try to add G29 S2 before each? Could that work (reset the mesh)?

                      I noticed that if not using G29 S2 in start.g file, then z motor stepcount gets lost when repeating measurement with G30 -> G29. This can be seen by using M114 and comparing the Z stepcount. Maybe observing Z stepcount would be also good to do.

                      Im also trying to solve issues related to G29 and hopefully soon will measure Z axis with encoder.
                      My earlier theread here Mesh Bed Leveling G29 issues.

                      undefined 1 Reply Last reply 30 Sept 2021, 07:53 Reply Quote 1
                      • undefined
                        Marcossf @petriheino
                        last edited by 30 Sept 2021, 07:53

                        @petriheino Yes, we reset the mesh before the G29 S0.

                        Also the multiple probe done was with the mesh .csv file erased. It was trying to reduce the parts involved was when discovered the probe measurements deviation. We assume that when make a new map, it is done repeating G30 commands n-times and there is when we see such deviation it can affect the mesh.

                        Today we'll continue the testing.

                        1 Reply Last reply Reply Quote 0
                        • undefined
                          petriheino
                          last edited by petriheino 10 Jan 2021, 10:13 1 Oct 2021, 10:12

                          Hey developers, is there any documentation that could help to troubleshoot mesh? Ive been trying to read the code and understand how to debug mesh, and looked at the Gcode states. Should we concentrate on some of them, where the readings go wrong?

                          Case 29 (G29)
                          gridProbing states.png

                          Case 30 (G30)

                          probingAtPoint0
                          probingAtPoint1
                          probingAtPoint2a
                          probingAtPoint2b
                          probingAtPoint3
                          probingAtPoint4
                          probingAtPoint4a
                          probingAtPoint5
                          probingAtPoint6
                          probingAtPoint7
                          1 Reply Last reply Reply Quote 1
                          • undefined
                            fcwilt @Marcossf
                            last edited by 1 Oct 2021, 12:58

                            @marcossf said in Bed compensation not working as expected.:

                            The X0 Y0 in the map is Z 0.255 higher from Z=0 and really is -0.50 below bed surface.

                            Hi,

                            Are you aware that if you change the logical Z position (where the firmware "thinks" Z=0 is) before creating the height map the entire height map will appear to move up or down depending on the change?

                            For example, the command sequences G91 G1 Z0.1 G29 Z0 G90 or G91 G1 Z-0.1 G29 Z0 G90 will shift the logical Z=0 position and a new height map will reflect that shift.

                            Typically you want the logical Z=0 position to match the physical Z=0 position, so that when you do the command sequence G90 G1 Z0 the nozzle ends up just touching the bed.

                            Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                            undefined 1 Reply Last reply 1 Oct 2021, 15:58 Reply Quote 0
                            • undefined
                              Marcossf @fcwilt
                              last edited by 1 Oct 2021, 15:58

                              @fcwilt Interesting. We will check if that situation could been happening with the variables involved in obtain the Z min limit.

                              Also we changed the surface for other one that we know it has high and low areas to get more info about this behaviour.

                              55c58809-0466-43ef-bd82-7480a9ac30db-image.png

                              undefined 1 Reply Last reply 1 Oct 2021, 18:13 Reply Quote 1
                              • undefined
                                fcwilt @Marcossf
                                last edited by 1 Oct 2021, 18:13

                                @marcossf

                                To get the best results from your height map you must pick a XY reference point for setting the logical Z=0 position and you must always use that same point when creating and loading the height map.

                                This process is called setting the Z=0 Datum in the Duet documentation.

                                Some folks use the XY co-ordinates of one of the grid points used when probing the bed to create the height map.

                                Others, like me, use the center of the bed.

                                In either case it should result in a height map in the correct Z relationship with the bed.

                                Frederick

                                Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

                                undefined 1 Reply Last reply 4 Oct 2021, 11:53 Reply Quote 0
                                • undefined
                                  Marcossf @fcwilt
                                  last edited by 4 Oct 2021, 11:53

                                  @fcwilt Yes, it's the way we do it. Our HRP when we homing is the bed center (X0 Y0).

                                  1 Reply Last reply Reply Quote 0
                                  6 out of 16
                                  • First post
                                    6/16
                                    Last post
                                  Unless otherwise noted, all forum content is licensed under CC-BY-SA