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

    [3.4b3] Homing to negative Y doesn't work

    Scheduled Pinned Locked Moved
    Beta Firmware
    4
    12
    513
    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
      last edited by

      My printer's origin is in the middle of its bed, with the minimum Y value being -149.
      Y homes against that -149 minimum of the axis.

      After upgrading to 3.4b3 (from 3.3 stable) this doesn't work anymore. It homes fine, but after homing the printer thinks it's at Y0 rather than Y-149...

      config.g

      ; 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 S1                                      ; 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-150:160 Y{global.minY}:{global.maxY} C0:250 Z0:270     ; set axis minima & maxima
      M671 X-201:8:214 Y-204:187:-204 S30             ; 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
      global zProbeSpeedFeed = 500
      global zProbeSpeedTravel = 20000
      global zProbeDiveHeightLevel = 30
      global zProbeDiveHeightMesh = 3
      global zProbePin = "zstop"
      global zProbeType = 8
      global zProbeTriggerValue = 200
      M558 P{global.zProbeType} C{global.zProbePin} H{global.zProbeDiveHeightMesh} F{global.zProbeSpeedFeed} T{global.zProbeSpeedTravel}  ; set Z probe type to unfiltered switch and the dive height + speeds
      G31 X0 Y0 Z0 P{global.zProbeTriggerValue}                               ; set Z probe trigger value, offset and trigger height, offsets here are hardcoded in leveling macro as well
      global minYMesh = global.minY
      global maxYMesh = 115
      M557 X-146:150 Y{global.minYMesh}:{global.maxYMesh} P10                     ; define mesh grid
      M376 H0                                        ; 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 Q10                       ; 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 B0 R0.686 C403.9 D2.95 S1.00 V24.1      ; Bed PID Tuning
      M140 H0                                         ; map heated bed to heater 0
      
      M308 S1 P"e0temp" 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"e1temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 2 as thermistor on pin e1temp
      M950 H2 C"e1heat" T2                            ; create nozzle heater output on e1heat and map it to sensor 2
      M143 H2 S301                                    ; set temperature limit for heater 2 to 301C
      
      M308 S3 P"duex.e2temp" 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"duex.e3temp" Y"thermistor" T100000 B4725 C7.06e-8  ; configure sensor 2 as thermistor on pin e3temp
      M950 H4 C"duex.e3heat" T4                            ; create nozzle heater output on e3heat and map it to sensor 2
      M143 H4 S301                                    ; set temperature limit for heater 2 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"fan0"                            ; Hotend Fan Tool 0
      M106 P0 S255 L255 H1 T50                        ; Hotend Fan Tool 0
      M950 F1 C"duex.fan3" Q50                        ; Layer Fan Tool 0
      M106 P1 S0 H-1                                  ; Layer Fan Tool 0
      
      M950 F2 C"fan2"                                 ; Hotend Fan Tool 1
      M106 P2 S255 L255 H2 T50                        ; Hotend Fan Tool 1
      M950 F3 C"duex.fan4" Q50                             ; Layer Fan Tool 1
      M106 P3 S0 H-1                                  ; Layer Fan Tool 1
      
      M950 F4 C"duex.fan5"                            ; Hotend Fan Tool 2
      M106 P4 S255 L255 H3 T50                        ; Hotend Fan Tool 2
      M950 F5 C"duex.fan6" Q50                        ; Layer Fan Tool 2
      M106 P5 S0 H-1                                  ; Layer Fan Tool 2
      
      M950 F6 C"duex.fan7"                            ; Hotend Fan Tool 3
      M106 P6 S255 L255 H4 T50                        ; Hotend Fan Tool 3
      M950 F7 C"duex.fan8" 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.60                           ; set tool 0 axis offsets
      G10 P0 R0 S0                                    ; set initial tool 0 active and standby temperatures to 0C
      
      M563 P1 D1 H2 F3                                ; define tool 1
      G10 P1 X-9.480 Y38.790 Z-4.890                      ; 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.310 Y38.840 Z-5.010                      ; set tool 2 axis offsets
      G10 P2 R0 S0                                    ; set initial tool 2 active and standby temperatures to 0C
      
      M563 P3 D3 H4 F7                                ; define tool 3
      G10 P3 X-9.450 Y37.880 Z-5.000                      ; set tool 3 axis offsets
      G10 P3 R0 S0                                    ; set initial tool 3 active and standby temperatures to 0C
      
      M563 P4 S"Pen"                                ; define tool 4 (Pen)
      G10 P4 X0 Y46.5 Z-20.000                      ; set tool 4 axis offsets
      
      ;Dock present switches
      M950 J0 C"e0stop"                          ; Tool 0 Dock switch
      M950 J1 C"e1stop"                          ; Tool 1 Dock switch
      M950 J2 C"duex.e2stop"                          ; Tool 2 Dock switch
      M950 J3 C"duex.e3stop"                          ; Tool 3 Dock switch
      
      M950 S0 C"duex.pwm4"                          ;PebbleWiper Servo
      M950 P1 C"duex.pwm5"                          ;Light switch PWM
      
      ;Accelerometer
      M955 P0 C"spi.cs3+spi.cs4"
      ;M593 F78
      
      ; Miscellaneous
      M98 P"/macros/Misc/Lights/On"
      M98 P"/sys/config-tools.g"
      

      homex.g (this homes first)

      ; homex.g
      ; called to home the X axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2 on Thu Dec 13 2018 18:14:06 GMT+0100 (Central European Standard Time)
      G91               ; relative positioning
      G1 Z5 F1000 H2    ; lift Z relative to current position
      G1 H1 X400 F10000 ; move quickly to X axis endstop and stop there (first pass)
      G1 X-5 F10000       ; go back a few mm
      G1 H1 X400 F360  ; move slowly to X axis endstop once more (second pass)
      G90               ; absolute positioning
      

      homey.g (this homes after x)

      ; homey.g
      ; called to home the Y axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2 on Thu Dec 13 2018 18:14:06 GMT+0100 (Central European Standard Time)
      G91               ; relative positioning
      G1 Z5 F1000 H2    ; lift Z relative to current position
      G1 H1 Y-400 F10000 ; move quickly to Y axis endstop and stop there (first pass)
      G1 Y5 F10000       ; go back a few mm
      G1 H1 Y-400 F360  ; move slowly to Y axis endstop once more (second pass)
      G90               ; absolute positioning
      

      After downgrading to 3.3 stable, everything works as expected again.

      jay_s_ukundefined Aitorundefined 2 Replies Last reply Reply Quote 0
      • jay_s_ukundefined
        jay_s_uk @Diamondback
        last edited by

        @diamondback all looks valid.
        out of curiosity could you try a split M208 command? i.e.

        M208 X-150 Y{global.minY} C0 Z0 S1
        M208 X160 Y{global.maxY} C250 Z270
        

        I home with an 0,0 at the centre at the same way you do.

        The only other thing I can think of is its not carrying over the global variable correctly.
        If the above doesn't work, can you try removing the variable from your M208?
        This should help pin down the error

        Owns various duet boards and is the main wiki maintainer for the Teamgloomy LPC/STM32 port of RRF. Assume I'm running whatever the latest beta/stable build is

        1 Reply Last reply Reply Quote 2
        • Aitorundefined
          Aitor @Diamondback
          last edited by

          Good morning @diamondback

          https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta-&-RC#reprapfirmware-340beta2
          Where a GCode parameter accepts multiple values, you can no longer use a mixture of literals and expressions (which was previously supported in standalone mode only). However, the whole parameter can now be an array expression. For example, M92 E{var.e1}:400:{var.e3} will no longer work and must be replaced by M92 E{var.e1,400,var.e3}.

          In your case this is how it should be:

          M208 X-150:160 Y{global.minY,global.maxY} C0:250 Z0:270     ; set axis minima & maxima
          

          Check if you have any more

          I don't know if this will be the solution for your problem.

          Best regards

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

            Thanks for the ideas, will test as soon as the current print (on 3.3) finishes 👍

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

              @diamondback said in [3.4b3] Homing to negative Y doesn't work:

              Thanks for the ideas, will test as soon as the current print (on 3.3) finishes 👍

              Just out of curiosity why are you using a global var in that way?

              Those values are already part of the Object Model so if you set them using constants in config.g you can read them from the Object Model if you need to use the current values.

              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 0
              • Diamondbackundefined
                Diamondback @fcwilt
                last edited by

                @fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
                I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal.

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

                  @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                  @fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
                  I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal.

                  If the normal M208 limits prevent you from probing the desired locations you can temporarily removing the restrictions set by those limits by using a pair of M564 commands, one to disable the limits before you probe, one to restore the limits after you probe.

                  M564 Documentation

                  As long as the locations you wish to probe are accessible temporarily disabling the limits will cause no problems.

                  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 said in [3.4b3] Homing to negative Y doesn't work:

                    @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                    @fcwilt I need to change these values at runtime (during mesh probing). I don't want to have to define the actual value in multiple places, so I just store it as a global.
                    I wasn't aware I can read this from the OM, that would open further possibilities of achieving the same goal.

                    If the normal M208 limits prevent you from probing the desired locations you can temporarily removing the restrictions set by those limits by using a pair of M564 commands, one to disable the limits before you probe, one to restore the limits after you probe.

                    M564 Documentation

                    As long as the locations you wish to probe are accessible temporarily disabling the limits will cause no problems.

                    Frederick

                    That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.

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

                      @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                      That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.

                      Well it does work because it is the approach I use.

                      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 0
                      • Diamondbackundefined
                        Diamondback @fcwilt
                        last edited by

                        @fcwilt said in [3.4b3] Homing to negative Y doesn't work:

                        @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                        That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.

                        Well it does work because it is the approach I use.

                        Frederick

                        Maybe something changed then, because that was the first thing I tried back then:
                        https://forum.duet3d.com/topic/23474/probing-outside-allowed-area

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

                          @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                          @fcwilt said in [3.4b3] Homing to negative Y doesn't work:

                          @diamondback said in [3.4b3] Homing to negative Y doesn't work:

                          That didn't work for me when I originally set up this system. RRF will just report that it can't reach those points.

                          Well it does work because it is the approach I use.

                          Frederick

                          Maybe something changed then, because that was the first thing I tried back then:
                          https://forum.duet3d.com/topic/23474/probing-outside-allowed-area

                          Perhaps something has changed. I will have to run a test.

                          Thanks for the feedback.

                          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

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

                            @aitor said in [3.4b3] Homing to negative Y doesn't work:

                            Good morning @diamondback

                            https://github.com/Duet3D/RepRapFirmware/wiki/Changelog-RRF-3.x-Beta-&-RC#reprapfirmware-340beta2
                            Where a GCode parameter accepts multiple values, you can no longer use a mixture of literals and expressions (which was previously supported in standalone mode only). However, the whole parameter can now be an array expression. For example, M92 E{var.e1}:400:{var.e3} will no longer work and must be replaced by M92 E{var.e1,400,var.e3}.

                            In your case this is how it should be:

                            M208 X-150:160 Y{global.minY,global.maxY} C0:250 Z0:270     ; set axis minima & maxima
                            

                            Check if you have any more

                            I don't know if this will be the solution for your problem.

                            Best regards

                            Thanks again for this hint, it was indeed the issue. I've read about that specific change in the changelog, but since I wasn't using a mix of variables and literals, I didn't pay any attention.
                            @dc42 maybe worth mentioning that my use case is also changed now (ie using multiple variables)

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