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

    How to get around "insufficent Axes Homed?

    Scheduled Pinned Locked Moved
    General Discussion
    8
    22
    1.5k
    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 @westech
      last edited by fcwilt

      @westech

      What does your homing code look like?

      You don't want to use M564.

      What you can do is use G92 Z0 to force the Z axis to be marked as homed and set it's logical position to 0.

      Frederick

      Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

      westechundefined 1 Reply Last reply Reply Quote 2
      • westechundefined
        westech @fcwilt
        last edited by

        @fcwilt Thanks, I will try G92 Z0 to force the Z axis ...

        My HomeX.g:

        ; homex.g
        ; called to home the X axis
        ;
        M400 ; Wait for motion to stop
        G91 ; Use relative moves
        G1 H2 X0.01 Y0.01 ; Move X a small amount to enable
        M400 ; Wait for stop
        G4 P200 ; Delay to allow TMC to detect stopped state
        M915 p0 s20 H200 r0 ; Configure stall detect
        M574 X1 S3 ; Configure X endstop
        M913 X50 Y50 ; Lower X, Y and Z power
        G4 P200 ; Delay to ensure settings are made
        ; G1 H2 Z5 F2500 ; lift Z relative to current position
        g1 H1 X20 F2000 ; back away from endstop
        M400 ; Wait for stop
        M915 p0 s20 H200 r0 ; Configure stall detect
        G4 P200 ; Delay to ensure settings are made
        G1 H1 X-325 F2500 ; Move towards endstop until it stalls
        M400 ; Wait until all stopped
        M915 p0 s20 H200 r0 ; Configure stall detect
        G4 P200 ; Delay to ensure settings are made
        g1 H1 X10 F2000 ; back away from endstop
        M400
        M915 p0 s20 H200 r0 ; Configure stall detect
        G4 P200
        G1 H1 X-325 F2500 ; Move towards endstop until it stalls
        M915 p0 s20 H200 r0 ; Configure stall detect to be less sensitive
        M400
        G1 X1 F1000 ; Move away from stop and cancel stall
        M400 ; wait complete
        G90 ; Absolute positioning
        M913 X100 Y100 ; back to full power
        ;G1 H2 Z0 F2500 ; Return Z to original position
        M915 P1 S20 H200 R1 ; Report any stalls

        fcwiltundefined infiniteloopundefined 2 Replies Last reply Reply Quote 0
        • fcwiltundefined
          fcwilt @westech
          last edited by

          @westech

          Hi,

          I don't use stall detect but I have tested it once upon a time.

          Your homing code seems way more complicated then it needs to be. While I don't remember exactly what I did it wasn't anywhere near that complicated.

          Perhaps someone who uses stall detect for their printer will jump in and comment.

          Frederick

          Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

          westechundefined 1 Reply Last reply Reply Quote 0
          • infiniteloopundefined
            infiniteloop @westech
            last edited by

            @westech said in How to get around "insufficent Axes Homed?:

            G1 H2 X0.01 Y0.01 ; Move X a small amount to enable

            Hm, why do you move Y in your homex.g?

            1 Reply Last reply Reply Quote 0
            • westechundefined
              westech @fcwilt
              last edited by

              @fcwilt My Home.gs came from a working example for sensorless homing. And it worked. I just copied them out. I commented out the part requiring the Z axis since I don't have a Z motor.

              My X and Y sensorless homing works well.

              achrnundefined 1 Reply Last reply Reply Quote 0
              • achrnundefined
                achrn @westech
                last edited by

                @westech I have a sand table, which is not dissimilar to a pen plotter - it has X and Y, no Z, no extruder, etc.

                My homez.g is just:

                ; homez.g
                ; called to home the Z axis
                ;
                echo "homez.g"
                G92 Z0
                

                With respect to sensorless homing, I use that on X (but not Y). I think your homex.g has more commands than you need, but you might decide that if it's not broke don't fix it.

                In particular, you don't need to keep repeating M915 p0 s20 H200 r0 - that's a setting you can make once. Also, the line M915 p0 s20 H200 r0 ; Configure stall detect to be less sensitive doesn't make much sense, because you're resetting exactly the same configuration, not a less sensitive one. Finally, it may depend on your hardware, but noting that stall detection is less precise and on a plotter-type device super-sub-millimetre homing probably isn't necesary on X or Y, I don't bother with the touch-backoff-touch again dance.

                I use:

                ; homex.g
                ; called to home the X axis
                ;
                echo "homex.g"
                
                M574 X1 S3               ; low end X stop by motor load detection
                M913 X66                 ; reduce motor current to two thirds standard level
                M915 X S40 F0 H200 R0    ; configure sensorless homing on X
                G4 P200                  ; ensure the settings are made
                
                G91                      ; relative moves
                G1 H1 X-400 F4000        ; move to endstop and set this as zero
                
                M913 X100                ; return to full current
                
                G90                      ; return to absolute positioning
                

                Note that I'm using slightly different hardware and the 'S' parameter in my M915 probably isn't appropriate for yours.

                westechundefined 1 Reply Last reply Reply Quote 1
                • westechundefined
                  westech @achrn
                  last edited by

                  @achrn Great info! I do want to clean my homing, But it did get sensorless homing working, and I'd rather not install switches.

                  Do you remove or comment out in you config the Z axis and extruder? I'd like to but don't want to break things. In Marlin if you comment somethings out then these sanity checks error out.

                  True, I don't care about the accuracy of the homing. Just to allow my gcode to "print."

                  Thank

                  achrnundefined dc42undefined 2 Replies Last reply Reply Quote 0
                  • achrnundefined
                    achrn @westech
                    last edited by

                    @westech said in How to get around "insufficent Axes Homed?:

                    Do you remove or comment out in you config the Z axis and extruder?

                    I wrote the config file from scratch, and don't have Z or extruder references.

                    My hardware is not Duet3D (or rip-off-of-Duet3D), so some of the hardware interfacing detail is different (like, for example, in the stall detection the range of credible S values is different). Pin names are different to Duet3D hardware. Also, it's actually a continuous rotation polar mechanism, but the firmware thinks it's a cartesian with a very long Y axis (+/- 3,600,000 long). However, I only define axes that the machine uses:

                    ; Configuration file for Fly-E3-Pro running table
                    ; set up with x axis as radial position in units of mm
                    ; y axis is angular position in degrees
                    ; config file for RRF 3.4.0RC1
                    
                    M550 P"Table"                          ; set printer name
                    M552 S1                                ; enable wifi - DO NOT OMIT
                    
                    ; General preferences
                    G90                                    ; send absolute coordinates
                    
                    ; define as cartesian kinematics but include crosstalk factor on x axis
                    ; radial position driven by 20 tooth 2mm pitch, 
                    ; so 1 revolution (360 degrees) will move position by 40mm, or 1 degree = 1/9mm
                    M669 K0 Y{1/9,1,0}
                    
                    ; Motor drives
                    ; radial position is on driver 0 (X on board) and anticlockwise motor rotation increases radius
                    ; angular position is on driver 3 (E0 on board) and anticlockwise motor rotation increases angle
                    M569 P0 S0 D3 V40                      ; radial physical drive 0 goes backwards using default driver timings and sensorless homing
                    M569 P3 S0                             ; angle physical drive 3 goes backwards using default driver timings
                    M584 X0 Y3                             ; map drivers to axes
                    M350 X16 Y16 I1                        ; configure microstepping with interpolation
                    ; values for table:
                    ; radial drive 1 rev = 200x16 steps = 20*2 = 40mm thus 80 steps/mm
                    ; angular drive 1 rev = 400x16 steps = 16/288*360 = 20 degrees thus 320 steps/deg
                    M92 X80 Y320                           ; set steps per radius and steps/deg
                    ; axis limits
                    M208 X300 Y3600000                     ; allow max posn up to 300mm and +10,000 revolutions
                    M208 S1 X0 Y-3600000                   ; minimum position is 0mm and -10,000 revolutions
                    
                    ; speeds etc
                    M566 X600 Y360                         ; max instantaneous speed changes not yet tuned
                    M203 X20000 Y20000
                    M201 X1000 Y300                        ; set accelerations (mm/s^2 and deg/s^2)
                    
                    ; motors rated current is 1330mA/phase
                    ; typical value is 60% to 90% of the rated current - lower reduces torque, higher increase temperature
                    ; say 75% rated = 1000mA, but while running on test PSU limit to 600
                    ; idle should not be very significant because mechanism does not droop, 
                    ; so set idle current low but leave timeout long so dont lose homed position
                    M906 X600 Y600 I5                      ; set motor currents (mA) and motor idle factor in per cent
                    M84 S600                               ; Set idle timeout to ten minutes
                    
                    ; endstops
                    M574 X1 S3                             ; low-end X stop by motor stall detection
                    M574 Y1 S1 P"ystop"                    ; low-end Y stop by active-high on pin y-stop
                    
                    ; record processor temperature as sensor 9
                    M308 S9 Y"mcu-temp" A"processor"
                    
                    ; Tool
                    M563 P0                              ; define tool 0
                    T0                                   ; select tool 0
                    
                    baird1faundefined 1 Reply Last reply Reply Quote 0
                    • baird1faundefined
                      baird1fa @achrn
                      last edited by

                      @achrn If you have a continuous rotation axis, why not setup like a CNC with an A axis. The A Axis on a CNC is generally setup for continuous rotation. You specify the degree of rotation rather than a coordinate. For homing an A axis you do what others have suggested an just set G92 A0 at the startup of the machine. For the X, you can always just manually move it to the 'Home ' position and then send a G92 X0. It shouldn't be more complicated than that.

                      achrnundefined 1 Reply Last reply Reply Quote 0
                      • achrnundefined
                        achrn @baird1fa
                        last edited by

                        @baird1fa Thanks, I think you may be mixing up two posters. I'm perfectly happy with how my machine works. On the X axis I don't want to "just manually move it to the 'Home ' position and then send a G92 X0" - I have a homex.g file that automatically moves it to the zero position and sets that as zero.

                        I have a mechanical coupling between the axes, so I can't actually treat it as a continuous rotation axis - the motor coordinates for a particular physical position depend on the path to get there, and I want control of the path without always segmenting it (and I'm sometimes writing the gcode by hand).

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

                          @westech using G92 Z0 as @fcwilt suggested is one way of doing it. I think it should also be possible to hide the Z axis using M584 P2, and if you hide it then it shouldn't complain that it is not homed.

                          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

                          achrnundefined 1 Reply Last reply Reply Quote 1
                          • achrnundefined
                            achrn @dc42
                            last edited by

                            @dc42 said in How to get around "insufficent Axes Homed?:

                            I think it should also be possible to hide the Z axis using M584 P2, and if you hide it then it shouldn't complain that t is not homed.

                            That works on mine, thank you. However, you still need a homez.g (though an empty one will do) otherwise you get a warning message about its absence.

                            dc42undefined westechundefined 2 Replies Last reply Reply Quote 1
                            • dc42undefined
                              dc42 administrators @achrn
                              last edited by

                              @achrn said in How to get around "insufficent Axes Homed?:

                              That works on mine, thank you. However, you still need a homez.g (though an empty one will do) otherwise you get a warning message about its absence.

                              Perhaps your homeall.g file includes a call to homez.g?

                              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

                              achrnundefined 1 Reply Last reply Reply Quote 0
                              • westechundefined
                                westech @achrn
                                last edited by

                                @achrn Thanks everyone. a Ton of great info. I will try in little steps all these. I found in working in Marlin, if you make too many changes at once, something breaks and you have to start over.

                                That is how I got my Home.g and config. they seemed to get sensorless working even though they were ugly. Now I will start trimming things back.

                                I had an issue because I did not have thermistors. So it complained and wouldn't setup. So I gave it a min temp of -250c. And then it was happy.:-)

                                Max

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

                                  @westech said in How to get around "insufficent Axes Homed?:

                                  I had an issue because I did not have thermistors. So it complained and wouldn't setup. So I gave it a min temp of -250c. And then it was happy.:-)

                                  The solution for that is to declare no heaters, and declare that the tool or tools use no heaters.

                                  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

                                  westechundefined 1 Reply Last reply Reply Quote 0
                                  • westechundefined
                                    westech @dc42
                                    last edited by

                                    @dc42 So, do you mean to comment those out in config or do I need a specific setting like heaters= 0.

                                    "declare no heaters, and declare that the tool or tools use no heaters"

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

                                      @westech if you use the online configurator to generate config.g then don't declare them.

                                      If you want to edit an existing config.g then comment out any M307, M308 and M950 commands for the sensors and heaters that you don't have, and remove any H parameters from M563 too creation lines.

                                      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

                                      westechundefined 1 Reply Last reply Reply Quote 0
                                      • achrnundefined
                                        achrn @dc42
                                        last edited by

                                        @dc42 Yes, you're right I still had an errant homez.g call in homeall.g. Thanks.

                                        1 Reply Last reply Reply Quote 0
                                        • westechundefined
                                          westech @dc42
                                          last edited by

                                          @dc42 Understood! Thanks!

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