Duet3D Logo

    Duet3D

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Documentation
    • Order

    Mapping Endstops

    My Duet controlled machine
    6
    21
    488
    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.
    • Lukrative
      Lukrative last edited by

      My printer runs on a maestro with an expansion board. E0, E1, and E2 are currently used, and I plan on using E3 to operate an experimental tool changer design that I'm working on. I need to home the tool changer.

      Since I'm not using any of the endstops for E0-E2, is it possible to map the E0 endstop to E3?

      What about using two endstops for E3 min/max?

      Thanks!

      1 Reply Last reply Reply Quote 0
      • Veti
        Veti last edited by

        yes with rrf3 you can remap pins how you like.

        two endstops make no sense. movement would not stop even if the endstop is hit.
        you specify the max and min of the axis and it wont move past that.

        1 Reply Last reply Reply Quote 0
        • fma
          fma last edited by

          @Veti said in Mapping Endstops:

          two endstops make no sense. movement would not stop even if the endstop is hit.
          you specify the max and min of the axis and it wont move past that.

          I disagree: real endstops are very usefull, in case you make a mistake with a G92 command...

          Frédéric

          1 Reply Last reply Reply Quote 0
          • Veti
            Veti last edited by

            @fma said in Mapping Endstops:

            I disagree: real endstops are very usefull,

            in duet unless there is a S1 in the move command, endstop triggering is ignored.

            1 Reply Last reply Reply Quote 0
            • fma
              fma last edited by

              Yes, I know; that's why I said 'real endstops'.

              They should be named 'homing switchs', not endstops...

              Frédéric

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

                @fma said in Mapping Endstops:

                They should be named 'homing switchs', not endstops...

                That is exactly what I often call them.

                You can use M581 to set up an emergency stop if a switch at either end of an axis is triggered unexpectedly.

                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

                1 Reply Last reply Reply Quote 0
                • Lukrative
                  Lukrative last edited by

                  So if I understand correctly, I can map the limit switch from E0 to E3 pretty easily with an M574 command. I would just need to upgrade to RRF 3.

                  However, I want limit switches on both ends because I want the toolchanger to have a sort of closed loop control to assure that it makes it all the way to each end of its travel in both directions. I could then put adjustment screws on both ends to fine tune the positioning of the tool changer.

                  Is it possible to make a trigger in an M581 command behave the same way as a limit switch used in homing?

                  Danal 1 Reply Last reply Reply Quote 0
                  • Danal
                    Danal @Lukrative last edited by

                    @Lukrative You can use the S1 (H1 in RRF3) or S3 (H3 in RRF3) option in G1 commands to reset axis limits to where it physically finds the switch. I think that's what you are trying to do with the toolchanger... maybe.

                    Is it a "go pick up and lock a tool" type changer? Or ?? Any photos?

                    Delta / Kossel printer fanatic

                    Lukrative 1 Reply Last reply Reply Quote 0
                    • Lukrative
                      Lukrative @Danal last edited by

                      @Danal Strictly speaking it's more of a filament changer. It's very similar to the Prusa MMU2, but with only two filaments. My printer design has two bowden extruders which feed into a y splitter, and from there into a direct drive extruder. So at any given point in time, there is one filament being driven by two extruders in series, with the other bowden extruder just holding on to the other filament.

                      The problem I see with doing dual extrusion this way is that the tips become shaped in an inconsistent fashion after retracting them from the hot end, often leading to stringy tips. After a number of tool changes, these strings pile up and bind the filament being loaded, leading to a jam.

                      My filament changer will incorporate a mechanism just after each bowden extruder that cuts the filament, moves the bowden tube laterally out of alignment with the extruder, and uses compressed air fed into the print head side of the bowden tube to eject the tip that was cut off. I'm hoping that the compressed air will force the strings out of the bowden tubes before they have a chance to pile up.

                      The limit switches would be used after each filament change to precisely re-align the bowden tube with its extruder so that filament could be advanced through it. As I only have one more stepper driver available (even with the expansion board), the mechanism will use only one stepper. It is for this reason that I want limit switches on both ends.

                      I'm still putting together a proof of concept to make sure that blowing compressed air into the bowden tube will even push stringy filament tips out. After that I will finish the model of the filament changer.

                      For reference, this is what my printer looks like now:
                      https://imgur.com/259eiRH

                      1 Reply Last reply Reply Quote 0
                      • Danal
                        Danal last edited by

                        Thank you! Very nifty.

                        Delta / Kossel printer fanatic

                        1 Reply Last reply Reply Quote 0
                        • Danal
                          Danal last edited by Danal

                          With regard to the limit switches, whatever axis is defined for that driver that moves the bowden laterally, that axis can have two limit switches. You can move at high speed near the switches, then probe for them. You can also wire two NC switches in series and treat them as a single input. Several tool changing printers do this on their tool lock.

                          Example of probing the low switch:

                          G1 U10 F1000
                          G1 H1 U0 F100 ; H1 at low end, H3 at high end.

                          You may or may not want to reset axis limits after H1/H3. They do set them to the probe point. Repeat probes won't go past the limits. I normally reset them.

                          Delta / Kossel printer fanatic

                          Lukrative 1 Reply Last reply Reply Quote 0
                          • Lukrative
                            Lukrative @Danal last edited by

                            @Danal So assuming I wired two NC endstops in series, my config file would look something like this?

                            M584 U6 ; use drive 6 for the U axis
                            M574 U1 S1 ; U axis endstop on low end, active high

                            What about if I wanted to use two separate limit switches? Would this work?

                            M584 U6 V6
                            M574 U1 V2 S1

                            Then I could create homing files for the U and V axes, where "home U" is move to the low end and "home V" is move to the high end. Then I could put in an if statement (in the homeu.g file) where while homing U, it will back off of the endstop if it's already triggered, but not if it's already away from it.

                            Is there any reason this wouldn't work?

                            1 Reply Last reply Reply Quote 0
                            • Danal
                              Danal last edited by Danal

                              That would probably work, but there is no need for V.

                              U can have a high and a low homing switch.

                              Probe with H1 when near the low. Edit: "when trying to find" is probably better phrase than "near"

                              Probe with H3 when near the high. Edit: Ditto

                              Delta / Kossel printer fanatic

                              1 Reply Last reply Reply Quote 0
                              • Danal
                                Danal last edited by Danal

                                M574 U1 S1
                                M574 U2 S1

                                Delta / Kossel printer fanatic

                                Lukrative dc42 2 Replies Last reply Reply Quote 0
                                • Lukrative
                                  Lukrative @Danal last edited by

                                  @Danal

                                  Lovely! Thanks for the reply.

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

                                    @Danal said in Mapping Endstops:

                                    M574 U1 S1
                                    M574 U2 S1

                                    That's not supported (yet). The second command will override the first.

                                    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

                                    1 Reply Last reply Reply Quote 0
                                    • Danal
                                      Danal last edited by Danal

                                      Oh drat. @dc42, Thanks for the clarification!

                                      @Lukrative then wire two NC switches in series, and you can still use H1, with appropriate numeric coordinates to find hi or lo.

                                      I know this works, because the U axis for my toolchanger is wired and configured this way.

                                      Delta / Kossel printer fanatic

                                      1 Reply Last reply Reply Quote 0
                                      • Danal
                                        Danal last edited by Danal

                                        To expand on that:

                                        Homing U uses a microswitch in a very conventional fashion. Homing unlocks a tool.

                                        The second switch, wired in series with the first, is between two disks with a spring arrangement such that when locking a tool, the lock reaches a certain amount of torque and the spring stretches and the disks move in relation to each other, thus opening the second switch.

                                        This forms a "torque sensor" so the lock is moved to a specific torque (not a specific position) when locking a tool.

                                        Tool Unlock Macro. Moving the same direction that homing moves, that is, toward 0 (rotation), in this case via negative numbers because we want a relative move. Note the H1.

                                        G91                 ; Set relative movements
                                        G1 U-4 F9000 H2     ; Back off the limit switch with a small move
                                        G1 U-360 F9000 H1   ; Perform up to one rotation looking for the home limit switch
                                        G90                 ; Restore absolute movements
                                        

                                        Tool lock macro. Note the H1, even though we are now rotating positive it is still H1, not H3. Only one (logical) switch... that is really two physical, one at 'each end'.

                                        ; Engage the toolchanger lock
                                        
                                        G91                 ; Set relative mode
                                        G1 U10 F9000 H0      ; Back off the limit switch with a small move
                                        G1 U360 F9000 H1    ; Perform up to one rotation looking for the torque limit switch
                                        G90                 ; Set absolute mode
                                        

                                        This all applies directly to your linear axis. Two switches, series wired, always probe with H1, relative moves set positive/negative for the appropriate end.

                                        Make sense?

                                        Delta / Kossel printer fanatic

                                        1 Reply Last reply Reply Quote 0
                                        • Lukrative
                                          Lukrative last edited by

                                          @Danal It's good to know that wiring in series is an option, but I want my tool change macros to work even if somehow the filament changer is out of alignment or if I'm just starting the machine. For example, suppose I call tool 0, which is on the left side of my printer. If the filament changer is already at the left endstop, I want it to move off the endstop to the right first, then go back to the endstop. If it's sitting at the right endstop, I would like it to just move to the left endstop without moving to the right first. As far as I understand, RRF3 allows you to do this with conditional statements. But if both endstops are wired in series, there's no way of knowing which of these options to choose without prior information.

                                          @dc42 is this a viable method of tricking the firmware into having min and max endstops?

                                          M584 U6 V6
                                          M574 U1 V2 S1

                                          1 Reply Last reply Reply Quote 0
                                          • jay_s_uk
                                            jay_s_uk last edited by

                                            I remap my endstops within my tool locking and unlocking macros.

                                            ; Engage the toolchanger lock
                                            
                                            M400                    ; Make sure everything has stopped before we make changes
                                            
                                            ; ################## Prepare Axis #########################
                                            M584 P4			; Unhides U axis
                                            
                                            ; ################## Endstop Mapping ######################
                                            M574 U2 S3        				; set U axis (tool changer) maxima to use motor stall
                                            
                                            ;################### Stall Detection ######################
                                            
                                            M915 U S3 F0 H20 R4700				; Coupler
                                            
                                            ;################### Locking Procedure ####################
                                            G91                     ; Use relative positioning
                                            G1 H1 U180 F5000 	; Move all carriages up 700mm, stopping at the endstops
                                            G90                     ; Back to absolute positioning
                                            
                                            ; ################## Reset System #########################
                                            M584 P3			; Hides U axis
                                            
                                            ; Unlock the toolchanger lock
                                            
                                            M400                    ; Make sure everything has stopped before we make changes
                                            
                                            ; ################## Prepare Axis #########################
                                            M584 P4			; Unhides U axis
                                            
                                            ; ################## Endstop Mapping ######################
                                            M574 U1 S1 P"io3.in"                    	; configure active-high endstop for low end on U via pin io3.in
                                            
                                            ;################### Locking Procedure ####################
                                            G91                     ; Use relative positioning
                                            G1 H1 U-90 F5000 	; Move all carriages up 700mm, stopping at the endstops
                                            G1 H1 U5 F5000
                                            G90                     ; Back to absolute positioning
                                            
                                            ; ################## Reset System #########################
                                            M584 P3			; Hides U axis
                                            

                                            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 0
                                            • Danal
                                              Danal last edited by Danal

                                              No problem... at startup, home, just like any other axis. I can't overstress that I'm doing EXACTLY what you are doing, just in a circle instead of a line. It all works. No jams, no funny startups. G28 and/or G28 U work normally. etc, etc, etc.

                                              Do include homeu.g in homeall.g

                                              homeu.g

                                              G91                     ; Set relative mode
                                              G1 U-360 F9000 H1       ; Big negative move to search for home endstop
                                              G1 U6 F600              ; Back off the endstop
                                              G1 U-10 F600 H1         ; Find endstop again slowly
                                              G90                     ; Set absolute mode
                                              

                                              Jay is remapping so he can use stall detect. Which also works great, after you tune it. (Jay and I talk a lot on the Jubilee discord).

                                              Delta / Kossel printer fanatic

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