Navigation

    Duet3D Logo

    Duet3D

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

    Help with M669 etc

    General Discussion
    6
    34
    154
    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.
    • luckyflyer
      luckyflyer last edited by luckyflyer

      I have my core xy printer setup with (as I stand in front of the printer) the right rear motor going to drive 0 and the left motor going to drive 1, I realize this is reversed from norm but if I can keep it the way it is the wiring looks nicer but certainly can change it if necessary. Also I have my Y optical limit switch at the rear.

      M669 K1 ; select CoreXY mode

      My M569 config is,
      M569 P0.0 S1 ; physical drive 0.0 goes forwards
      M569 P0.1 S1 ; physical drive 0.1 goes forwards

      The M574 endstop config is,
      M574 X1 S1 P"!io1.in" ; configure active-low endstop for low end on X via pin io1.in
      M574 Y1 S1 P"!io2.in" ; configure active-low endstop for low end on Y via pin io2.in

      The above configuration works except that the prints are mirrored. I then tried with drive 0 going to the right motor and drive 1 going to the left and putting the y endstop at the front of the printer. It now homes at left front and the prints are normal, not mirrored. However I prefer home to be left rear. I'm pretty sure that this can be configured with the right combination of M669, M569 and M574. I have tried several combinations but have not got it to work. Can someone help me out with this?

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

        Have you tried

        M569 P0.0 S0 ; physical drive 0.0 goes backwards
        M569 P0.1 S0 ; physical drive 0.1 goes backwards
        
        1 Reply Last reply Reply Quote 0
        • luckyflyer
          luckyflyer last edited by

          Seems like I did I've tried many, I'll try again and get back.

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

            That doesn't work, wants to home to the right front.

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

              M669 is a tough command to fully understand because there is no explanation of what effects different coefficients have on movement for core xy.

              OwenD 1 Reply Last reply Reply Quote 0
              • OwenD
                OwenD @luckyflyer last edited by

                @luckyflyer
                I don't have a corexy but this seems to cover it well
                Step by step CoreXY firmware setup

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

                  I am not certain, because I have no way to test this, but I believe this would work for you:

                  Set it up as though everything were wired to defaults. Then in your M584 (mine looks like this):

                  ; Axis to driver mapping
                  M584 X0 Y1 U2 Z3:4:5        ; X and Y for CoreXY.  U for toolchanger lock. Z for bed
                  M584 E1.0:1.1:2.0:2.1       ; Extruders for four tools. 
                  

                  Tell it what drivers X and Y are actually plugged into, like this:

                  ; Axis to driver mapping
                  M584 X1 Y0 U2 Z3:4:5        ; X and Y for CoreXY.  U for toolchanger lock. Z for bed
                  M584 E1.0:1.1:2.0:2.1       ; Extruders for four tools. 
                  

                  Delta / Kossel printer fanatic

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

                    I did use M584 to address the wiring issue that I mentioned above. So if I'm not mistaken on a core xy Y is right rear and X is left rear, correct

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

                      I've put it back to home left front, not my first choice but prints normally. I do think it possible to configure the way I would like, I just don't know how to do it.

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

                        @luckyflyer said in Help with M669 etc:

                        I did use M584 to address the wiring issue that I mentioned above. So if I'm not mistaken on a core xy Y is right rear and X is left rear, correct

                        Correct, at least for mine where I have rotated (but not mirrored) 0,0 to back right.

                        Delta / Kossel printer fanatic

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

                          @luckyflyer said in Help with M669 etc:

                          I've put it back to home left front, not my first choice but prints normally. I do think it possible to configure the way I would like, I just don't know how to do it.

                          What does your M584 look like now?

                          Delta / Kossel printer fanatic

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

                            It sounds like what you want, is how I have mine running, which is a BLV cube (CoreXY variant). It has the y endstop at the left rear. 0,0 is still at the front left. Does this match your intent? If so I can share my config.g file.

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

                              Current m584,
                              M584 X0.1 Y0.0 Z0.2 E0.3

                              1 Reply Last reply Reply Quote 0
                              • luckyflyer
                                luckyflyer @Nuramori last edited by

                                @Nuramori said in Help with M669 etc:

                                It sounds like what you want, is how I have mine running, which is a BLV cube (CoreXY variant). It has the y endstop at the left rear. 0,0 is still at the front left. Does this match your intent? If so I can share my config.g file.

                                So when you home does you h.e. move to the left front? I would like for my h.e. to home to the left rear, if yours does that then yes I would like to see your config.g.

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

                                  When I perform homing on the axis’, the x homes to the left edge, the y homes to the rear where the endstop is.

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

                                    Here's my config.g file. I am using a toolboard, so there's a bit more than usual complexity I suppose, but I think where you're going to find what you're looking for is the section for "ENDSTOPS", where the y endstop is defined by the maximum position rather than the min. 0 on the y axis is then defined by the combination of the maxima y position and set distance to zero (in my case, 320). To reiterate, my x endstop is located on the left edge, and my y endstop is located at the left rear.

                                    ; Configuration file for Duet3 (firmware version 3.01 RC11)
                                    ; executed by the firmware on start-up
                                    ;
                                    ; --------------- Pin/connection Mapping Legend -------------------
                                    ; 0.out0      - Bed heater
                                    ; 0.out1
                                    ; 0.out2
                                    ; 0.out3
                                    ; 0.out4      - Radiator cooling fan - WC heatsink
                                    ; 0.out5
                                    ; 0.out6
                                    ; 0.out7
                                    ; 0.out8
                                    ; 0.out9      - Duet board cooling fan
                                    ; 0.out4.tach - Radiator cooling fan rpm wire - WC heatsink
                                    ; 0.out5.tach
                                    ; 0.out6.tach
                                    ; 0.io0.in
                                    ; 0.io1.in    - Emergency stop switch
                                    ; 0.io2.in    - Y max active low endstop switch
                                    ; 0.io3.in
                                    ; 0.io4.in
                                    ; 0.io5.in
                                    ; 0.io6.in
                                    ; 0.io7.in
                                    ; 0.io8.in
                                    ; 0.io0.out
                                    ; 0.io1.out
                                    ; 0.io2.out
                                    ; 0.io3.out
                                    ; 0.io4.out
                                    ; 0.io5.out
                                    ; 0.io6.out
                                    ; 0.io7.out
                                    ; 0.io8.out
                                    ; 0.servo, out10 (only on v0.5, not on v0.6)
                                    ; 0.pson
                                    ; 0.spi.cs0
                                    ; 0.spi.cs1
                                    ; 0.spi.cs2
                                    ; 0.spi.cs3
                                    ; 0.temp0      - Bed Thermistor
                                    ; 0.temp1
                                    ; 0.temp2
                                    ; 0.temp3      - Coolant Temp Sensor
                                    ; 0.mcu-temp   - MCU sensor
                                    ;
                                    ;----------Toolboard 1 (CAN ID#20)
                                    ; 20.out0      - Hotend Heater
                                    ; 20.out1
                                    ; 20.out2      - Parts cooler on printhead
                                    ; 20.out1.tach
                                    ; 20.out2.tach
                                    ; 20.io0.in    - Z probe type to bltouch current - Piezo future
                                    ; 20.io1.in    - X min active low endstop switch
                                    ; 20.io0.out   - GPIO port 0 on toolboard io0, servo mode - BLTouch Z-Probe
                                    ; 20.temp0     - Extruder Thermistor
                                    ; 20.temp1
                                    ; 20.button0
                                    ; 20.button1
                                    ;
                                    ; -----------------------------------------------------------------
                                    ;
                                    ; General preferences
                                    
                                    G4 P2000                          ; Hold your Horses.
                                    G90                               ; send absolute coordinates...
                                    M83                               ; ...but relative extruder moves
                                    G21                               ; Set units to Millimeters
                                    M550 P"DUET3"                     ; set printer name
                                    M575 P1 S1 B57600                 ; Set things up for the PanelDue
                                    M575 P1 S1 B57600                 ; Set things up for the PanelDue
                                    
                                    M584 X0.3 Y0.2 Z0.0:0.1:0.4 E20.0 ; set drive mapping to each axis
                                    M669 K1                           ; Select CoreXY mode - New format
                                    
                                    ; Network
                                    M552 S1                           ; enable network
                                    ; M552 P192.168.3.120             ; Static IP Address
                                    M586 P0 S1                        ; enable HTTP
                                    M586 P1 S0                        ; disable FTP
                                    M586 P2 S0                        ; disable Telnet
                                    
                                    ; Drives
                                    M569 P0.0 S0                      ; physical drive 0 goes backwards - Z Axis Left (1)
                                    M569 P0.1 S0                      ; physical drive 1 goes backwards - Z Axis Right Back (2)
                                    M569 P0.2 S0 D3                   ; physical drive 2 goes backwards - Y Axis, activate Stealthchop
                                    M569 P0.3 S0 D3                   ; physical drive 3 goes backwards - X Axis, activate Stealthchop
                                    M569 P0.4 S0                      ; physical drive 4 goes backwards - Z Axis Right Front (3)
                                    M569 P20.0 S1 D3                  ; physical drive 5 goes forwards - Extruder 1
                                    
                                    ; Set up three Z-axis location
                                    M671 X-42.5:390.9:390.9 Y172.5:291.5:49.5 S5 ; leadscrews at 1 - left, 2 - rear right and 3 - front right
                                    
                                    M92 X199.27 Y199.27 Z397.23 E2700          ; set steps per mm
                                    M350 X16 Y16 Z16 E16 I1                    ; configure micro-stepping with interpolation
                                    M566 X800.00 Y800.00 Z400.00 E240.00       ; set maximum instantaneous speed changes (mm/min)
                                    M203 X12000.00 Y12000.00 Z2500.00 E1200.00 ; set maximum speeds (mm/min)
                                    M201 X6000.00 Y6000.00 Z800.00 E800.00     ; set accelerations (mm/s^2)
                                    M906 X1000 Y1000 Z1000 E800 I30            ; set motor currents (mA) and motor idle factor in percent*100
                                    
                                    M84 S30                                    ; Set idle timeout
                                    
                                    ; Axis Limits
                                    M208 X0 Y0 Z0 S1                           ; set axis minima
                                    M208 X320 Y320 Z350 S0                     ; set axis maxima
                                    
                                    ; Endstops
                                    
                                    M574 X1 S1 P"20.io1.in"                    ; X min active high endstop switch
                                    M574 Y2 S1 P"0.io2.in"                     ; Y max active high endstop switch
                                    
                                    ; Z-Probe - BLTouch - *CURRENT*
                                    M574 Z1 S2                                 ; set endstops controlled by probe
                                    M558 P9 C"^20.io0.in" H5 F2000 T12000      ; set Z probe type to bltouch and the dive height + speeds (bltouch NEEDS pullup)
                                    ; G31 P100 X28.5 Y-5 Z2.65                 ; set Z probe trigger value, offset and trigger height - 0.25MM NOZZLE
                                    G31 P100 X-29.99 Y1.04 Z0.55               ; set Z probe trigger value, offset and trigger height - 0.40MM NOZZLE
                                    
                                    ; Z-Probe - PIEZO - *FUTURE*
                                    ; M574 Z1 S2                               ; set endstops controlled by probe
                                    ; M558 P8 C"20.io0.in" H10 F2000 T20000    ; set Z probe type to PIEZO and the dive height + speeds
                                    ; G31 P100 X0 Y0 Z-0.1                     ; set Z probe trigger value, offset and trigger height
                                    
                                    G30                                        ; Probe Z
                                    
                                    ; Configure Heaters and Sensors
                                    M308 S0 P"0.temp0" Y"thermistor" T100000 B3950          ; Configure bed temperature sensor
                                    M950 H0 C"0.out0" T0                                    ; Define heater 0 (bed heater) - bed_heat pin and Temp Sensor 0 
                                    M143 H0 S120 A2                                         ; set temperature limit for heater 0 to 120c
                                    M140 H0                                                 ; Map heated bed to heater 0
                                    
                                    M308 S1 P"20.temp0" Y"thermistor" T100000 B3950         ; Configure extruder 1 temperature sensor
                                    M950 H1 C"20.out0" T1                                   ; Define heater 1 (hot-end E0) to use the "20.out0" pin and Temp Sensor 1
                                    M143 H1 S265 A2                                         ; set temperature limit for heater 1 to 265C
                                    
                                    M308 S2 P"mcu-temp" Y"mcu-temp" A"Duet Board"           ; Configure MCU sensor
                                    M308 S3 P"temp3" Y"thermistor" T10000 B3988 A"Coolant"  ; Configure coolant sensor
                                    
                                    ; Configure Fans
                                    M950 F0 C"20.out2" Q100                 ; Define Fan_0 for use - Parts Cooler on Printhead - 4010 fan
                                    M950 F1 C"!0.out4+^0.out4.tach" Q25000  ; Define Fan_1 for use - Radiator cooling - WC heatsink. - PWM fan
                                    M950 F2 C"0.out9" Q25000                ; Define Fan_2 for use - Duet board cooling fan
                                    M950 S0 C"20.io0.out"                   ; Define GPIO port 0 on IO0, servo mode - BLTouch Z-Probe - *CURRENT*
                                    M950 J0 C"^!0.io1.in"                   ; Input 0 uses 0.io1.in pin, pullup enabled
                                    
                                    ; Fans
                                    M106 P0 S0                          ; set fan 0. Parts Cooler on Printhead
                                    M106 P1 T25:40 H2                   ; Set fan 1. Manages Radiator fan for water-cooled loop.
                                    M106 P2 T35:45 H2                   ; Set fan 2. Manages Duet board fan.
                                    
                                    ;Set PID values
                                    M307 H0 A289.6 C634.8 D0.9 V23.3 B0 ; disable bang-bang mode for the bed heater and set PWM limit
                                    M307 H1 A561.8 C236.5 D5.8 V23.3 B0 ; disable bang-bang mode for the extruder heater and set PWM limit
                                    
                                    ; Pressure Advance
                                    M572 D0 S0.3                        ; Set pressure advance to offset elasticity
                                    
                                    ; Tools
                                    M563 P0 S"Extruder 1" D0 H1 F0      ; define tool 0. Fan 0 operates with an active hot-end
                                    G10 P0 X0 Y0 Z0 R0 S0               ; set tool 0 axis offsets active and standby temperatures to 0C
                                    
                                    ; Emergency Stop
                                    M574 S1 P"^!0.io1.in"               ; Define Emergency endstop - emergency stop switch condition
                                    M581 P0 S1 T0                       ; Define action to be taken with activation of emergency stop switch
                                    
                                    ; Miscellaneous
                                    T0                                  ; select first tool
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • luckyflyer
                                      luckyflyer last edited by

                                      Thanks I appreciate that.

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

                                        Getting late here, I'll check it out tomorrow.

                                        Nuramori 1 Reply Last reply Reply Quote 0
                                        • Nuramori
                                          Nuramori @luckyflyer last edited by Nuramori

                                          @luckyflyer said in Help with M669 etc:

                                          Getting late here, I'll check it out tomorrow.

                                          Sure. Pay special attention in mine the value of the y endstop configuration. It’s a “Y2” not Y1 as in yours. That is telling the duet that the y endstop is a MAX position for the Cartesian coordinate layout. It will still HOME at the endstop at the back - I think you’re mistaking homing as also being 0,0, but it doesn’t have to be.

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

                                            @luckyflyer said in Help with M669 etc:

                                            The above configuration works except that the prints are mirrored. I then tried with drive 0 going to the right motor and drive 1 going to the left and putting the y endstop at the front of the printer. It now homes at left front and the prints are normal, not mirrored. However I prefer home to be left rear. I'm pretty sure that this can be configured with the right combination of M669, M569 and M574. I have tried several combinations but have not got it to work. Can someone help me out with this?

                                            You need to swap the X and Y motor connections over, either physically (as you already tried) or in the M584 command, so that Ymin is towards you and Ymax is away from you. Then change your M574 Y command and homey.g file to home to max Y instead of min Y. Also change homeall.g to home Y to max.

                                            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

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

                                              You need to swap the X and Y motor connections over, either physically (as you already tried) or in the M584 command, so that Ymin is towards you and Ymax is away from you. Then change your M574 Y command and homey.g file to home to max Y instead of min Y. Also change homeall.g to home Y to max.

                                              But is it possible to have Ymin away from the back and Ymax towards the front, that is what I want.
                                              Also Xmin to my left and max going right.

                                              This

                                              *----------------->X
                                              |
                                              |
                                              |
                                              V
                                              Y

                                              Instead of this
                                              Y
                                              ^
                                              |
                                              |
                                              |
                                              *---------------->X
                                              Or is this not possible because of a software limitation?

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

                                                The instructions say this,

                                                When an axis is homed to a low end (minimum) homing switch, the axis is assumed to be at the lower position limit. When it is homed to a high end (maximum) homing switch, it is assumed to be at the upper position limit. Therefore, changing the position limits in the M208 command will move the origin.

                                                I want origin 0.0 to be left rear which would mean that a + movement on the X axes would move the head to the printers left, to the user standing in front of the printer, his right. Also with a + Y command the head would move toward the front of the printer, toward the user.

                                                My motor mapping is Driver 0 = right rear motor = Y, Driver 1= left rear =X, I have changed this from default with M584.

                                                So is my logic flawed on the above points? If not then we proceed to setting the motor directions to achieve the above goal. This is where I start to have problems. I can get 1 axes to go in the correct direction but not the other, change motor direction and the axes change is reversed.

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

                                                  Been playing with this all day but it's the classic 1 step forward 2 steps back. here is where I'm at . Note mapping changes from above post.

                                                  M669 K1 ; select CoreXY mode

                                                  ; Drives
                                                  M569 P0.0 S1 ; physical drive 0.0 goes forwards
                                                  M569 P0.1 S1 ; physical drive 0.1 goes forwards
                                                  M569 P0.2 S0 ; physical drive 0.2 goes backwards
                                                  M569 P0.3 S0 ; physical drive 0.3 goes backwards

                                                  M584 X0.0 Y0.1 Z0.2 E0.3 ; set drive mapping, driver 0 = X driver 1 = Y driver 2 = Z driver 3 = Extruder

                                                  The X motor is left rear, Y motor = Right.

                                                  ; Axis Limits
                                                  M208 X0 Y0 Z-.2 S1 ; set axis minima
                                                  M208 X310 Y310 Z325 S0 ; set axis maxima

                                                  ; Endstops
                                                  M574 X1 S1 P"!io1.in" ; configure active-low endstop for low end on X via pin io1.in
                                                  M574 Y1 S1 P"!io2.in" ; configure active-low endstop for high end on Y via pin io2.in
                                                  M574 Z1 S1 P"io3.in"

                                                  My Y end stop is at printer rear (preferred location)

                                                  All of the homes work correctly, using - (negative) movement numbers. All motor movements are correct as per this guide https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter
                                                  All console movements are correct.

                                                  But it is still mirrored.

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

                                                    I’d change your y endstop from y1 to y2

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

                                                      I'll ask the dumb question...
                                                      There's no chance that your slicer is mirroring the model?

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