Endstop for additional axis - coupler for tool changer



  • Hey guys,

    I am currently setting up firmware for a custom toolchanger. I use a stepper motor to actuate the coupler and want to home that using an endstop.
    I really don't know how to Set this Up properly. I have the Stepper on the DUEX5 in Drive 5 / E2 moving the axis works (If I use G92 C0 before hand).
    The Endstop is connected to E2 endstop Input.

    How can I tie that Endstop to the Axis?
    Somehow it does Not Work...

    In DWC the Endstop for the coupler C is shown for E2 - which is correct. Somehow the values (current, acc, jerk etc) I defined for Drive 5 / E2 / coupler are used for E0 instead. The Values for E0 and E1 are used for E1 and E2....any suggestions what the problem is (see attached picture).

    ; Configuration file for Duet Maestro (firmware version 1.21)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2 on Sun Apr 14 2019 11:30:53 GMT+0200 (MitteleuropƤische Sommerzeit)
    
    ; General preferences
    G90                                         ; Send absolute coordinates...
    M83                                         ; ...but relative extruder moves
    M667 S1                                     ; Select CoreXY mode
    
    ; Network
    M550 P"MacNite C1"                            ; Set machine name
    M552 S1                                       ; Enable network
    M586 P0 S1                                    ; Enable HTTP
    M586 P1 S0                                    ; Disable FTP
    M586 P2 S0                                    ; Disable Telnet
    
    ; Drives
    M569 P0 S0                                  ; Drive 0 x goes backwards
    M569 P1 S0                                  ; Drive 1 y goes backwards
    M569 P2 S0                                  ; Drive 2 z goes forwards
    M569 P3 S0                                  ; Drive 3 goes backwards
    M569 P5 S0				    ; Drive 5 for coupler goes backwards
    
    ; microsepping & motion settings
    M584 X0 Y1 Z2 E3:4 C5		            	; map drives 0 to 2 to x,y,z, 3 to E1, 5 to coupler
    M350 X16 Y16 Z16 E16:16 C8 I1                  	; Configure microstepping with interpolation
    M92 X80 Y80 Z1600 E415:415 C4096         	; Set steps per mm
    M84 S30                                     	; Set idle timeout
    M906 X1500 Y1500 Z1400 E1300:1300 C300 I30	; Set motor currents (mA) and motor idle factor in percent
    M566 X600 Y600 Z12 E300:300 C2       		; Set maximum instantaneous speed changes (mm/min)
    M203 X50000 Y50000 Z1000 E9000:9000 C100	; Set maximum speeds (mm/min)
    M201 X1200 Y1200 Z500 E900:900 C10     		; Set accelerations (mm/s^2)
    
    ; Axis Limits
    M208 X310 Y240 Z300 C20 S0                      ; Set axis maxima
    M208 X0 Y-40 Z0 C0 S1                          	; Set axis minima
    
    ; Endstops
    M574 Y2 S0                               	; Set active high endstops
    M574 X1 C2 S1					; Set active low endstops
    
    ; Open Door Switch
    ; M581 T2 Z S1 C1			    ; additional trigger #2 (calls trigger2.g), connected on z-endstop, trigger on  rising edge, only trigger while printing
    
    ; Z-Probe
    M574 Z1 S2				; Set endstops controlled by probe
    M558 P4 H5 F120 T6000 C2		; Set Z probe type to unmodulated and the dive height + speeds
    G31 P500 X0 Y35 Z0			; Set Z probe trigger value, offset and trigger height
    M557 X45:275 Y5:235 S45			; Define mesh grid
    
    ; Heaters
    M307 H0 B0 S1.00                            ; Disable bang-bang mode for the bed heater and set PWM limit
    M305 P0 T100000 B4138 R4700
    M143 H0 S120                                ; Set temperature limit for heater 0 to 120C
    M305 P1 T100000 B4725 C7.060000e-8          ; Set thermistor + ADC parameters for heater 1
    M143 H1 S280                                ; Set temperature limit for heater 1 to 280C
    M305 P2 T100000 B4725 C7.060000e-8          ; Set thermistor + ADC parameters for heater 1
    M143 H2 S280                                ; Set temperature limit for heater 1 to 280C
    M305 P103 T100000 B3950 X2 S"Chamber"       ; virtual heater 103 uses 100k NTC at Thermistor Input 3 (C)
    
    ; Fans
    M106 P0 S0 B1 I0 F100 H-1		       	; part cooling fan on fan0
    M106 P2 S1 B1 I0 F500 H1 T45                   	; coldend fan on fan2, standard on, Thermostatic control on at 45C associated to heater 1 (hotend1)
    ;M106 P3 S1 B1 I0 F500 H2 T45 		       	; coldend pump on fan3, standard on, Thermostatic control on at 45C associated to heater 2 (hotend2)
    ;M106 P1 S0 B1 I0 F100 H-1		       	; part cooling fan on fan1
    M106 P4 S0 I0 F500 H103 T55 L255 B30     	; fan 1 uses logical pin 2, controlled by heater 103	
    
    ; LED
    M106 P1 I0 S0 H-1 		    		; signal line for LED at fan1
    
    ; Tool 0
    M563 P0 S"E3D V6" D0 H1 F0                            ; tool 0 uses extruder 0,heater 1 and fan 0
    G10 P0 X0 Y0 Z0                             ; Set tool 0 axis offsets
    G10 P0 R0 S0                                ; Set initial tool 0 active and standby temperatures to 0C
    
    ; Tool 1
    M563 P1 S"BigBooster" D1 H2 F1                            ; tool 0 uses extruder 0,heater 1 and fan 0
    G10 P1 X0 Y0 Z0                             ; Set tool 0 axis offsets
    
    ; Filament Runout
    M591 D0 P1 C3 S1
    
    ; Automatic saving after power loss is not enabled
    
    ; Miscellaneous
    M501                                        ; Load saved parameters from non-volatile memory
    ;M572 D0 S0.05				    ; set pressure advance
    
    

    Unbenannt.png



  • Maybe this (from wiki) : M584 must come earlier in config.g than any M350 and M906 commands. If it creates new axes, it must also be earlier than any M92, M201, M203, M208, M350, M566, M574 , M667 and M669 commands.



  • That is really interesting and must be an error within the wiki / documentation. I have multiple printers where M584 comes AFTER M667 S1. But I just tried it (moving M584 up, Moving M667 down) and it did not solve the problem.

    Thanks for the suggestion!

    In addition:
    I got these buttons in DWC for the C-Axis (connected to E2 on Duex5). If I use "G92 C0" I can move the axis / coupler in my defined limits between 0 and 4.

    1.PNG

    This is really strange. Because DWC shows that these limits are defined for the E0-Drive, not E2. If I half the steps/mm for the C-Axis (2096 instead of 4096) I can see that the coupler moves half the way - so it seems correct. Maybe the display in DWC is just wrong?

    But this won't help me....I still can't figure out how to tie the Endstop for C to the C-Axis.

    This is my homec.g file - but the coupler does not stop when the endstop is hit. If I hit the endstop manual and look in DWC it flags at E2, not at E0 where all the values seem to be "stored" (see picture).

    ; homec.g
    ; called to home the C axis (coupler  for tool changer
    ;
    ; generated by MacNite, 2019-10-13
    
    G91               	; relative positioning
    G1 S1 C2 F300 	; move quickly to X axis endstop and stop there (first pass)
    G1 C1 F1000       	; go back a few mm
    G1 S1 C2 F30  	; move slowly to X axis endstop once more (second pass)
    G90               	; absolute positioning
    
    
    

    2.png



  • One more, probably stupid suggestion : try to change order in M584 command so, that E axis are last ones, like M584 X0 Y1 Z2 C5 E3:4



  • I tried that already - because I looked in the E3D Toolchanger config and it is done there in this way šŸ˜„
    I also tried renaming the axis to U instead of C...did not help either.



  • From my understanding this is why RRF 3.0 was introduced. There you are able to map any endstop pin to s independent axis or not?


  • administrators

    @smoki3 said in Endstop for additional axis - coupler for tool changer:

    From my understanding this is why RRF 3.0 was introduced. There you are able to map any endstop pin to s independent axis or not?

    Correct. In RRF2, endstops are allocated to new axes in the order in which you create them. So if the only axis you create is the C axis, it will use the E0 endstop input, regardless of which motor you use to drive it.



  • @dc42

    That is really interesting and annoying at the same time.
    So I could Just Setup everything with the C Axis on E0 (Drive + Endstop) and then use E1 to E7 for extruders with Filament Runout.

    Greets
    Max


  • administrators

    @MacNite said in Endstop for additional axis - coupler for tool changer:

    @dc42

    That is really interesting and annoying at the same time.
    So I could Just Setup everything with the C Axis on E0 (Drive + Endstop) and then use E1 to E7 for extruders with Filament Runout.

    Greets
    Max

    You can connect the C drive motor to whatever output you want, but the C endstop switch must be connected to the E0 endstop input. Filament runout sensors can be connected to any spare endstop inputs (including Z if you use a Z prove to home Z).



  • Yes and no.

    This make the setup "functional". But it will not use the wrong display of the Drive Configuration in DWC - Machine properties. The settings (see picture above) show the min, max instandDV etc. linked to E0, while they are in fact linked to drive E2 / C.

    To bypass this error within DWC I have to switch my whole setup to use E0 for the C-Axis instead of E2.

    Greets
    Max



  • Update:
    I switched the coupler (C-axis) from E2 to E0 (Endstop + Stepper), Extruders are now E1, E2 and so on.

    It works flawless in this way.


Log in to reply