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

    G29 / 3 point bed compensation - always tilted slightly

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    6
    26
    1.5k
    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.
    • Martin1454undefined
      Martin1454
      last edited by

      So my issue is that I have a COREXY printer with 3 independent leadscrews, a bed with PEI sheet on it, and a BL touch probe. Whenever Im homing the printer, 1 corner is always a bit lower than the rest - The corner towards home XY (0,0) is alway low, and maximum XY (320,290) always sits high.

      If I run it more than once, it gets better, but since its alway off on first try around the same, I would suspect it be possible to fix it with better settings - But I cannot figure out the math in what seting is wrong.
      Here you can see the probe tests:
      c25e81cc-3934-47a9-b393-f5e3168c68ca-image.png

      And the bed results after 1 homing:
      f6715d27-64ea-4cfb-a19e-37e007eaa0cc-image.png

      Then 2 homing:
      b675e3e9-3957-4302-9693-5955f29dc175-image.png

      And then 3 homing:
      a312bbde-a412-4ae5-84d0-73e670450cbf-image.png

      As seen, the lower left corner is a bit low.

      The most relevant of the settings gcode is here:

      ; Z-Probe
      
      M558 P9 C"^io7.in" H5 F300 T6000             ; set Z probe type to bltouch and the dive height + speeds
      M950 S0 C"io7.out"                           ; create servo pin 7 for BLTouch
      G31 P500 X30 Y70 Z1.48                          ; set Z probe trigger value, offset and trigger height
      M557 X40:300 Y80:195 S30                     ; define mesh grid
      
      ; Define the X and Y coordinates of the leadscrews.
      ; Must come after M584 (Set drive mapping), M667 (Select CoreXY Mode) and M669 (Choosing Kinematics type)
      ; Motor order: Front left (1), front Right (2), rear right (3).
      ; Snn Maximum correction in mm to apply to each leadscrew (optional, default 1.0)
      M671 X-55:360:360.0 Y170:40:310 S20 P2
      

      The bed is shaped like this, where the red is the leadscrews:
      c3bb133f-182b-4762-94d4-e9d94c7528a4-image.png
      The coordinates from the screws have been measured by homing the printer, then moving the nozzle as close to the leadscrew, and measure the offset with a ruler.

      My guess is one of the coordinates is offset, but I cannot figure out which one 😞

      1 Reply Last reply Reply Quote 0
      • Vetiundefined
        Veti
        last edited by

        @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

        F300

        With a bltouch, you need to probe slower F120 is a better value.

        post you bed.g and your homeall.g

        if you have 3 leadscrews why are you probing 5 points?

        Martin1454undefined 1 Reply Last reply Reply Quote 1
        • Martin1454undefined
          Martin1454 @Veti
          last edited by Martin1454

          @Veti said in G29 / 3 point bed compensation - always tilted slightly:

          @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

          F300

          With a bltouch, you need to probe slower F120 is a better value.

          post you bed.g and your homeall.g

          if you have 3 leadscrews why are you probing 5 points?

          Aha, will lower that then.

          I probe 5 points as I got a bit better results with that, even though I know only 3 points is needed to define a plane.
          But if it only needs 3 points with the right setting, it would be perfect!

          here is the 2 files:

          ; bed.g
          ; called to perform automatic bed compensation via G32
          M561; Clear bed height map 
          ; Probe the bed at 5 points
          G30 P0 X30 Y80 Z-9999;
          G30 P1 X30 Y260 Z-9999; 
          G30 P2 X280 Y260 Z-9999; 
          G30 P3 X280 Y80 Z-9999;
          G30 P4 X135 Y160 Z-9999 S3;
          
          ; homeall.g
          ; called to home the X axis
          ;
          ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 12 2020 17:14:31 GMT+0200 (Centraleuropæisk sommertid)
          G91               ; relative positioning
          M400 			  ;
          M913 X40 Y40 	  ; Drop current to 70%
          G1 H2 Z5 F500    ; lift Z relative to current position
          G1 H1 X-325 F6000 ; move quickly to X axis endstop and stop there (first pass)
          G1 X5 F6000       ; go back a few mm
          G1 H1 X-325 F1000  ; move slowly to X axis endstop once more (second pass)
          G90               ; absolute positioning
          M913 X100 Y100	  ; return current to 100%
          ; homey.g
          ; called to home the Y axis
          ;
          ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 12 2020 17:14:31 GMT+0200 (Centraleuropæisk sommertid)
          G91               ; relative positioning
          M400 			  ;
          M913 X40 Y40 	  ; Drop current to 70%
          G1 H1 Y-325 F6000 ; move quickly to X axis endstop and stop there (first pass)
          G1 X5 F6000       ; go back a few mm
          G1 H1 Y-325 F1000  ; move slowly to X axis endstop once more (second pass)
          G90               ; absolute positioning
          M913 X100 Y100	  ; return current to 100%
          
          
          ; homez.g
          ; called to home the Z axis
          ;
          ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 12 2020 17:14:31 GMT+0200 (Centraleuropæisk sommertid)
          
          ; Z-axis
          G91               		 ; relative positioning 
          M561                     ; Clear any bed transform
          G1 X30 Y80  F6000	     ;
          G30						 ;
          G32                      ; Start 3-point probe sequence - Bed.g
          
          
          

          EDIT: here is first probe with F100:
          b36f88d3-1d8d-4aa7-ae77-c5121a9692d4-image.png

          Vetiundefined Phaedruxundefined 2 Replies Last reply Reply Quote 0
          • Vetiundefined
            Veti @Martin1454
            last edited by

            @Martin1454

            i would advise not to have the G32 in the homez, as the G32 invalidates z=0.

            while analysing change the 3 point with points close to the leadscrews.

            Martin1454undefined 1 Reply Last reply Reply Quote 0
            • Martin1454undefined
              Martin1454 @Veti
              last edited by

              @Veti said in G29 / 3 point bed compensation - always tilted slightly:

              @Martin1454

              i would advise not to have the G32 in the homez, as the G32 invalidates z=0.

              while analysing change the 3 point with points close to the leadscrews.

              Where would you place G32 then?

              Vetiundefined 1 Reply Last reply Reply Quote 0
              • Vetiundefined
                Veti @Martin1454
                last edited by

                @Martin1454

                in the start g code.

                G28
                G32
                G28 Z

                Martin1454undefined 1 Reply Last reply Reply Quote 0
                • Martin1454undefined
                  Martin1454 @Veti
                  last edited by

                  @Veti said in G29 / 3 point bed compensation - always tilted slightly:

                  @Martin1454

                  in the start g code.

                  G28
                  G32
                  G28 Z

                  So I tried that, but that gives me a fun offset.
                  a5cdee08-073b-4431-9cfc-bd15e4db6be5-image.png

                  I removed G32 from Homeall and Homez - Then homed all axis from the DWC, and then sent manually G32 and then G28 Z. Then I probed the bed with G29
                  0b92ed4a-12f4-4caf-9099-d485c5109d83-image.png

                  1 Reply Last reply Reply Quote 0
                  • Vetiundefined
                    Veti
                    last edited by

                    post your new homez

                    Martin1454undefined 1 Reply Last reply Reply Quote 0
                    • Martin1454undefined
                      Martin1454 @Veti
                      last edited by

                      @Veti

                      ; homez.g
                      ; called to home the Z axis
                      ;
                      ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 12 2020 17:14:31 GMT+0200 (Centraleuropæisk sommertid)
                      
                      ; Z-axis
                      G91               		 ; relative positioning 
                      M561                     ; Clear any bed transform
                      G1 X160 Y170 F6000	     ;
                      G30						 ;
                      
                      1 Reply Last reply Reply Quote 0
                      • Vetiundefined
                        Veti
                        last edited by

                        post your config.g maybe you set your Dive height wrong

                        Martin1454undefined 1 Reply Last reply Reply Quote 0
                        • Martin1454undefined
                          Martin1454 @Veti
                          last edited by

                          @Veti
                          This is the complete config.g

                          ; Configuration file for Duet 3 (firmware version 3)
                          ; executed by the firmware on start-up
                          ;
                          ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 12 2020 17:14:31 GMT+0200 (Centraleuropæisk sommertid)
                          
                          ; General preferences
                          G90                                          ; send absolute coordinates...
                          M83                                          ; ...but relative extruder moves
                          M550 P"Duet 3"                               ; set printer name
                          M669 K1                                      ; select CoreXY mode
                          
                          ; Drives
                          M569 P0.1 S1                                 ; physical drive 0.1 goes forwards
                          M569 P0.2 S1                                 ; physical drive 0.2 goes forwards
                          M569 P0.3 S0                                 ; physical drive 0.3 goes forwards
                          M569 P0.4 S0                                 ; physical drive 0.4 goes forwards
                          M569 P0.5 S0                                 ; physical drive 0.5 goes forwards
                          M569 P0.0 S0                                 ; physical drive 0.0 goes forwards
                          M584 X0.2 Y0.1 Z0.4:0.3:0.5 E0.0             ; set drive mapping
                          M350 X16 Y16 Z16 E16 I1                      ; configure microstepping with interpolation
                          M92 X200 Y200 Z800.00 E415.00           	 ; set steps per mm
                          M566 X1500.00 Y1500.00 Z12.00 E120.00        ; set maximum instantaneous speed changes (mm/min)
                          M203 X8400.00 Y8400.00 Z4000.00 E1200.00      ; set maximum speeds (mm/min)
                          M201 X800.00 Y500.00 Z200.00 E250.00          ; set accelerations (mm/s^2)
                          M906 X1200 Y1200 Z800 E800 I40                 ; set motor currents (mA) and motor idle factor in per cent
                          M84 S30                                      ; Set idle timeout
                          
                          ; Axis Limits
                          M208 X0 Y0 Z0 S1                             ; set axis minima
                          M208 X300 Y250 Z480 S0                       ; set axis maxima
                          
                          ; Endstops
                          
                          M574 X1 S3                                                          ; Set endstops controlled by motor load detection
                          M574 Y1 S3                                                          ; Set endstops controlled by motor load detection
                          M574 Z0 															; Set endstop Z to be probe
                          M915 X Y H200 S1 R0 F0						 						; set X and Y to sensitivity , do nothing when stall, unfiltered
                          
                          ; Z-Probe
                          
                          M558 P9 C"^io7.in" H5 F100 T6000             ; set Z probe type to bltouch and the dive height + speeds
                          M950 S0 C"io7.out"                           ; create servo pin 7 for BLTouch
                          G31 P500 X30 Y70 Z1.48                          ; set Z probe trigger value, offset and trigger height
                          M557 X40:300 Y80:195 S30                     ; define mesh grid
                          
                          ; Define the X and Y coordinates of the leadscrews.
                          ; Must come after M584 (Set drive mapping), M667 (Select CoreXY Mode) and M669 (Choosing Kinematics type)
                          ; Motor order: Front right (1), front left (2), rear center (3).
                          ; Snn Maximum correction in mm to apply to each leadscrew (optional, default 1.0)
                          M671 X-55:360:360.0 Y170:40:310 S20 P2
                          
                          ; Heaters
                          M308 S0 P"temp2" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
                          M950 H0 C"out0" T0                           ; create bed heater output on out0 and map it to sensor 0
                          M140 H0                                      ; map heated bed to heater 0
                          M143 H0 S120                                 ; set temperature limit for heater 0 to 120C
                          
                          M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp2
                          M950 H1 C"out1" T1                           ; create nozzle heater output on out1 and map it to sensor 1
                          
                          
                          ; Fans
                          M950 F1 C"out7" Q500 L127 C"Heat sink"             ; create fan 1 on pin out7 and set its frequency
                          M106 P1 H1 T45                             ; set fan 1 value. Thermostatic control is turned on
                          
                          M950 F0 C"out4" Q500                         ; create fan 0 on pin out4 and set its frequency
                          M106 P0 H-1 C"Part cooler"            ; set fan 0 value. Thermostatic control is turned off
                          
                          ; Tools
                          M563 P0 D0 H1 F0                             ; define tool 0
                          G10 P0 X0 Y0 Z0                              ; set tool 0 axis offsets
                          G10 P0 R0 S0                                 ; set initial tool 0 active and standby temperatures to 0C
                          
                          ; Custom settings are not defined
                          
                          ; Miscellaneous
                          T0                                           ; select first tool
                          
                          M501;											Read config override
                          
                          1 Reply Last reply Reply Quote 0
                          • Vetiundefined
                            Veti
                            last edited by

                            @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

                            M574 Z0 ; Set endstop Z to be probe

                            thats not the command for Set endstop Z to be probe
                            this is
                            M574 Z1 S2 ; configure Z-probe endstop for low end on Z

                            M308 S0 P"temp2" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
                            M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp2

                            Your thermistor is configured incorrectly. Find the correct Beta value in your thermistor documentation.

                            M906 X1200 Y1200 Z800 E800 I40 ; set motor currents (mA) and motor idle factor in per cent

                            are these correct? what stepper motors do you have?

                            Martin1454undefined 1 Reply Last reply Reply Quote 0
                            • Martin1454undefined
                              Martin1454 @Veti
                              last edited by Martin1454

                              @Veti said in G29 / 3 point bed compensation - always tilted slightly:

                              @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

                              M574 Z0 ; Set endstop Z to be probe

                              thats not the command for Set endstop Z to be probe
                              this is
                              M574 Z1 S2 ; configure Z-probe endstop for low end on Z

                              M308 S0 P"temp2" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
                              M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp2

                              Your thermistor is configured incorrectly. Find the correct Beta value in your thermistor documentation.

                              M906 X1200 Y1200 Z800 E800 I40 ; set motor currents (mA) and motor idle factor in per cent

                              are these correct? what stepper motors do you have?

                              The motors are all E3D high torque motors rated at 1.6A, except the extruder which is a small pancake stepper - current seems okay on it - Will look into the thermistors and change it from M574 Z0 to Z1 S2

                              EDIT: I got the Z0 from the Gcode page
                              "The S2 option of M574 is intended for use only when axes other than Z are using the Z probe for homing. The only printers known that do this using Duet electronics are the RepRapPro Ormerod, Huxley Duo, and Mendel Tricolour machines. When using the Z probe to home Z, M574 Z0 should be used."

                              1 Reply Last reply Reply Quote 0
                              • Vetiundefined
                                Veti
                                last edited by

                                so you are running your z steppers with not enought current

                                set the current to 1200

                                Martin1454undefined 1 Reply Last reply Reply Quote 0
                                • Martin1454undefined
                                  Martin1454 @Veti
                                  last edited by

                                  @Veti
                                  Increased the current to 1200 - still gets the large offset
                                  29f9ea73-b4b9-4f75-8ffb-fd8a10257be3-image.png

                                  1 Reply Last reply Reply Quote 0
                                  • Vetiundefined
                                    Veti
                                    last edited by

                                    that make zero sense.

                                    G28 Z should establish Z=0 using G30.

                                    G29 getting a different offset would mean that the trigger point is different.

                                    1 Reply Last reply Reply Quote 0
                                    • Phaedruxundefined
                                      Phaedrux Moderator @Martin1454
                                      last edited by

                                      @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

                                      G1 X30 Y80 F6000 ; G30 ;

                                      @Martin1454 said in G29 / 3 point bed compensation - always tilted slightly:

                                      G1 X160 Y170 F6000 ; G30

                                      Your homeall and homez place the probe at different locations. Make them the same.

                                      Z-Bot CoreXY Build | Thingiverse Profile

                                      Martin1454undefined Phaedruxundefined 2 Replies Last reply Reply Quote 0
                                      • Martin1454undefined
                                        Martin1454 @Phaedrux
                                        last edited by

                                        @Phaedrux Hmm....

                                        That got me thinking - I Use the X30 Y80 because that places the probe not that far from my first lead screw and that saves time since it doesnt have to move when it starts the 3 point leveling - But! since it is not level when it does the first zeroring of Z, will placeing it off center, make the axis it rotates about not centered also? Or since its a plane, it doesnt matter?

                                        But I'll change it when I get home

                                        1 Reply Last reply Reply Quote 0
                                        • sinned6915undefined
                                          sinned6915
                                          last edited by

                                          Are you certain that you dont have a dropped corner on one of your axis?

                                          Martin1454undefined 1 Reply Last reply Reply Quote 0
                                          • A Former User?
                                            A Former User
                                            last edited by A Former User

                                            You also need to remember there is a huge difference between a surface being level and it being flat...

                                            if it ispossible to use a digital inclinometer you can check the level, first zero the inclinometer to the surface the printer sits on (firstly on the X axis) then carry out 3 point leveling and check how level it is, then zero the inclinometer on the surface on the Y axis orientation and carry out the same 3 point leveling and see what it says. and you will have your answer, which i think might be that your bed it level but not completely flat.

                                            you can also check that your rails are level too.

                                            Martin1454undefined 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA