• Tags
  • Documentation
  • Order
  • Register
  • Login
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.
  • undefined
    Diamondback
    last edited by 25 Aug 2021, 10:40

    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.

    undefined undefined 2 Replies Last reply 25 Aug 2021, 10:48 Reply Quote 0
    • undefined
      jay_s_uk @Diamondback
      last edited by 25 Aug 2021, 10:48

      @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
      • undefined
        Aitor @Diamondback
        last edited by 25 Aug 2021, 10:51

        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

        undefined 1 Reply Last reply 26 Aug 2021, 20:43 Reply Quote 4
        • undefined
          Diamondback
          last edited by 25 Aug 2021, 10:53

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

          undefined 1 Reply Last reply 25 Aug 2021, 14:22 Reply Quote 0
          • undefined
            fcwilt @Diamondback
            last edited by 25 Aug 2021, 14:22

            @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

            undefined 1 Reply Last reply 25 Aug 2021, 14:24 Reply Quote 0
            • undefined
              Diamondback @fcwilt
              last edited by 25 Aug 2021, 14:24

              @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.

              undefined 1 Reply Last reply 25 Aug 2021, 14:33 Reply Quote 0
              • undefined
                fcwilt @Diamondback
                last edited by 25 Aug 2021, 14:33

                @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

                undefined 1 Reply Last reply 25 Aug 2021, 15:45 Reply Quote 1
                • undefined
                  Diamondback @fcwilt
                  last edited by 25 Aug 2021, 15:45

                  @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.

                  undefined 1 Reply Last reply 25 Aug 2021, 15:48 Reply Quote 0
                  • undefined
                    fcwilt @Diamondback
                    last edited by 25 Aug 2021, 15:48

                    @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

                    undefined 1 Reply Last reply 25 Aug 2021, 16:11 Reply Quote 0
                    • undefined
                      Diamondback @fcwilt
                      last edited by 25 Aug 2021, 16:11

                      @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

                      undefined 1 Reply Last reply 25 Aug 2021, 16:27 Reply Quote 0
                      • undefined
                        fcwilt @Diamondback
                        last edited by 25 Aug 2021, 16:27

                        @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
                        • undefined
                          Diamondback @Aitor
                          last edited by 26 Aug 2021, 20:43

                          @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
                          10 out of 12
                          • First post
                            10/12
                            Last post
                          Unless otherwise noted, all forum content is licensed under CC-BY-SA