CoreXY Mirrored and flipped prints



  • After laying down my thoughts to clear them out it became more difficult to understand what IS my question. So my condensed question is: From mirrored print to correct print - Homing and printing all works in the desired direction, but when I cancel the print - it goes to the opposite direction. How is that possible?

    So I noticed that my CoreXY machine was printing flipped at 180 degrees from what the slicer thinks is correct, but that didn't bothered me. (Viewed from front - X and Y motors on the right side, gantry moving right to left). Then I found that it was also printing mirrored. So I decide to change things around. I flipped the X and Y directions in the config.g (many many times) until I was confident I understand everything correctly. This created the endstop problem, as now the print head was homing all wrong. I fixed that as well by switching low end/high end X and Y endstops. Now the printer was homing correctly.
    Now that the print head was moving in the right direction I tested with a print only to crash in the wrong direction. The print bed was now with the wrong coordinates. I changed everything again until I had every axis homing and moving correctly and the bed correct starting point. Print started flipped back to normal (as it should) and this should have been it, BUT as soon as I aborted it - the head went in the wrong direction! How is this possible? Homing and printing all works in the desired direction, but when I cancel the print - it goes to the opposite direction.
    I flipped everything again to try to compensate for that and I got the print printing flipped at 90 degrees, but still mirrored. Aborted and still the print head went in the wrong direction. Which means no matter how much I home and flip, unless I rebuild my whole printer in a conventional orientation (all homing censors to the bottom left, X and Y motors to the back) (Which I am about to do as a last resort) I can't get rid of the mirroring effect. I simply couldn't find a working option for that. Which makes the many options for custom positioning of endstops and motor directions worthless. As even with a working machine the prints would always be either flipped or mirrored or both.
    Anyways, I would love to give you my config file, but as it is - it would not help anyone understand how to solve the problem. I even ripped the board from it's place and all the cables. I need to start with a fresh config.

    I decide to post to General discussion, as I don't really see a way it can be helped. If anyone has experienced this - leave a comment.



  • Setting up a corexy mechanism can be confusing. I have written a couple blog posts on the subject here: https://drmrehorst.blogspot.com/2017/08/setting-up-3d-printers-origin.html
    and here:
    https://drmrehorst.blogspot.com/2018/07/ummd-better-way-to-set-up-origin-and.html

    Maybe you'll find some of the info useful.

    Mirror image prints implies that you have inadvertently set up a left-hand-rule coordinate system. That will be the first thing to fix.


  • administrators

    The normal directions for a CoreXY are that +X is to the right and +Y is to the back. The important thing is that viewed from above, +Y is 90deg anticlockwise from +X. If it's 90deg clockwise instead, then you need to swap the X and Y motor connections, either physically or in M584.



  • My money is on X and Y crossed, rotation in wrong directions, would seem correct but would be backwards, for printing.

    One thing many of the setup guides leave out is the position and orientation of the steppers on the top. As in at the front or the back, upright or inverted, many guides are based on them being at the front and 'upright'.


  • Moderator

    @Garfield said in CoreXY Mirrored and flipped prints:

    As in at the front or the back, upright or inverted, many guides are based on them being at the front and 'upright'.

    Good point, though following the commissioning steps should make solving it quite easy.

    https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter



  • So I started fresh and I think I know where I took the easy road.
    When configuring X and Y motion you are asked to test in which diagonal the head moves. If you test X and it goes +X+Y all is fine. But it's not. Because Y needs to be tested as well. I assumed that it needs to go +Y-X.
    But then when you test the home buttons - X and Y are switched - If you home X - Y is being homed and vice versa.
    Swapping the motors or changing direction in the config file only makes everything go in reverse. So when I first tested the printer I just "decided" that my X axis will be used as Y and my Y as X. (and that is what came to bite me when I found that I have been printing mirrored prints)
    Now, how do I make correct movements AND homing if I am looking at the printer from the "front" where the XY motors are, one of them is reversed (one goes over, one goes under with the belts), and my XYZ stops are located in the lower left corner and G1 H2 X10 moves +X+Y while G1 H2 Y10 moves +Y-X
    but when I try to home = Home X pulls the gantry Y towards me while Home Y pulls the print head X to the left?
    My setup is like that because of the cabling. Cables won't reach if I put the XY motors on the back and they are 2 meters long. Also I assembled/disassembled this bastard 3 times already.
    Here is my new config:

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.8 on Mon Feb 24 2020 22:48:22 GMT+0200 (Eastern European Standard Time)

    ; General preferences
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"QB" ; set printer name

    M667 S1 ; select CoreXY mode

    ; Network
    M552 S1 ; enable network
    M586 P0 S1 ; enable HTTP
    M586 P1 S0 ; disable FTP
    M586 P2 S0 ; disable Telnet

    ; Drives
    M569 P0 S0 ; physical drive 0 goes backwards
    M569 P1 S1 ; physical drive 1 goes forwards
    M569 P2 S1 ; physical drive 2 goes forwards
    M569 P3 S1 ; physical drive 3 goes forwards
    M584 X0 Y1 Z2 E3 ; set drive mapping
    M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation
    M92 X80.00 Y80.00 Z410.00 E407.00 ; set steps per mm
    M566 X900.00 Y900.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2)
    M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Axis Limits
    M208 X0 Y0 Z0 S1 ; set axis minima
    M208 X700 Y650 Z800 S0 ; set axis maxima

    ; Endstops
    M574 X1 S1 P"!xstop" ; configure active-low endstop for low end on X via pin xstop
    M574 Y1 S1 P"!ystop" ; configure active-low endstop for low end on Y via pin ystop
    M574 Z1 S1 P"!zstop" ; configure active-low endstop for low end on Z via pin zstop

    ; Z-Probe
    M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed
    M557 X15:215 Y15:195 S20 ; define mesh grid

    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
    M143 H0 S120 ; set temperature limit for heater 0 to 120C
    M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
    M140 H0 ; map heated bed to heater 0
    M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin e0temp
    M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
    M143 H1 S280 ; set temperature limit for heater 1 to 280C
    M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit

    ; Fans
    M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
    M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on

    ; Tools
    M563 P0 D0 H1 F0 ; define tool 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

    ; Custom settings are not defined



  • Switch the X and Y and change the rotation direction - but X and Y should both be the same rotation if the steppers are the same and wired the same.

    This vid explains it really well (I think)

    Explained with Paper


  • administrators

    Why do I bother writing wiki pages when people don't follow them? https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Testing_motor_movement.

    Get the motors moving the axes in the right directions when you jog them. When they are, sort out the homing without messing with motor directions any more.



  • Will do!


  • Moderator


Log in to reply