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

    Bed mesh correction and tool offsets...

    Scheduled Pinned Locked Moved
    General Discussion
    7
    31
    2.2k
    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.
    • Diamondbackundefined
      Diamondback @Phaedrux
      last edited by Diamondback

      @phaedrux I wish it was that easy... I placed my new bed on top of the old one (the new is a milled 6mm aluminium tooling plate) and that one is almost perfectly flat.
      So yea, the bed really is that bad (It's a known issue with that specific printer, many other users have very similar looking beds that get fixed when upgrading to the new 6mm one)

      The printer is a custom XY motionsystem with all of the original E3D toolchanging hardware (toolhead, tools) installed. This means the probe and its setup is exactly the same as the E3D one (simple microswitch)

      M122

      === Diagnostics ===
      RepRapFirmware for Duet 2 WiFi/Ethernet version 3.3 (2021-06-15 21:44:54) running on Duet WiFi 1.02 or later + DueX5
      Board ID: 08DGM-917NK-F2MS4-7J9F2-3S86N-TYTWF
      Used output buffers: 3 of 24 (24 max)
      === RTOS ===
      Static ram: 23876
      Dynamic ram: 80972 of which 204 recycled
      Never used RAM 6508, free system stack 98 words
      Tasks: NETWORK(ready,113.2%,227) ACCEL(notifyWait,0.0%,334) HEAT(delaying,0.5%,330) Move(notifyWait,1.5%,283) DUEX(notifyWait,0.0%,24) MAIN(running,110.5%,420) IDLE(ready,0.1%,29), total 225.8%
      Owned mutexes: WiFi(NETWORK)
      === Platform ===
      Last reset 08:38:49 ago, cause: software
      Last software reset at 2021-06-20 23:42, reason: User, GCodes spinning, available RAM 6524, slot 2
      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 31.8, current 32.3, max 42.2
      Supply voltage: min 23.9, current 24.3, max 24.5, under voltage events: 0, over voltage events: 0, power good: yes
      Heap OK, handles allocated/used 99/8, heap memory allocated/used/recyclable 2048/1486/1374, gc cycles 0
      Driver 0: position 36960, standstill, SG min/max 0/1023
      Driver 1: position 13920, standstill, SG min/max 0/1023
      Driver 2: position 33880, standstill, SG min/max 0/525
      Driver 3: position 24000, standstill, SG min/max 0/1023
      Driver 4: position 0, standstill, SG min/max not available
      Driver 5: position 0, standstill, SG min/max not available
      Driver 6: position 0, standstill, SG min/max not available
      Driver 7: position 0, standstill, SG min/max 0/1023
      Driver 8: position 0, standstill, SG min/max 0/1023
      Driver 9: position 0, standstill, SG min/max 0/1023
      Driver 10: position 0
      Driver 11: position 0
      Date/time: 2021-06-21 08:21:42
      Cache data hit count 4294967295
      Slowest loop: 96.93ms; fastest: 0.10ms
      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 1.2ms, write time 7.7ms, max retries 0
      === Move ===
      DMs created 83, maxWait 203017ms, bed compensation in use: mesh, comp offset 0.000
      === MainDDARing ===
      Scheduled moves 107313, completed moves 107313, hiccups 0, stepErrors 0, LaErrors 0, Underruns [1, 0, 0], CDDA state -1
      === AuxDDARing ===
      Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
      === Heat ===
      Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -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.
      === DueX ===
      Read count 7, 0.01 reads/min
      === Network ===
      Slowest loop: 66.31ms; fastest: 0.00ms
      Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
      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.26
      WiFi MAC address b4:e6:2d:52:f2:a9
      WiFi Vcc 3.42, reset reason Power up
      WiFi flash size 4194304, free heap 26736
      WiFi IP address 192.168.1.31
      WiFi signal strength -62dBm, mode 802.11n, reconnections 0, sleep mode modem
      Clock register 00002002
      Socket states: 0 0 0 0 0 0 0 0
      

      results from config.g

      Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 345C
      Warning: Heater 1 appears to be over-powered. If left on at full power, its temperature is predicted to reach 641C
      Warning: Heater 2 appears to be over-powered. If left on at full power, its temperature is predicted to reach 553C
      Warning: Heater 3 appears to be over-powered. If left on at full power, its temperature is predicted to reach 577C
      Warning: Heater 4 appears to be over-powered. If left on at full power, its temperature is predicted to reach 598C
      Accelerometer 0 with orientation 20 samples at 1344Hz with 10-bit resolution
      

      config.g (edit: no idea where the "{1}" in line 44 comes from, this is actually neither in config.g nor in the code pasted here... )

      ; Configuration file for Duet WiFi (firmware version 3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun May 10 2020 15:03:19 GMT+0200 (Mitteleuropäische Sommerzeit)
      
      ; General preferences
      ;M929 S3                                        ;enable debug logging
      M575 P1 S1 B57600                               ;Enable PanelDue Port
      G90                                             ; send absolute coordinates...
      M83                                             ; ...but relative extruder moves
      M550 P"V-Core Pro"                              ; set printer name
      
      M669 K1                                         ; select CoreXY mode
      
      ; Network
      M552 S1                                         ; enable network
      
      ; Drives
      M569 P0 S0                                      ; stepper X/Y
      M569 P1 S0                                      ; stepper X/Y
      M569 P2 S0                                      ; stepper Coupler
      M569 P3 S0                                      ; stepper E1
      M569 P4 S0                                      ; stepper E2
      M569 P5 S0                                      ; stepper E3
      M569 P6 S0                                      ; stepper E4
      M569 P7 S0                                      ; stepper Z1
      M569 P8 S0                                      ; stepper Z2
      M569 P9 S0                                      ; stepper Z3
      
      M584 X0 Y1 C2 Z7:8:9                            ; set drive mapping (motion system)
      M584 E3:4:5:6                                   ; set drive mapping (extruders)
      
      ; Axis Limits
      global minY = -149
      global maxY = 72
      M208 X-146:159 Y{global.minY}:{global.maxY} C0:250 Z0:290     ; set axis minima & maxima
      M671 X-161:4:189 Y-118:177:-118 S20             ; set Z leadscrew positions
      
      M92 X160.00 Y160.00 C200.00 Z800.00             ; set steps per mm
      M350 X16 Y16 C16 Z16 I1                         ; configure microstepping with interpolation
      M566 X500 Y500 C2 Z70                           ; set maximum instantaneous speed changes (mm/min) 
      M203 X30000 Y30000 C10000 Z2000                 ; set maximum speeds (mm/min)
      M201 X2000 Y2000 C500 Z500                      ; set accelerations (mm/s^2)
      
      M906 X1800 Y1800 C500 I30                       ; set motor currents (mA) and motor idle factor in per cent
      M906 Z1400 I100                                 ; set motor currents (mA) and motor idle factor in per cent
      M906 E600:600:600:600 I100                      ; set motor currents (mA) and motor idle factor in per cent (2x Flex3Drive 2x LGX)
      M84 S30                                         ; Set idle timeout    
      ;M204 P1500 T3000 
      ;M593 F40  ; cancel ringing  
      
      ;=================== Extruder ======================
      M92 E408:408:408:408                            ; set steps per mm 
      M350 E16:16:16:16 I1                            ; configure microstepping 
      M566 E1200:1200:1200:1200                       ; set maximum instantaneous speed changes (mm/min)
      M203 E4000:4000:4000:4000                       ; set maximum speeds (mm/min) 
      M201 E3000:3000:3000:3000                       ; set accelerations (mm/s^2)
      ;====================================================
      
      ; Endstops
      M574 X2 S1 P"xstop"                             ; configure active-high endstop for high end on X via pin xstop
      M574 Y1 S1 P"ystop"                             ; configure active-high endstop for high end on Y via pin ystop
      M574 Z0                                         ; No Z-Endstop (use as probe instead)
      M574 C1 S3                                      ; Stall detect coupler at low end of its range
      ;Stall Detection
      M915 C S6 F0 H200 R0                            ; Coupler
      
      ; Z-Probe
      M558 P8 C"zstop" H3 F1000 T20000                ; set Z probe type to unfiltered switch and the dive height + speeds
      G31 X0 Y0 Z0 P200                               ; set Z probe trigger value, offset and trigger height
      global minYMesh = global.minY
      global maxYMesh = 115
      M557 X-146:150 Y{global.minYMesh}:{global.maxYMesh} P10                     ; define mesh grid
      M376 H30                                        ; Set bed correction taper
      
      ; Heaters
      M308 S0 P"bedtemp" Y"thermistor" T100000 B3950  ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T0                           ; create bed heater output on bedheat and map it to sensor 0
      M143 H0 S121                                    ; set temperature limit for heater 0 to 121C
      M307 H0 R0.712 C450.5 D4.85 S1.00 V24.3         ; Bed PID Tuning
      M140 H0                                         ; map heated bed to heater 0
      
      M308 S1 P"e0_temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                            ; create nozzle heater output on e0heat and map it to sensor 1
      M143 H1 S301                                    ; set temperature limit for heater 1 to 301C
      
      M308 S2 P"e3_temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 2 as thermistor on pin e3temp
      M950 H2 C"duex.e3heat" T2                            ; create nozzle heater output on e3heat and map it to sensor 2
      M143 H2 S301                                    ; set temperature limit for heater 2 to 301C
      
      M308 S3 P"e2_temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 3 as thermistor on pin e2temp
      M950 H3 C"duex.e2heat" T3                            ; create nozzle heater output on e2heat and map it to sensor 3
      M143 H3 S301                                    ; set temperature limit for heater 3 to 301C
      
      M308 S4 P"e1_temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 4 as thermistor on pin e1temp
      M950 H4 C"e1heat" T4                            ; create nozzle heater output on e1heat and map it to sensor 4
      M143 H4 S301                                    ; set temperature limit for heater 4 to 301C
      
      
      M302 S190 R190                                  ;Cold extrusion settings
      
      M307 H1 B0 R4.292 C143.6:138.0 D3.25 S1.00 V24.2 ; PID Tuning T0
      M307 H2 B0 R3.836 C137.7:128.8 D1.66 S1.00 V24.2 ; PID Tuning T1
      M307 H3 B0 R3.967 C139.3:126.4 D1.79 S1.00 V24.2 ; PID Tuning T1
      M307 H4 B0 R3.965 C144.7:139.8 D1.96 S1.00 V24.2 ; PID Tuning T1
      
      ; Fans
      M950 F0 C"duex.fan3"                            ; Hotend Fan Tool 0
      M106 P0 S255 L255 H1 T50                        ; Hotend Fan Tool 0
      M950 F1 C"duex.fan4" Q50                        ; Layer Fan Tool 0
      M106 P1 S0 H-1                                  ; Layer Fan Tool 0
      
      M950 F2 C"fan0"                                 ; Hotend Fan Tool 1
      M106 P2 S255 L255 H2 T50                        ; Hotend Fan Tool 1
      M950 F3 C"fan2" Q50                             ; Layer Fan Tool 1
      M106 P3 S0 H-1                                  ; Layer Fan Tool 1
      
      M950 F4 C"duex.fan7"                            ; Hotend Fan Tool 2
      M106 P4 S255 L255 H3 T50                        ; Hotend Fan Tool 2
      M950 F5 C"duex.fan8" Q50                        ; Layer Fan Tool 2
      M106 P5 S0 H-1                                  ; Layer Fan Tool 2
      
      M950 F6 C"duex.fan5"                            ; Hotend Fan Tool 3
      M106 P6 S255 L255 H4 T50                        ; Hotend Fan Tool 3
      M950 F7 C"duex.fan6" Q50                        ; Layer Fan Tool 3
      M106 P7 S0 H-1                                  ; Layer Fan Tool 3
      
      ;Z-Offset: 	If nozzle is too close to bed _reduce_ offset (negative number becomes more negative)
      ;			If nozzle is too far away, _increase_ offset (negative number becomes less negative)
      ; Tools
      M563 P0 D0 H1 F1                                ; define tool 0
      G10 P0 X-9 Y39 Z-4.70                           ; set tool 0 axis offsets
      G10 P0 R0 S0                                    ; set initial tool 0 active and standby temperatures to 0C
      
      M563 P1 D3 H2 F3                                ; define tool 1
      G10 P1 X-9.40 Y39.05 Z-5.04                      ; set tool 1 axis offsets
      G10 P1 R0 S0                                    ; set initial tool 1 active and standby temperatures to 0C
      
      M563 P2 D2 H3 F5                                ; define tool 2
      G10 P2 X-9.15 Y39.1 Z-4.91                      ; set tool 2 axis offsets
      G10 P2 R0 S0                                    ; set initial tool 2 active and standby temperatures to 0C
      
      M563 P3 D1 H4 F7                                ; define tool 3
      G10 P3 X-9.35 Y38.4 Z-5.07                      ; set tool 3 axis offsets
      G10 P3 R0 S0                                    ; set initial tool 3 active and standby temperatures to 0C
      
      ;Dock present switches
      M950 J0 C"duex.e2stop"                          ; Tool 0 Dock switch
      M950 J1 C"duex.e5stop"                          ; Tool 1 Dock switch
      M950 J2 C"duex.e4stop"                          ; Tool 2 Dock switch
      M950 J3 C"duex.e3stop"                          ; Tool 3 Dock switch
      
      M950 S0 C"duex.pwm5"                          ;PebbleWiper Servo
      M950 P1 C"duex.pwm4"                          ;Light switch PWM
      ;M591 D0 P1 C"e0stop" S1                        ;Filament Sensor E0
      
      ;Accelerometer
      M955 P0 C"spi.cs3+spi.cs4"
      ;M593 F78
      

      homeall.g

      ; homeall.g
      ; called to home all axes
      
      M98 P"homey.g"			; Home Y first, so that a head that is currently in one of the tool docks homes correctly
      M98 P"homex.g"			; Home X 
      
      ;check if any tool is undocked
      if sensors.gpIn[0].value = 0 || sensors.gpIn[1].value = 0 || sensors.gpIn[2].value = 0 || sensors.gpIn[3].value = 0
      	echo "Not all tools docked, docking tool before homing!"
      	M98 P"/macros/Toolchanging/DockUnknownToolEmergency"
      
      M98 P"homec.g"			; Home C (ToolHead)
      M98 P"homez.g"			; Home Z
      

      homez.g

      ; homez.g
      ; called to home the Z axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2 on Thu Dec 13 2018 18:14:06 GMT+0100 (Central European Standard Time)
      
      if sensors.gpIn[0].value = 0 || sensors.gpIn[1].value = 0 || sensors.gpIn[2].value = 0 || sensors.gpIn[3].value = 0
      	M291 S1 T5 P"Please return tool to dock before homing Z" R"Can't home Z"
      	abort
      
      
      G90               ; absolute positioning
      G1 X0 Y0 F15000 ; go to first probe point
      G30               ; home Z by probing the bed
      G91               ; relative positioning
      G1 Z10 F1000
      

      bed.g

      M98 P"/macros/Bed/Level"
      M208 Y{global.minY}:{global.maxYMesh} ; extend allowed space for probing near the edge of the bed
      G29 S0
      G1 X400 Y{global.maxY} F20000		          ; Park
      M208 Y{global.minY}:{global.maxY}     ;reset safe moving space to normal
      

      /macros/Bed/Level

      M564 S1
      M561 ; clear any bed transform
      if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
        G28
        
      T-1
        
      while true
      
          G30 P1 X-30 Y-147 Z-99999 ; probe leadscrew 1
          G30 P0 X30 Y-147 Z-99999 ; probe leadscrew 2 
          G30 P2 X0 Y72 Z-99999 S3; probe leadscrew 3
          
          if move.calibration.initial.deviation <= 0.01
              echo "Leveling successful. Deviation: " ^ move.calibration.initial.deviation ^ "mm"
              break
          if iterations >= 10 
              break
          echo "Repeating leveling because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
      
      G28 Z
      
      Egon.Netundefined fcwiltundefined 2 Replies Last reply Reply Quote 0
      • Egon.Netundefined
        Egon.Net @Diamondback
        last edited by Egon.Net

        I have the very same problem! And I also have a toolchanger just like you, custom CoreXY motion system with e3d toolchanger hardware. The thing is my bed is almost flat and it doesn't make my prints fail, but I no longer have the perfect first layers I used to have since I went toolchanging. I even thought that the extra weight of the tool was making my X gantry sag, but the expected sagging doesn't quite match the effect I see when printing.

        1 Reply Last reply Reply Quote 1
        • fcwiltundefined
          fcwilt @Diamondback
          last edited by

          @diamondback

          Hi.

          In your bed leveling macro your three X positions (-30, 30, 0) are very close to bed center rather then being out near the leadscrews.

          Are those value correct?

          Thanks.

          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

          Diamondbackundefined 1 Reply Last reply Reply Quote 1
          • Diamondbackundefined
            Diamondback @fcwilt
            last edited by

            @fcwilt Not sure if that specific bed level pattern has any negative effects that I am not aware of, but yes, it's correct as far as I can tell.
            It was deliberately chosen that way so that I do the probes in the flat-ish area in the middle of the bed, if I probe near the leadscrews (which I've tried before) the final bed "level" is all weird due to it trying to work its best with that pringle shaped bed. (the whole bed ends up at an angle then)

            Here is where the leadscrews are (roughly). If I were to probe near the screws, it would take those three points for its plane fitting, two of those are super low and one is super high, leading to an overall tilt of the bed plane.
            2021-06-21_09-18-55.png

            The bed level process itself works fine to the best of my knowledge, even extreme tilts are corrected properly and within usually 2-4 leveling passes, the reported deviation is below 0.01mm.

            engikeneerundefined 1 Reply Last reply Reply Quote 0
            • engikeneerundefined
              engikeneer @Diamondback
              last edited by

              @diamondback I've got a similar printer shape on my bed which is mostly down to sag and twist in the x gantry (I have a heavy print head with some offset from the rail).
              With the toolchanger you probe without a tool mounted, so there's the extra mass to cause sag, and the mass is off to one side which can also twist the rail a bit. Have you tried loading a dummy tool to get the probing weight closer to the printing weight?
              This is as much a question than an answer as I'm thinking of converting mine to a toolchanger!

              E3D TC with D3Mini and Toolboards.
              Home-built CoreXY, Duet Wifi, Chimera direct drive, 2x BMG, 300x300x300 build volume
              i3 clone with a bunch of mods

              Diamondbackundefined 1 Reply Last reply Reply Quote 2
              • Diamondbackundefined
                Diamondback @engikeneer
                last edited by

                @engikeneer I was thinking about an effect like that as well, but wouldn't the Z-Offset caused by this be constant? Or at least purely dependant on the X position? (assuming that there is less sag near the min/max extends of X)

                And no, don't have any dummy weight. Note though, I have fairly heavy tools (Bondtech LGX on the tool itself), as well as fairly light ones (remote direct extruder) and they don't show any difference in behavior.

                1 Reply Last reply Reply Quote 1
                • o_lampeundefined
                  o_lampe
                  last edited by

                  @Diamondback
                  I'm no config wizard, so I can only share my impression about the whole Z-probe offset.
                  I read through all the related wiki pages and got more and more confused about the 'sign' of the offsets (positive or negative?)

                  Your description of the DWC output seems to indicate, you've set them wrong.
                  That doesn't explain why it worked pre-toolchanger, but maybe back then your nozzle was 0,0 not the probe?

                  Diamondbackundefined 2 Replies Last reply Reply Quote 1
                  • Diamondbackundefined
                    Diamondback @o_lampe
                    last edited by

                    @o_lampe Pre-Toolchanger it was a normal CoreXY, so Nozzle at 0,0 and probe at some offset.
                    Any idea what other symptoms a wrong offset sign would cause? Or how to actually check?
                    As far as I can tell, things work as expected apart from the mesh compensation.

                    o_lampeundefined dc42undefined 2 Replies Last reply Reply Quote 0
                    • Diamondbackundefined
                      Diamondback @o_lampe
                      last edited by

                      @o_lampe Also, to the best of my knowledge, I'm using the same Duet setup as the "real" toolchanger, so all offset signs should be the same compared to @dc42 own toolchanger config (which they are)

                      1 Reply Last reply Reply Quote 0
                      • o_lampeundefined
                        o_lampe @Diamondback
                        last edited by

                        @diamondback said in Bed mesh correction and tool offsets...:

                        Or how to actually check?

                        Move to a specific point (center of bed) before a tool is applied. The probe would point to that spot.
                        Then load a tool and move to that spot again. Does the nozzle point to that spot?

                        1 Reply Last reply Reply Quote 0
                        • dc42undefined
                          dc42 administrators @Diamondback
                          last edited by dc42

                          @diamondback do you have a substantial X offset between the probe and the nozzle? If so, and if the problem is that the X gantry is sagging as @Phaedrux suggests (which seems likely to me) then there are two effects which will cause height errors:

                          1. The bed compensation algorithm assumes that the printer XY movement occurs in a flat plane but the bed isn't flat. Therefore it adjusts the height according to where the nozzle is, not where the probe is. If the primary cause of height errors is a sagging X gantry then that won't work well, and it would be better to set the probe X offset to zero (and then check that it doesn't cause the machine to try to probe off the edge of the bed).

                          2. The X offset of the probe will also cause the relative height of the probe and nozzle to vary with X position. This is because the X carriage is tilting one way at one end of the X axis, and the other way at the other end. That will lead to the height map causing the nozzle to be too high at one end of the X axis and too low at the other.

                          Whatever the cause of that height map, you need to address it. If it's sag in the X gantry, you need a more rigid gantry. Are you using the original gantry with much heavier tools and pickup assembly than your original print head?

                          Duet WiFi hardware designer and firmware engineer
                          Please do not ask me for Duet support via PM or email, use the forum
                          http://www.escher3d.com, https://miscsolutions.wordpress.com

                          Diamondbackundefined 1 Reply Last reply Reply Quote 1
                          • Diamondbackundefined
                            Diamondback @dc42
                            last edited by

                            @dc42 The probe/nozzle offsets are the same as regular E3D V6 tools. Weight wise, think roughly Hemera tool.
                            As noted above, the bed itself is definitely the main source of the funky height map, my new bed is much better (tested by literally placing the new bed plate on top of the existing bed and probing that), but it will be a while until I can actually use that.

                            I'm not sure I understand point 2), why would the X carriage tilt in different directions depending on whether it's at X min or X max?

                            I recognize that there certainly is some softness in my X gantry ( I can deflect it by hand if I really want to...), but I don't understand how that would create the issues I am seeing.
                            The way Isee it, a loaded tool would rotate the toolhead around the X-gantry, possibly the most the in the middle and the least at the min/max (depending on where the primary softness comes from, the rail, the mounting to the Y rails, the X extrusion itself, etc)
                            But this would be a pretty symetrical issue, no?

                            The motionsystem is not from E3D, only the toolchange hardware is, so it's definitely not as stiff as the E3D stuff.

                            dc42undefined 1 Reply Last reply Reply Quote 0
                            • dc42undefined
                              dc42 administrators @Diamondback
                              last edited by

                              @diamondback said in Bed mesh correction and tool offsets...:

                              @dc42 The probe/nozzle offsets are the same as regular E3D V6 tools. Weight wise, think roughly Hemera tool.
                              As noted above, the bed itself is definitely the main source of the funky height map, my new bed is much better (tested by literally placing the new bed plate on top of the existing bed and probing that), but it will be a while until I can actually use that.

                              OK, then sorting out the bed should sort out most of the issue.

                              I'm not sure I understand point 2), why would the X carriage tilt in different directions depending on whether it's at X min or X max?

                              Think of a sagging X gantry like a chain hanging between two supports. Then a carriage hung fnr the chain by 2 wheels will tilt in one direction when it is near one end of the chain, and in the opposite direction when it is near the other end.

                              The way Isee it, a loaded tool would rotate the toolhead around the X-gantry, possibly the most the in the middle and the least at the min/max (depending on where the primary softness comes from, the rail, the mounting to the Y rails, the X extrusion itself, etc)

                              Yes I see a torsional oscillation around the X gantry on my E3D TC with the accelerometer.

                              Duet WiFi hardware designer and firmware engineer
                              Please do not ask me for Duet support via PM or email, use the forum
                              http://www.escher3d.com, https://miscsolutions.wordpress.com

                              Diamondbackundefined 1 Reply Last reply Reply Quote 0
                              • Diamondbackundefined
                                Diamondback @dc42
                                last edited by

                                @dc42 Oh, you were talking about another tilt axis with the chain thing, yea, that makes sense. I will re-probe my new bed (just on top of the old) so you get an idea of how bad the current bed really is.

                                1 Reply Last reply Reply Quote 0
                                • Diamondbackundefined
                                  Diamondback
                                  last edited by

                                  @dc42 Here's the "new" bed, I just slapped it on top of the existing bed, so likely this is not the best it will be eventually. The Z motion system will also be replace to be a kinematic coupling style so the bed can extend properly when heating.

                                  2021-06-21_13-10-50.png

                                  I think it's safe to assume that the saddle shape does not arise from sag in the gantry, but rather from the bed itself.

                                  I would really like to get this fixed though. It will easily take another month or so before I can actually use the new bed (missing hardware, printed parts that need actual printing etc)

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

                                    If the adjustments to the z position with baby stepping are consistent based on XY location as you say, then you could potentially directly edit the heightmap.csv to alter the points to match reality.

                                    Z-Bot CoreXY Build | Thingiverse Profile

                                    Diamondbackundefined 1 Reply Last reply Reply Quote 0
                                    • Diamondbackundefined
                                      Diamondback @Phaedrux
                                      last edited by

                                      @phaedrux Yea I guess technically that would be possible, but I have really no idea how one would do that in practice (finding the offset for each recorded csv value during a print).
                                      I guess maybe one would have to print a grid or something very slowly and a turn at each probe point so it applies the new babystepping?

                                      Dunno, seems... complicated 😄

                                      fcwiltundefined 1 Reply Last reply Reply Quote 0
                                      • fcwiltundefined
                                        fcwilt @Diamondback
                                        last edited by

                                        @diamondback said in Bed mesh correction and tool offsets...:

                                        Dunno, seems... complicated 😄

                                        Because it is.

                                        Perhaps the best meaningful solution is to simply wait until you can replace the current bed with something better.

                                        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

                                        Diamondbackundefined 1 Reply Last reply Reply Quote 1
                                        • Diamondbackundefined
                                          Diamondback @fcwilt
                                          last edited by

                                          @fcwilt Hm... While an option, I don't feel this is the correct option here...
                                          This bed worked fine, so it's not like RRF can't deal with it. I really feel like some place is using the wrong tool offsets...

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

                                            @diamondback said in Bed mesh correction and tool offsets...:

                                            M208 X-146:159 Y{global.minY}:{global.maxY} C0:250 Z0:290 ; set axis minima & maxima

                                            Can you check that anywhere you have variables and conditional code that it evaluated correctly?

                                            You can send M208 M577 etc by themselves in the gcode console and it will report what the current value is.

                                            Z-Bot CoreXY Build | Thingiverse Profile

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