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

    Mesh leveling height map seems mirrored

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    2
    10
    447
    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.
    • FelixHundefined
      FelixH
      last edited by

      Hi all,

      so, I have this i3 cartesian printer with a steel frame. It is driven by a Duet WiFi 2, running the latest 3.3 Firmware. As a print bed it has a 5mm thick aluminum sheet, which was not quite cheap as the thickness was supposed to be quite accurate (not sure if "calibrated" or not, I can't remember). I checked the flatness of the sheet with a steel ruler and seems ok.

      Now, I have always have problems with the height map of this printer. It has never been easy to get it right. Today I decided to tackle the issue. I checked that both Z-carriages are at the same height and I run a bed mesh leveling at working temperature, which looks as follows:

      height_map.png

      Then I checked the height on the four corners with a caliper from a random position on the X-carriage only to found that contrary to the picture above, both right hand side corners are relatively lower than those on the left hand side, exactly as if I had a mirror image of the height map above. Just to make sure that I had the orientation right I placed something on the 0,0 position and I run the leveling again. As expected on the height map appeared where I would have expected, on the origin where the 3 arrows coincide.

      I am very puzzled about this issue. I have two additional cartesian printers and same electronics and the mesh leveling never showed such an issue. Any idea on how to troubleshoot this would be much appreciated, because I have no idea where to start...

      thanks in advance!

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

        When you updated to 3.3 did you also update DWC to 3.3?

        Can you confirm that your 0,0 origin point is in the front left corner?
        Can you confirm that -X moves to the left, +X moves to the right, -Y moves to the front, +Y moves to the back?

        Please post your full config.g and homing files.

        Z-Bot CoreXY Build | Thingiverse Profile

        FelixHundefined 2 Replies Last reply Reply Quote 0
        • FelixHundefined
          FelixH @Phaedrux
          last edited by

          @phaedrux I installed the update by uploading the zip file to the board and it did its magic. Aside from that, yes to all your questions. Before I updated to 3.3 it also saw the same behavior on 3.2.2

          Here are the files:

          config.g

          ; Configuration file for Duet WiFi (firmware version 3.11)
          ; executed by the firmware on start-up
          ;
          ; generated by RepRapFirmware Configuration Tool on Mon Feb 04 2019 17:03:09 GMT+0100 (Central European Standard Time)
          
          ; General preferences
          
          G90                                                ; Send absolute coordinates...
          M83                                                ; ...but relative extruder moves
          
          ;Panel Due Setup
          
          M575 P1 B57600 S1
          
          ; Network
          M550 P"Steel"                                      ; Set machine name
          M552 S1                                            ; Enable network
          
          M586 P0 S1                                         ; Enable HTTP
          M586 P1 S0                                         ; Disable FTP
          M586 P2 S0                                         ; Disable Telnet
          
          ; Mapping
          
          M584 X0 Y1 Z2:3 E4:5:6
          
          
          ; Drives
          
          M569 P0 S0                                         ; Drive 0 goes backwards
          M569 P1 S0                                         ; Drive 1 goes backwards
          M569 P2 S1                                         ; Drive 2 goes forwards
          M569 P3 S0                                         ; Drive 3 goes backwards
          
          M350 X16 Y16 Z16 E16 I1                            ; Configure microstepping with interpolation
          M92 X80.00 Y80.00 Z400.00 E428.7                   ; Set steps per mm
          M566 X600.00 Y600.00 Z18.00 E300.00                ; Set maximum instantaneous speed changes (mm/min)
          M203 X6000.00 Y6000.00 Z1000.00 E3600.00           ; Set maximum speeds (mm/min)
          M201 X1500.00 Y1500.00 Z100.00 E10000.00           ; Set accelerations (mm/s^2)
          M906 X650.00 Y800.00 Z800.00 E800.00 I30           ; Set motor currents (mA) and motor idle factor in per cent
          M84 S30 
          
          ; Axis Limits
          
          M208 X-20.8 Y-26.0 Z0 S1                           ; Set axis minima
          M208 X220 Y220 Z200 S0                             ; Set axis maxima
          
          ; Endstops
          
          M574 X1 S3                                         ; Motor Stall X Endstop
          M574 Y1 S3
          ;M574 Y1 S3                                         ; Motor Stall Y Endstop
          
          M915 X Y S30 F0 R0				                    ; Stall guard config when not homing
          
          
          
          M574 Z1 S2 	                                       ; Set endstops controlled by probe
          M558 P5 C"zprobe.in" H5 F300 T6000   	           ; Set Z probe type to switch and the dive height + speeds
          G31 P500 X-23 Y7 Z1.70                             ; Set Z probe trigger value, offset and trigger height
                                                             ; The larger the number the closest it gets to the bed
                                                             ; i.e.  1.50 puts the nozzle closer to the bed than 1.20
          M557 X15:185 Y20:200 S17:18                        ; Define mesh grid
          
          
          ; Bed Heaters/Thermistors
          
          M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 C0 R4700 	; Define thermistor
          M950 H0 C"bedheat" T0                                           ; Link pin name with heater
          M307 H0 B0 S1.00				                ; Disable bang-bang mode for the bed heater and set PWM limit
          M140 H0								; Links everything on the GUI
          M143 H0 S95                                       		; Set temperature limit for heater 0 to 95C
                                          
          
          ; HotEnd Heaters/Thermistors
          
          M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 R4725 	  ; Define thermistor
          M950 H1 C"e0heat" T1						  ; Link pin name with heater
          M143 H1 S290							  ; Set temperature limit for heater 1 to 290C
          
          
          ; Bed / HotEnd Autotunes
          
          M307 H1 R2.212 C274.1 D8.07 S1.00 V24.2          ; Hotend Autotune  //Changed
          M307 H0 R0.729 C235.0 D3.27 S1.00                  ; Bed Autotune //Changed. Silicone heated bed.
          
          ; Fans
          M950 F0 C"fan0" Q500
          M106 P0 S0 H-1                        		   ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
          
          M950 F1 C"fan1" Q500
          M106 P1 S0.85 H1 T45                          ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
          
          ; Tools
          M563 P0 D0 H1                                      ; 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
          
          ; Automatic power saving
          M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss
          
          ; Custom settings are not configured
          
          T0
          

          homeall.g

          ; homeall.g
          ; called to home all axes
          
          
          
          G91			; set relative mode
          G1 H2 Z5 F1200 		; lift Z
          G29 S2                  ; to clear the height map before Z homing
          M561                    ;reset bed compensation
          
          
          ; homex.g
          
          G1 H2 X0.2              ; Move X by 0.2 mm, clear stall status
          
          M400 			; make sure everything has stopped before we make changes
          M913 X70 		; X motor % current
          M915 X S2 R0 F0 	; set X sensitivity, do nothing when stall, unfiltered
          ;M574 X1 S3 		; set endstops to use motor stall
          G1 H1 X-260 F3600 	; move X back, stopping at the end stop
          
          M400 			; make sure everything has stopped
          M913 X100 		; XY motors to 100% current
          
          M915 X S30 R0 F0 	; set X sensitivity high, do nothing when stall, unfiltered
          
          M400; 			; make sure everything has stopped
          
          
          
          
          ; homey.g
          
          
          G1 H2 Y0.2              ; Move Y by 0.2 mm, clear stall status
          
          M913 Y75 		; Y motor % current
          M915 Y S3 R0 F0 	; set X sensitivity, do nothing when stall, unfiltered
          ;M574 Y S3 		; set endstops to use motor stall
          
          G1 H1 Y-260 F4800 	; move X back, stopping at the end stop
          
          M400 			; make sure everything has stopped
          M913 Y100 		; XY motors to 100% current
          
          M915 Y S30 R0 F0 	; set Y sensitivity high, pause when stall, filtered
          
          M400		        ; make sure everything has stopped
          
          
          
          
          ;homez.g
          
          
          G90         	         ; absolute positioning
          G1 X110 Y110 F6000 	 ; go to first probe point
          G30              	 ; home Z by probing the bed
          
          

          homex.g

          ; homex.g
          ; called to home the X axis
          
          
          
          G91			; set relative mode
          G1 H2 X0.2              ; Move X by 0.2 mm, clear stall status
          G29 S2                  ; to clear the height map before Z homing
          M561                    ;reset bed compensation
          
          M400 			; make sure everything has stopped before we make changes
          M913 X70 		; X motor % current
          M915 X S2 R0 F0 	; set X sensitivity, do nothing when stall, unfiltered
          G1 H2 Z5 F1200 		; lift Z
          G1 H1 X-260 F3600 	; move X back, stopping at the end stop
          
          M400 			; make sure everything has stopped
          M913 X100 		; XY motors to 100% current
          
          M915 X S30 R0 F0 	; set X sensitivity high, do nothing when stall, unfiltered
          
          G1 H2 Z-5 F1200         ; reset Z
          G90 			; back to absolute mode
          
          

          homey.g

          ; homey.g
          ; called to home the Y axis
          
          
          G91			; set relative mode
          G1 H2 Y0.2              ; Move Y by 0.2 mm, clear stall status
          G29 S2                  ; to clear the height map before Z homing
          M561                    ; reset bed compensation
          
          M400 			; make sure everything has stopped before we make changes
          M913 Y75 		; Y motor % current
          M915 Y S3 R0 F0 	; set X sensitivity, do nothing when stall, unfiltered
          G1 H2 Z5 F1200 		; lift Z
          G1 H1 Y-260 F4800 	; move X back, stopping at the end stop
          
          M400 			; make sure everything has stopped
          M913 Y100 		; XY motors to 100% current
          
          M915 Y S30 R0 F0 	; set Y sensitivity high, pause when stall, filtered
          
          G1 H2 Z-5 F1200         ; reset z
          G90 			; back to absolute mode
          
          

          homez.g

          ; homez.g
          ; called to home the Z axis
          ;
          
          G91             	 ; relative positioning
          G1 H2 Z5 F6000   	 ; lift Z relative to current position
          G90              	 ; absolute positioning
          
          G1 X110 Y110 F6000 	 ; go to first probe point
          G30              	 ; home Z by probing the bed
          
          
          ; Uncomment the following lines to lift Z after probing
          
          G91             ; relative positioning
          G1 Z5 F100      ; lift Z relative to current position
          G90             ; absolute positioning
          
          
          
          1 Reply Last reply Reply Quote 0
          • FelixHundefined
            FelixH @Phaedrux
            last edited by

            @phaedrux I rechecked something...

            if the hotend is in the middle of the bed, by pressing +Y on the web interface, the bed comes forward so that the location of the hotend is at higher "Y". Just to be clear...

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

              @felixh said in Mesh leveling height map seems mirrored:

              by pressing +Y on the web interface, the bed comes forward so that the location of the hotend is at higher "Y". Just to be clear

              Yes that is correct for a moving bed cartesian. The bed moves, but it's the nozzle position on the bed that we care about.

              Z-Bot CoreXY Build | Thingiverse Profile

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

                @felixh said in Mesh leveling height map seems mirrored:

                I checked that both Z-carriages are at the same height

                In relation to what?

                I assume you have 2 Z motors connected to the dual Z driver output?

                You have two tilting mechanisms that interact, the X gantry and the bed surface. You need to decide which is going to be the reference plane and then adjust the other to match it. On printers with dual z motors on independent drivers with a z probe, you can have the firmware measure the bed and adjust the x gantry to be tram with the bed tilt. (or tilt the bed to match the gantry with a printer that moves the bed in Z instead).

                So what is your reference point?

                Your config looks fine and the display of the heightmap should be correct based on your description of the coordinate system and there are no known display bugs with the heightmap. So I think it's a mechanical setup issue.

                Z-Bot CoreXY Build | Thingiverse Profile

                FelixHundefined 1 Reply Last reply Reply Quote 0
                • FelixHundefined
                  FelixH @Phaedrux
                  last edited by

                  @phaedrux in reference to the motor holders, which I guess should be fine... I have two motors connected to the same driver, so once in a while (quite often, actually), I check that both gantries are at the same height, relative to the correspondent holders

                  IMAGE 2021-08-08 20:17:32.jpg

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

                    That's fine. But once you've set them to the height of the motor holder, you'll need to then manually level the bed to match.

                    If your bed is fixed and can't be adjusted, then set the Z motors positions to match either side of the bed instead so that the nozzle is touching the bed on either side.

                    Once you have the X gantry tram to the bed, rerun mesh compensation.

                    Z-Bot CoreXY Build | Thingiverse Profile

                    FelixHundefined 2 Replies Last reply Reply Quote 0
                    • FelixHundefined
                      FelixH @Phaedrux
                      last edited by

                      @phaedrux I get what you're saying, yes. It does makes sense... I'm going to report back!

                      1 Reply Last reply Reply Quote 0
                      • FelixHundefined
                        FelixH @Phaedrux
                        last edited by

                        @phaedrux well... I promised I would report back...

                        Screenshot 2021-08-08 at 21-52-07 Steel.png

                        Thanks a lot! At the end of the day it was just the simple "level it the old fashioned way before..."

                        Can't thank you enough, it was bothering me for a while...

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