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

    Dual motor bed tilt-compensation only goes through the motions

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    3
    14
    446
    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.
    • equanimity8undefined
      equanimity8
      last edited by

      Hi guys!

      I'm working on a CoreXY that uses piezo to home and bed level and two motors for bed tilt-compensation on RRF 2.05.1.

      The issue I face is that G32 goes through the motions but doesn't actually move the motor to compensate for misalignment. I can also verify that both visually and by looking at the height map that is produced after mesh bed compensation. The console output after G32 is :

      G32
      Leadscrew adjustments made: 0.050 -0.262, points used 2, deviation before 0.189 after 0.000
      

      My homeall.g is

      ;Home X and Y
      G91                     	; relative positioning
      G1 Z5 F420 H2        		; Lower bed 5mm to ensure it is below the switch trigger height
      M400
      M913 X50 Y50	 		; set X Y motors to 50% of their normal current for homing
      G1 H1 X-375 Y-305 F600   	; course home X or Y
      G1 H1 X-375 F600              	; course home X
      G1 H1 Y-305 F600              	; course home Y
      G1 X5 Y5 F600             	; move away from the endstops
      G1 H1 X-10 F200           	; fine home X
      G1 H1 Y-10 F200               	; fine home Y
      G1 X5 Y5 F600  			; go to origin
      M400
      M913 X100 Y100	 		; set X Y motors to 100% of their normal current
       
      ;Home Z
      G90              ; absolute positioning
      G1 X100 Y50 F600  ; go to first probe point
      G30              ; home Z by probing the bed
      G91              ; relative positioning
      G1 Z5 F420       ; lift Z relative to current position
      G90              ; absolute positioning
       
      ;Load height map
      G29 S1
      

      My bed.g is

      M561 ; clear any bed transform
      
      G28 ; home
      G30 P0 X105 Y0 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X105 Y150 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      

      My config.g is

      ; General preferences
      G90                                     ; send absolute coordinates...
      M83                                     ; ...but relative extruder moves
      M550 P"Printer Extrusions"              ; set printer name
      M669 K1                                 ; select CoreXY mode
      
      ; Network
      M552 S1                                 ; enable network
      M586 P0 S1                              ; enable HTTP
      M586 P1 S0                              ; disable FTP
      M586 P2 S0                              ; disable Telnet
      
      ; Drives
      M569 P0 S1                              ; physical drive 0 goes forwards
      M569 P1 S1                              ; physical drive 1 goes forwards
      M569 P2 S0                              ; physical drive 2 goes backwards
      M569 P3 S1                              ; physical drive 3 goes forwards
      M569 P4 S0                              ; physical drive 4 goes backwards
      
      M584 X0 Y1 Z2:4 E3                      ; set drive mapping
      M671 X105:105 Y0:150 S5 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
      
      M350 X16 Y16 Z16 E16 I1                 ; configure microstepping with interpolation
      M92 X80.00 Y80.00 Z80 E456.00  		    ; set steps per mm
      M566 X900.00 Y900.00 Z1.00 E120.00     ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z1800.00 E1200.00 ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z250.00 E250.00     ; set accelerations (mm/s^2)
      M906 X1200 Y1200 Z1100 E1100 I30            ; 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 X210 Y150 Z150 S0                  ; set axis maxima
      
      ; Endstops
      M574 X1 Y1 Z0 S0
      
      ; Z-Probe
      M558 P8 H10 I1 R1 F600 X0 Y0 Z1
      G31 X0 Y0 Z-0.25 P600
      
      ; Heaters
      M140 H-1                                ; disable heated bed
      M305 P1 T100000 B4138 R4700             ; set thermistor + ADC parameters for heater 1
      M143 H1 S280                            ; set temperature limit for heater 1 to 250C
      
      ; Fans
      M106 P0 S0 I0 F500 H-1                  ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
      M106 P1 S1 I0 F500 H1 T50               ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
      
      ; 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
      

      Best!

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

        @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

        M671 X105:105 Y0:150 S5 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
        M208 X0 Y0 Z0 S1 ; set axis minima
        M208 X210 Y150 Z150 S0 ; set axis maxima

        this would mean that the leadscrews are inside the bed. that seems incorrect

        G31 X0 Y0 Z-0.25 P600

        what kind of probe is it?

        M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1

        your thermistor config is wrong. look up the correct beta value in your thermistor documentation.

        also check that you are on at least firmware 2.05.1

        gloomyandyundefined 1 Reply Last reply Reply Quote 0
        • equanimity8undefined
          equanimity8
          last edited by

          @Veti I have redacted my config.g to M671 X105:105 Y-20:170 S5 and it made no difference.

          The probe is a precision piezo.

          What makes you think my thermistor value is wrong? I printed a successful calibration cube and all readings seemed accurate. This is a freshly configured firmware, should it make a difference, but my previous setup was identical in that regard.

          I am indeed running 2.05.1.

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

            @Veti said in Dual motor bed tilt-compensation only goes through the motions:

            this would mean that the leadscrews are inside the bed. that seems incorrect

            I think this depends on how the bed is supported. My understanding is that what you need to specify is the locations at which the bed pivots. In the case of a conventional prusa style bed with two lead screws either side of a bed with a subframe this will be at the leadscrew positions. But with a corexy you often have a rigid plate style bed that pivots at the support points, in which case you want to use the positions of the support points. At least I think that is how it works!

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

              @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

              What makes you think my thermistor value is wrong? I printed a successful calibration cube and all readings seemed accurate.

              because 4138 is the default, and for a thermistor that has not been in use for some time.
              the dimension have nothing to do with this.

              depending on your thermistor, the actual temperature can easily be off by 20 degrees.

              M584 X0 Y1 Z2:4 E3

              is your second z really connected on the e1 and not the second z?

              1 Reply Last reply Reply Quote 0
              • equanimity8undefined
                equanimity8
                last edited by

                @Veti
                Thanks for clarifying. I looked up E3D's v6 documentation and they indeed specify a different value (M305 P1 B4725 C7.060000e-8).

                Yes, my second motor is connected to driver e1, no independent motor tilt-compensation would be possible otherwise.

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

                  @equanimity8
                  M561 ; clear any bed transform
                  G28 ; home

                  your home load the height map again.

                  remove the G29 S1 from the homeall and move that to the start of your slicer

                  1 Reply Last reply Reply Quote 1
                  • equanimity8undefined
                    equanimity8
                    last edited by

                    @Veti
                    I commented out G29 S1 and there was no change in behaviour i.e. my bed compensation mesh still shows significant tilt that should have been corrected by G32.

                    Further, why would G28 load my height map again? To the best of my knowledge, it homes all axes, it doesn't execute homeall.g.

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

                      @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

                      Further, why would G28 load my height map again? To the best of my knowledge, it homes all axes, it doesn't execute homeall.g.

                      that is not true. and you can easily test this by executing G28 twice from the console.

                      can you run 3 G32 in succession and post the output?

                      btw where is your M557 definition for the mesh?

                      1 Reply Last reply Reply Quote 0
                      • equanimity8undefined
                        equanimity8
                        last edited by

                        The console output of 3 consequitive G32s:

                        11/1/2020, 12:09:59 PM	G32
                        Leadscrew adjustments made: 0.019 -0.044, points used 2, deviation before 0.028 after 0.000
                        11/1/2020, 12:09:43 PM	G32
                        Leadscrew adjustments made: 0.007 -0.057, points used 2, deviation before 0.035 after 0.000
                        11/1/2020, 12:09:32 PM	G32
                        Leadscrew adjustments made: 0.019 -0.044, points used 2, deviation before 0.028 after 0.000
                        

                        I execute it from a macro, which is as follows:

                        M557 X0:210 Y0:150 S30
                        G29
                        
                        Vetiundefined 1 Reply Last reply Reply Quote 0
                        • Vetiundefined
                          Veti @equanimity8
                          last edited by

                          @equanimity8 said in Dual motor bed tilt-compensation only goes through the motions:

                          The console output of 3 consequitive G32s:

                          the output suggest its already level as those error are normally within the probes inaccuracies

                          1 Reply Last reply Reply Quote 0
                          • equanimity8undefined
                            equanimity8
                            last edited by equanimity8

                            This is a screenshot of my height map and the relevant statistics after G32 and mesh bed compensation. Should I assume that this is normal, given the capabilities of my setup and that there is no way to improve it without improving the hardware?
                            1.PNG

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

                              @Veti said in Dual motor bed tilt-compensation only goes through the motions:

                              M671 X105:105 Y0:150 S5 ;

                              your leadscrews are at the middle top and bottom. it can only change an error in the y plane

                              adjustments to the leadscrews can not possibly change a twist in the opposite x plane.
                              you need 3 leadscrews for that

                              1 Reply Last reply Reply Quote 0
                              • equanimity8undefined
                                equanimity8
                                last edited by

                                Yep, I though the same but I wanted to make sure after, apparently I got the initial misconception about G28. Thanks a lot for clarifying that to me! Enjoy your weekend!

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