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.
mrehorstdmd last edited by mrehorstdmd
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
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.
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.
Garfield last edited by
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'.
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.
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
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet
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
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
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
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
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
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
Garfield last edited by
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)
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.
@id104335409 Perhaps take a look at this post: https://forum.duet3d.com/topic/14518/trying-to-set-starting-point-that-is-not-at-the-end-stops/13?_=1582653501451
There have been a couple threads similar to yours recently, they may also be worth checking out.