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

    Z configuration for sensors

    Scheduled Pinned Locked Moved
    Duet Hardware and wiring
    6
    34
    1.3k
    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.
    • fcwiltundefined
      fcwilt @Timothee Leblond
      last edited by

      @Timothee-Leblond

      And the MicroProbe is responding to M401 and M402?

      I was never able to get that working. I will try testing my setup again.

      Unrelated but possibly of interest:

      In your homing files you have

      M400
      M913
      M400
      

      As far as I know they are serving no purpose.

      Also for your "coarse" and "fine" homing moves you have the same F values. Normally the "fine" move is done at a much slower speed. I don't see the need to do the same move twice if they are at the same speed.

      Waiting for verification that M401/M402 are working for you.

      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

      Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
      • jay_s_ukundefined
        jay_s_uk @Timothee Leblond
        last edited by

        @Timothee-Leblond you should be using G30 moves to home z, not G1 H1 Z

        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

        Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
        • Timothee Leblondundefined
          Timothee Leblond @fcwilt
          last edited by

          @fcwilt

          Hi Frederick,

          Yes, the M401/M402 commands are working. M42 as well.

          1 Reply Last reply Reply Quote 0
          • Timothee Leblondundefined
            Timothee Leblond @jay_s_uk
            last edited by

            @jay_s_uk

            So should I replace every G1 by G30 in my homez?

            jay_s_ukundefined 1 Reply Last reply Reply Quote 0
            • jay_s_ukundefined
              jay_s_uk @Timothee Leblond
              last edited by

              @Timothee-Leblond https://docs.duet3d.com/User_manual/Connecting_hardware/Z_probe_BLTouch#configuration-1
              See here for an example home all and homez file

              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

              Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
              • Timothee Leblondundefined
                Timothee Leblond @jay_s_uk
                last edited by

                @jay_s_uk

                It looks like what I made initially?
                I have a G1 going to center followed by a G30.

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

                  @Timothee-Leblond said in Z configuration for sensors:

                  M950 P0 C"out6"

                  This should be io6.out not out6 I believe.

                  Are you sure M401 and M402 are working to retract and deploy the pin? What do you have in your deployprobe.g and retractprobe.g files?

                  M558 P9 H10 F250:30 T8000 C"^!io6.in"

                  Your trigger pin is also inverted with the ! , which might lead to the probe triggering before it's even deployed. Are you sure it needs to be inverted?

                  Z-Bot CoreXY Build | Thingiverse Profile

                  Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                  • Timothee Leblondundefined
                    Timothee Leblond @Phaedrux
                    last edited by

                    @Phaedrux

                    I confirm M401/M402 are working with M950 P0 C"out6". On the contrary, it is not using M950 P0 C"io6.out".

                    Deploy

                    ; deployprobe0.g
                    ; called to deploy a physical Z probe
                    ;
                    ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                    
                    M42 P0 S1  ; Deploy probe
                    G4 P500      ; Pause for 500ms to ensure deployment
                    

                    retract

                    ; retractprobe0.g
                    ; called to retract a physical Z probe
                    ;
                    ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                    
                    M42 P0 S0  ; Retract probe
                    G4 P500      ; Pause for 500ms
                    

                    I'm using a BTT not a BlTouch, and it is advised to use ^!io6. in apparently.

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

                      @Timothee-Leblond said in Z configuration for sensors:

                      I'm using a BTT not a BlTouch, and it is advised to use ^!io6. in apparently.

                      understood.

                      Can you show a photo of your probe wiring at the board?

                      When you send G30 manually, the Z axis moves, but the probe does not deploy? But M401/M402 do work?

                      Z-Bot CoreXY Build | Thingiverse Profile

                      Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                      • Timothee Leblondundefined
                        Timothee Leblond @Phaedrux
                        last edited by Timothee Leblond

                        @Phaedrux

                        First of all, when I send G30 it says: "Error: G30: Insufficient axes homed for bed probing".
                        When I try homing, I regularly have the same problem.
                        Right now, when I home all, the X bumps into the wall with a noise, the probe deploys, retracts then deploys and I then have that error message again without the Y being homed.

                        I know my first problem may be due to the stall detection and sensorless homing through M915 in config.g. I've been trying to set it up but I still have some problems.

                        M915 X Y S10 R1 F1 H2  ; set sensorless homing
                        

                        The wiring had been thanks to an other discussion here: https://forum.duet3d.com/topic/37443/wiring-biqu-microprobe-to-duet-rototoolboard/43

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

                          Are you able to home X and Y independantly successfully?

                          Need to get that sorted first. If you want to pretend the axis are homed, you can move them manually to the correct location and then send G92 X0 Y0 to force the axis to be homed and at that position.

                          You can try adding M401 and M402 commands to deploy/retract the probe right before and after you send G30 in your homing files.

                          Z-Bot CoreXY Build | Thingiverse Profile

                          Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                          • Timothee Leblondundefined
                            Timothee Leblond @Phaedrux
                            last edited by Timothee Leblond

                            @Phaedrux

                            For X, homing is making a noise bumping the wall but it seems to work.
                            For Y, I have no problem homing it.

                            However, the home all is problematic.

                            Sending M92 X0 Y0 before homing Z gives the same Error answer.
                            I already have M401/M402 in my homing files before and after G30.

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

                              Can you share your most up to date homing files?

                              Can you capture and share the exact error messages you get and exactly when?

                              Z-Bot CoreXY Build | Thingiverse Profile

                              Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                              • Timothee Leblondundefined
                                Timothee Leblond @Phaedrux
                                last edited by Timothee Leblond

                                @Phaedrux

                                Sure:

                                homeall:

                                ; homeall.g
                                ; called to home all axes
                                ;
                                ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                                
                                ; increase Z
                                G91 ; relative positioning
                                G1 H2 Z5 F6000 ; move Z relative to current position to avoid dragging nozzle over the bed
                                G90 ; absolute positioning
                                
                                ; home XY
                                
                                M400
                                M913
                                M400
                                var xTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm
                                var yTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm
                                G91 ; relative positioning
                                G1 H1 X{-var.xTravel} Y{var.yTravel} F4000 ; coarse home in the -X and -Y directions
                                G1 H2 X5 Y5 F4000 ; move back 5mm
                                G1 H1 X{-var.xTravel} Y{var.yTravel} F1000 ; fine home in the -X and -Y directions
                                G90 ; absolute positioning
                                M400
                                M913
                                M400
                                
                                ; home Z
                                
                                var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0]
                                var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1]
                                G91 ; relative positioning
                                G1 X{var.xCenter} Y{var.yCenter} F1000 ; go to bed centre
                                G90 ; absolute positioning
                                M401
                                G30 ; probe the bed
                                M402
                                
                                

                                homex:

                                ; homex.g
                                ; called to home the X axis
                                ;
                                ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                                
                                ; increase Z
                                G91 ; relative positioning
                                G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed
                                G90 ; absolute positioning
                                M400
                                M913 X40 Y40 ; drop motor current to 40% -> for sensorless homing
                                M400
                                
                                ; home X
                                G91 ; relative positioning
                                var maxTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm
                                G1 H1 X{-var.maxTravel} F3000                            ; coarse home in the -X direction
                                G1 X5 F3000                                             ; move back 5mm
                                G1 H1 X{-var.maxTravel} F1000                            ; fine home in the -X direction
                                G90 ; absolute positioning
                                
                                ; decrease Z again
                                G91 ; relative positioning
                                G1 H2 Z-5 F6000 ; move Z relative to current position
                                G90 ; absolute positioning
                                
                                M400 ; Wait for current moves to finish
                                M913 X100 Y100 ; return current to 100% -> for sensorless homing
                                M400 ; Wait for current moves to finish
                                

                                homey:

                                ; homey.g
                                ; called to home the Y axis
                                ;
                                ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                                
                                ; increase Z
                                G91 ; relative positioning
                                G1 H2 Z5 ; move Z relative to current position to avoid dragging nozzle over the bed
                                G90 ; absolute positioning
                                
                                M400 ; Wait for current moves to finish
                                M913 X40 Y40 ; drop motor current to 70% -> for sensorless homing
                                M400
                                
                                ; home Y
                                G91 ; relative positioning
                                var maxTravel = move.axes[1].max - move.axes[1].min + 5 ; calculate how far Y can travel plus 5mm
                                G1 H1 Y{var.maxTravel} F3000                            ; coarse home in the -Y direction
                                G1 Y5 F3000                                             ; move back 5mm
                                G1 H1 Y{var.maxTravel} F1000                            ; fine home in the -Y direction
                                G90 ; absolute positioning
                                
                                ; decrease Z again
                                G91 ; relative positioning
                                G1 H2 Z-5 F6000 ; move Z relative to current position
                                G90 ; absolute positioning
                                
                                M400 ; Wait for current moves to finish
                                M913 X100 Y100 ; return current to 100% -> for sensorless homing
                                M400 ; Wait for current moves to finish
                                

                                homez:

                                ; homez.g
                                ; called to home the Z axis
                                ;
                                ; generated by RepRapFirmware Configuration Tool v3.5.8 on Tue Dec 10 2024 15:03:23 GMT-0500 (Eastern Standard Time)
                                
                                ; ################# Home Z Preparation ################
                                
                                G91 															; Relative mode
                                G90
                                
                                G1 Z10 F3000       ; Move Z up 10mm to ensure clearance
                                var xCenter = move.compensation.probeGrid.mins[0] + (move.compensation.probeGrid.maxs[0] - move.compensation.probeGrid.mins[0]) / 2 - sensors.probes[0].offsets[0]
                                var yCenter = move.compensation.probeGrid.mins[1] + (move.compensation.probeGrid.maxs[1] - move.compensation.probeGrid.mins[1]) / 2 - sensors.probes[0].offsets[1]
                                G1 X{var.xCenter} Y{var.yCenter} F4000 ; go to bed centre															; Back to absolute positioning
                                M401
                                G30
                                M402 ; retract probe
                                

                                config.g:

                                ; Default config.g template for DuetPi
                                ; Replace this with a proper configuration file (e.g from https://configtool.reprapfirmware.org)
                                
                                ; Display initial welcome message
                                M291 P"You are operating an SBC image in standalone mode. Please see <a href=""https://www.duet3d.com/StartHere"" target=""_blank"">here</a> further information." R"Welcome to your new Duet 3!" S1 T0
                                
                                ; Enable PanelDue
                                M575 P1 B57600 S1
                                
                                ; Enable network
                                ; M552 P0.0.0.0 S1
                                
                                ; Configuration file for RepRapFirmware on Duet 3 Mini 5+ Ethernet
                                ; executed by the firmware on start-up
                                ;
                                ; generated by RepRapFirmware Configuration Tool v3.5.8 on Fri Dec 13 2024 08:59:52 GMT-0500 (Eastern Standard Time)
                                
                                ; General
                                G90 ; absolute coordinates
                                M83 ; relative extruder moves
                                M550 P"Duet 3" ; set hostname
                                M915 X Y S10 R1 F1 H2  ; set sensorless homing
                                
                                M302 P1   ; Allow cold extrusion
                                
                                ; Accessories
                                M575 P1 S0 B57600 ; configure PanelDue support
                                
                                ; Wait a moment for the CAN expansion boards to become available
                                G4 S2
                                
                                ; Smart Drivers
                                M569 P0.0 S1 D3 V188; driver 0.0 goes forwards (X axis) -> D3 is for stealthChop mode = enable stall detection
                                M569 P0.1 S1 D3 V188; driver 0.1 goes forwards (Y axis) -> D3 is for stealthChop mode = enable stall detection
                                M569 P0.2 S1 D2 V188; driver 0.2 goes forwards (Z axis) -> D3 is for stealthChop mode = enable stall detection
                                M569 P121.0 S0 D2 ; driver 20.0 goes forwards (extruder 0)
                                
                                ; Motor Idle Current Reduction
                                M906 I30 ; set motor current idle factor
                                M84 S30 ; set motor current idle timeout
                                
                                ; Axes
                                M584 X0.0 Y0.1 Z0.2 ; set axis mapping
                                M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
                                M906 X800 Y800 Z800 ; set axis driver currents
                                M92 X80 Y80 Z400 ; configure steps per mm
                                M208 X-6:310 Y0:310 Z-5:405 ; set minimum and maximum axis limits
                                M566 X900 Y900 Z12 ; set maximum instantaneous speed changes (mm/min)
                                M203 X6000 Y6000 Z180 ; set maximum speeds (mm/min)
                                M201 X500 Y500 Z20 ; set accelerations (mm/s^2)
                                
                                ; Extruders
                                M584 E121.0 ; set extruder mapping
                                M350 E16 I1 ; configure microstepping with interpolation
                                M906 E800 ; set extruder driver currents
                                M92 E100 ; configure steps per mm
                                M566 E120 ; set maximum instantaneous speed changes (mm/min)
                                M203 E3600 ; set maximum speeds (mm/min)
                                M201 E250 ; set accelerations (mm/s^2)
                                
                                ; Kinematics
                                M669 K0 ; configure Cartesian kinematics
                                
                                ; Probes
                                
                                M950 P0 C"out6"                              ; Set servo output on Mini 5+ 
                                M558 P9 H30 F250:30 T8000 C"^!io6.in"            ; Set probe input to IO_6 on Mini 5+
                                G31 P500 X0 Y0 Z20                                  ; set Z probe trigger value, offset and trigger height
                                
                                ;M950 S0 C"121.io0.out"                              ; Set servo output on Rototoolboard
                                ;M558 P9 H6 F250:30 T8000 C"^!121.io0.in"            ; Set probe input to IO_0 on Rototoolboard
                                ;G31 P500 X0 Y0 Z0                                  ; set Z probe trigger value, offset and trigger height
                                
                                ; Endstops
                                M574 X1 S3                            ; configure X axis endstop
                                M574 Y1 S3                            ; configure Y axis endstop
                                M574 Z1 S2                            ; configure Z axis endstop
                                M915 X Y R0 F0
                                
                                ; Tools
                                M563 P0 S"MainExtruder" D0 ; create Tool 0 using Extruder Drive 0
                                G10 P0 S0 R0 ; set Tool 0 active and standby temperatures to 0
                                T0 ; select Tool 0 at startup
                                

                                I had the error: Error: G30: Insufficient axes homed for bed probing when trying to home all axes at the same time. For some reasons after I restarted the printer, I seem I no longer have it.
                                However, when I home all or home Z or send G30, the extuder gets all the way down ignoring the probe, hitting the bed. When I manually activate the pin of the probe before it reaches bed, this error appears: Error: G4: Probe already triggered at start of probing move.

                                On top of that, it is not going to the center of the bed before probing and my X axes make a noise when homing which I can't solve.

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

                                  @Timothee-Leblond

                                  For the sake of simplicity and not duplicating code this is how I code homeALL.g.

                                  M98 P"homeZ.g"
                                  M98 P"homeY.g"
                                  M98 P"homeX.g"
                                  

                                  You can change the order as best for your printer.

                                  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

                                  Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                                  • Timothee Leblondundefined
                                    Timothee Leblond @fcwilt
                                    last edited by

                                    @fcwilt
                                    Thanks for the tip, I'll do that in the future.

                                    But I'm not sure it will solve my problem right?

                                    fcwiltundefined dc42undefined 2 Replies Last reply Reply Quote 0
                                    • fcwiltundefined
                                      fcwilt @Timothee Leblond
                                      last edited by

                                      @Timothee-Leblond said in Z configuration for sensors:

                                      @fcwilt
                                      Thanks for the tip, I'll do that in the future.

                                      But I'm not sure it will solve my problem right?

                                      No, nothing to do with your problem - it just makes things a bit simpler in that if you make a change to homing code for one axis (X Y or Z) you don't need to make the same change to homeALL.g

                                      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

                                      Timothee Leblondundefined 1 Reply Last reply Reply Quote 0
                                      • Timothee Leblondundefined
                                        Timothee Leblond @fcwilt
                                        last edited by

                                        @fcwilt

                                        This is smart, thank you though!

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

                                          I'm kind of at a loss for your probe issue. It's confusing why M401 would work to deploy the pin manually but not during the homing move.

                                          Have you tried manually positioning he probe at the center of the bed and then sending M401 and G30 to deploy and start probing?

                                          Z-Bot CoreXY Build | Thingiverse Profile

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

                                            @Timothee-Leblond what happens if you do the following:

                                            1. Position the probe a long way above the bed.
                                            2. Either home X and Y, or send e.g. G92 X0 Y0 to make RRF consider that X and Y have been homed.
                                            3. Send M401 and check that the probe deploys.
                                            4. Send G30. Before the probe pin touches the bed, manually push it up to trigger the probe.
                                            5. If the probing move doesn't stop, turn the printer off to prevent the probe crashing into the bed.

                                            If at step 4 RRF reports that the probe is already triggered at the start of the probing move, that means you need to use C"io6.in" instead of C"!io6.in" . Either way, don't include the ^ character because that will reduce the noise margin.

                                            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

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