Left-hand axis CoreXY help!!



  • I have tried every way to changed my corexy printer to a right hand axis but no luck and its driving me insane, any help would be greatly appreciated!
    My start problem is that my prints are mirrored!
    I have tried to swap x & y motor cables, I have tried every combination with the M569 command (both with swapped and no swapped cables) I have tried the M567 command with both Y-1 & Y1 (and it gives me that its not a valid command anymore) I have tried the M669 to flip the direction of the Y motor, I have read so many threads here and the configuration guide that my eyes bleed. And nothing seams to help... And I dont know what I am doing wrong so please, any input would be great!
    Here is my current config.g file:

    ; CoreXY sample config file for dc42 Duet firmware
    
    M111 S0                             ; Debug off
    M550 PMyCoreXY			    ; Machine name (can be anything you like)
    M551 Preprap                        ; Machine password (used for FTP connections)
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0x07 ; MAC Address
    ;*** Adjust the IP address and gateway in the following 2 lines to suit your network
    M552 P192.168.1.226		                ; IP address (0 = use DHCP)
    M554 P192.168.1.1                   ; Gateway
    M553 P255.255.255.0                 ; Netmask
    M555 P2                             ; Set output to look like Marlin
    M575 P1 B57600 S1		    ; Comms parameters for PanelDue
    
    ; Machine configuration
    M564 S0 H0                          ; allow to move outside bed range 
    M569 P0 S1			    ; Drive 0 goes backwards (change to S0 to reverse it)
    M569 P1 S1			    ; Drive 1 goes forwards
    M569 P2 S0			    ; Drive 2 goes backwards
    M569 P3 S0			    ; Drive 3 goes backwards
    M569 P4 S0			    ; Drive 4 goes backwards
    ; If you use an endstop switch for Z homing, change Z0 to Z1 in the following line, and see also M558 command later in this file
    M574 X1 Y1 Z0 S1		    ; set endstop configuration (X and Y and endstops only, at low end, active high)
    M669 K1 X1:1:0:0 Y-1:-1:1:0                             ; switch to CoreXY mode
    M92 X80 Y80 Z800		    ; Set axis steps/mm
    M92 E2600:2600			    ; Set extruder steps/mm was 2745
    M906 X1600 Y1600 Z800 E500          ; Set motor currents (mA)
    M201 X800 Y800 Z25 E60              ; Accelerations (mm/s^2)
    M203 X30000 Y30000 Z800 E3600       ; Maximum speeds (mm/min) was X4800 Y4800
    M566 X500 Y500 Z40 E40              ; Maximum jerk speeds mm/minute was X240 Y240
    M208 X375 Y380 Z380		    ; set axis maxima (adjust to suit your machine)
    M208 X0 Y0 Z0 S1		    ; set axis minima (adjust to make X=0 and Y=0 the edges of the bed)
    G21                                 ; Work in millimetres
    G90                                 ; Send absolute coordinates...
    M83                                 ; ...but relative extruder moves
    
    ; Z probe
    M558 P2 H3 F200 T2000               ; Modulated IR probe, also used for homing the Z axis
    G31 X-22 Y0 Z2.05 P500              ; Set the probe height and threshold (put your own values here)
    ; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
    ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
    ;M557 P0 X60 Y0                     ; Four... 
    ;M557 P1 X60 Y165                   ; ...probe points...
    ;M557 P2 X222 Y165                  ; ...for bed...
    ;M557 P3 X222 Y0                    ; ...levelling
    ;M557 P4 X141 Y82.5                 ; 5th probe point for levelling
    
    ; Thermistors and heaters
    ;*** If you have a Duet board with 1K thermistor series resistors, change R4700 to R1000 to the following M305 commands
    ; You can also use S and B parameters to define the parameters of the thermistors you are using
    M305 P0 T100000 B3950 R4700 H0 L0	; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 R4700 H0 L0			; Put your own H and/or L values here to set the first nozzle thermistor ADC correction
    M305 P2 R4700 H0 L0			; Put your own H and/or L values here to set the second nozzle thermistor ADC correction
    M301 H1 P10 I0.10 D100 T0.50 S1.0	; PID settings for extruder 0
    M301 H2 P10 I0.10 D100 T0.50 S1.0	; PID settings for extruder 1
    ;M570 S120				; Increase to allow extra heating time if needed
    
    ; Tool definition
    M563 P0 D0 H1         ; tool 0 uses extruder drive 0 and heater 1
    G10 P0 S0 R0 X0 Y0    ; set tool 0 temperatures and offsets
    M563 P1 D1 H2         ; tool 1 uses extruder drive 1 and heater 2
    G10 P1 S0 R0 X24 Y0   ; set tool 1 temperatures and offsets
    
    ; Old Tool definition
    ;M563 P0 D0 H1                       ; Define tool 0
    ;G10 P0 S0 R0                        ; Set tool 0 operating and standby temperatures
    ;*** If you have a dual-nozzle build, un-comment the following 3 lines
    ;M563 P1 D1 H2                      ; Define tool 1
    ;G10 P1 S0 R0                       ; Set tool 1 operating and standby temperatures
    
    ;*** If you are using axis compensation, put the figures in the following command
    ;M556 S78 X0 Y0 Z0                   ; Axis compensation here
    ;T0				    ; select first hot end
    
    

    Sorry forgot to mention what my board and firmware is:

    Firmware Name:	RepRapFirmware for Duet
    Firmware Electronics:	Duet 0.85
    Firmware Version:	1.26.1 (2020-02-09b1)
    Web Interface Version:	1.22.6
    

  • Moderator

    @perolalars Dare I ask if you've seen this page? https://duet3d.dozuki.com/Wiki/Test_axes_or_motors_individually

    Set M669 back to CoreXY back to default before testing, ie M669 K1

    Also this needs S0 after: M208 X375 Y380 Z380

    Ian



  • @droftarts Hi and thanks for reply!!
    No that page I had still to discover (didnt think there where any left for that..;-))
    But tried the first command to no luck

    With command:
    G1 H2 X10 F100
    
    M569 P0 S1
    M569 P1 S0   it moves in X+ & Y+
    
    M569 P0 S0
    M569 P1 S0   it moves in X- & Y-
    
    M569 P0 S0
    M569 P1 S1   it moves in X- & Y-
    
    M569 P0 S1
    M569 P1 S1   it moves in X+ & Y+
    


  • Just (a probably stupid) question.
    Should sending M669 from DWC reflect the changes made to the M569? Because it dont for me...
    And an other (stupid?) query.
    If I changed the order of the 4 cables on the motor (so it changes direction) is it the same as changing the M569 value?
    I am really tired now so bare with me 😴 Have been sitting with this problem for 3 days now...



  • I wrote a procedure for setting up the origin and endstops for a corexy machine. Maybe it will be of some use.

    I later decided to put the printer's origin at the center of the printable bed surface, which I recommend you do because it makes it easier to get different slicers set up for your printer, and makes the gcode sort-of portable if you have multiple machines with the origin at the center of the bed, as long as other factors are similar enough.


  • Moderator

    @perolalars M669 should show you the kinematics settings. I think you send M569 P[motor_number] and it will show that motor's setting.

    Yes, reversing the motor wiring is the same as changing M569.

    I would swap the X and Y motor wires, and try the test again.

    Ian



  • @mrehorstdmd Thanks for your reply but its not the origin that is the problem, I cant get the axis to move as they should and I cant figure out why!
    @droftarts Thank you for clarifying the reversing thing! And now I have gone through every possible setting with both swapped and non swapped X Y cables and nothing of them works!!!

    With swapped X & Y cables & command :
                 G1 H2 X10 F1000          G1 H2 X-10 F1000      G1 H2 Y10 F1000        G1 H2 Y-10 F1000
                                       
    M569 P0 S1                           
    M569 P1 S0   it moves in +X -Y        it moves in -X +Y     it moves in -X -Y      it moves in +X +Y
    
    M569 P0 S0
    M569 P1 S0   it moves in -X +Y        it moves in +X -Y     it moves in -X -Y      it moves in +X +Y  
    
    M569 P0 S0
    M569 P1 S1   it moves in -X +Y        it moves in +X -Y     it moves in +X +Y      it moves in -X -Y 
    
    M569 P0 S1
    M569 P1 S1   it moves in +X -Y        it moves in -X +Y     it moves in +X +Y      it moves in -X -Y
    
    
    No swapped cables & command :
                 G1 H2 X10 F1000          G1 H2 X-10 F1000      G1 H2 Y10 F1000        G1 H2 Y-10 F1000
                                       
    M569 P0 S1                           
    M569 P1 S0   it moves in +X +Y        it moves in -X -Y     it moves in -X +Y      it moves in +X -Y
    
    M569 P0 S0
    M569 P1 S0   it moves in -X -Y        it moves in +X +Y     it moves in -X +Y      it moves in +X -Y  
    
    M569 P0 S0
    M569 P1 S1   it moves in -X -Y        it moves in +X +Y     it moves in +X -Y      it moves in -X +Y 
    
    M569 P0 S1
    M569 P1 S1   it moves in +X +Y        it moves in -X -Y     it moves in +X -Y      it moves in -X +Y
    

    The only setting that comes close to any solution is with swapped cables and with either:
    M569 P0 S1
    M569 P1 S0
    or
    M569 P0 S1
    M569 P1 S1
    but they both fail to move the Y axis motor correctly
    So, please can anybody make some sense out of my diagram??
    Is there anything in my config that in some way flips the Y axis or is there some other place it the firmware that could cause this behavior?



  • First, that table full of swaps and M569 S and so forth... it all looks exactly correct. Each swap or command reversed exactly what I'd expect it to reverse.

    To be clear: Diagonal moves are occurring because the H2 forces only one motor to turn. H2 will never produce a "usable" move on a CoreXY. Within that limit, everything is moving exactly as expected.

    Others have said this... but just to confirm and reinforce:

    • Swapping motor wire PAIRS on the duet connector, meaning PQRS to RSPQ reverses the rotation of that motor.

    • M569 Pn S0 vs S1 does exactly the same thing. Reverses one motor (not one axis).

    • Therefore, there should never be an absolute need to swap motor pairs. It may, at times, be more convenient, and those of us with OCD may swap motor wires so that our config.g contains M569s that have all the same Sn parameter (sheesh, am I looking in a mirror, or what?), but there is never an actual requirement to swap pairs.

    • By "Swapped Cables" I'm assuming you are switching which motor is plugged into which driver. Which is fine (see below).

    • The H2 commands move INDIVIDUAL motors. And the tables of results look correct for that.



  • Were this me, here's how I would proceed:

    1. Plug the motor cables into drivers, which order doesn't matter (yet).

    2. Try all four M569 S combinations, one at a time, with very short moves, WITHOUT the H2. BOTH MOTORS WILL TURN. This is normal on a CoreXY.

    • Note that you will need to issue M564 H0, once, to allow 'regular' moves without homing.

    • See if any of those combinations are correct, meaning they produce the move you want in the direction you want. Again, no H2. Just regular (short) moves.

    If you find the combination that moves each axis in the desired direction, you are done.

    Only if necessary, swap the motor cables to the other drivers (i.e. opposite step 1) and repeat step 2.

    One of those 8 combinations has to work.


  • administrators

    @perolalars said in Left-hand axis CoreXY help!!:

    @droftarts Hi and thanks for reply!!
    No that page I had still to discover (didnt think there where any left for that..;-))
    But tried the first command to no luck

    With command:
    G1 H2 X10 F100
    
    M569 P0 S1
    M569 P1 S0   it moves in X+ & Y+
    
    M569 P0 S0
    M569 P1 S0   it moves in X- & Y-
    
    M569 P0 S0
    M569 P1 S1   it moves in X- & Y-
    
    M569 P0 S1
    M569 P1 S1   it moves in X+ & Y+
    

    That has the X and Y motors connected to the right connectors. Either the first or the last M569 pair should be correct.

    @perolalars said in Left-hand axis CoreXY help!!:

    With swapped X & Y cables & command :
    G1 H2 X10 F1000 G1 H2 X-10 F1000 G1 H2 Y10 F1000 G1 H2 Y-10 F1000

    M569 P0 S1                           
    M569 P1 S0   it moves in +X -Y        it moves in -X +Y     it moves in -X -Y      it moves in +X +Y
    
    M569 P0 S0
    M569 P1 S0   it moves in -X +Y        it moves in +X -Y     it moves in -X -Y      it moves in +X +Y  
    
    M569 P0 S0
    M569 P1 S1   it moves in -X +Y        it moves in +X -Y     it moves in +X +Y      it moves in -X -Y 
    
    M569 P0 S1
    M569 P1 S1   it moves in +X -Y        it moves in -X +Y     it moves in +X +Y      it moves in -X -Y
    

    That doesn't, because G1 H2 X always moves X and Y in opposite directions.

    No swapped cables & command :
    G1 H2 X10 F1000 G1 H2 X-10 F1000 G1 H2 Y10 F1000 G1 H2 Y-10 F1000

    
    M569 P0 S1                           
    M569 P1 S0   it moves in +X +Y        it moves in -X -Y     it moves in -X +Y      it moves in +X -Y
    
    M569 P0 S0
    M569 P1 S0   it moves in -X -Y        it moves in +X +Y     it moves in -X +Y      it moves in +X -Y  
    
    M569 P0 S0
    M569 P1 S1   it moves in -X -Y        it moves in +X +Y     it moves in +X -Y      it moves in -X +Y 
    
    M569 P0 S1
    M569 P1 S1   it moves in +X +Y        it moves in -X -Y     it moves in +X -Y      it moves in -X +Y
    

    The last one of those is correct.



  • @dc42 Hi and thanks for your input but according to this diagram https://duet3d.dozuki.com/Wiki/Test_axes_or_motors_individually the command G1 H2 Y10 F1000 should move it in -X +Y and my printer moves in +X -Y and the command G1 H2 Y-10 F1000 should move it in +X -Y and my printer moves in -X +Y .
    Thats why I dont understand this! And I did reboot the firmware after every change in config and issued M564 H0 before any other command... So what am I doing wrong or dont understand?


  • Moderator

    @perolalars I have a feeling the page I linked you to is not correct for the Y movement, as it has the same as moves in X! I think it should be that positive Y motor moves are +X and +Y, negative Y moves are -X and -Y. Sorry! In which case this version of your test should be correct:

    
    With swapped X & Y cables & command :
                 G1 H2 X10 F1000          G1 H2 X-10 F1000      G1 H2 Y10 F1000        G1 H2 Y-10
    
    M569 P0 S1
    M569 P1 S1   it moves in +X -Y        it moves in -X +Y     it moves in +X +Y      it moves in -X -Y
    
    

    Ian



  • @dc42 and @droftarts Now I am even more confused since dc42 is saying no swapped cables and you are saying swapped cables!?


  • administrators

    That's right, that page is wrong (it was correct for firmware 1.18 and earlier). See https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Testing_motor_movement.

    EDIT: I've just corrected that other page.



  • @dc42 Hi David So according to that page my axis moves correctly now but since I have a left-hand axis setup (yes I know I am sorry but its a lot of work making it a right-hand) and there is no solution stated if one has one " If instead it is 90 degrees clockwise, you have a left-hand axis system, which will give you mirror-image prints" what can I do to correct it? Besides rebuilding the machine that is?
    And thanks Ian for your input, I feel like I have 4 toodlers in my head now...


  • Moderator

    @perolalars sorry! You should listen to @Danal and @dc42, because I’m doing this from memory, on my phone, while looking after two toddlers! And I don’t even have a CoreXY! Though I still think the page I linked is incorrect. @dc42 can you check/update it? already done

    Ian



  • @perolalars said in Left-hand axis CoreXY help!!:

    @dc42 Hi David So according to that page my axis moves correctly now but since I have a left-hand axis setup (yes I know I am sorry but its a lot of work making it a right-hand) and there is no solution stated if one has one " If instead it is 90 degrees clockwise, you have a left-hand axis system, which will give you mirror-image prints" what can I do to correct it? Besides rebuilding the machine that is?
    And thanks Ian for your input, I feel like I have 4 toodlers in my head now...

    When you say "Left Hand"... My CoreXY, when facing the "Front", the 0,0 origin is in the right (humans right) rear. Is this the same thing you are saying?

    If it is the same, I can post my config.



  • @Danal No, when looking at my printer from the front I have the origin in the left top corner (like where you start reading a book, kind off!) the Y axis are pointing toward me and the x axis going to the right
    IMG_20200313_162025.jpg



  • Got it. Yours is a true "flip" or "mirror" of chirality; mine is a simple rotation.

    It is still true that one of the 8 combinations will make everything correct in "normal" X or Y moves. So you have two paths:

    • Continue to try to analyze and understand and select the configuration of cables and M569s based on that analysis.

    -or-

    • Brute force "search" for the correct movements by trying all 8 combinations (stopping when you find the right one, of course).

    I've done both in my life. These days, I'm so overloaded, I've biased more toward the brute force...



  • @Danal Thank you but that is what I have been doing and it moves correctly but it mirrors the prints, that is where I started...
    It dont seams that anyone could tell what I can do about it, hardware or software wise, to correct it (the mirroring!).
    I know I could mirror it in the slicer software but thats just a half way solution since I am trying to sell this printer and I want it to work correctly...


Log in to reply