Prints flipped/mirrored



  • I have my Duet Wifi running a core xy machine. X endstop is to the left, Y endstop is in the rear. Homing is to left rear. X+ moves gantry to the right, Y+ moves gantry towards front of machine. Ran a print of an automotive emblem that stretched across bed diagonally from front left corner to rear right corner, but when it started printing, it was stretched across from rear left to front right and it was upside down. I'm @ work right now so I can't include my config.g files. Can anyone help me with this? Thanks in advance.


  • administrators

    That's because you have your X and Y axes in the wrong orientation. The relationship between them needs to be like this:

    Y
    ^
    |
    |
    *–--> X

    You have them the opposite way round. Choose between the following:

    1. X=0 Y=0 at the front left of the machine. So +Y moves towards the rear. If you leave your homing switches where they are, you will need to home Y to max Y instead of to Y-0. You will need to swap the X and Y motor connections (TURN THE POWER OFF FIRST!) and adjust your homey and homeall.g files to home to maximum Y. Then adjust the two motor directions to get +X and +Y moving in the right directions.

    2. Exchange the X and Y axes. You will need to swap the X and Y motor connections (TURN THE POWER OFF FIRST!) and also exchange the X and Y endstop connections. Then adjust the two motor directions to get +X and +Y moving in the right directions.



  • Thanks dc42. I'll try and rectify things when I get home.



  • dc42, I chose the 1st option you offered. swapped out the X and Y connections only, made adjustments in homeall g and homey g. Now it homes nicely to front left. X+ moves correctly, but for the life of me I can't get Y+, i.e. gantry moving from front to rear, to move appropriately. It's my understanding that I have a total of 4 possible combinations within the M569 command for the X and Y motor configs.(P0-S1/P1-S0) (P0-S1/P1-S1) (P0-S0/P1-S0) (P0-S1/P1-S1) I've tried them all. What am I missing?

    P.S.
    I realize that is your name silk screened on my board, so all of my questions are humbly asked.

    Sincere Thanks!



  • Here's my config.g Don't laugh too hard…..........; Configuration file for Mini Kossel kit from Think3DPrint3D for testing Duet WiFi

    ; Communication and general
    M111 S0 ; Debug off
    M550 PGBusyDBot ; Machine name and Netbios name (can be anything you like)
    M551 Preprap ; Machine password (used for FTP)
    ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address
    ;*** Wifi Networking
    M552 S1 ; Enable WiFi

    M555 P2 ; Set output to look like Marlin
    M575 P1 B57600 S1 ; Comms parameters for PanelDue

    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves

    ; Axis and motor configuration
    M569 P0 S0 ; Drive 0 goes forwards
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 goes forwards
    M569 P4 S0 ; Drive 4 goes forwards
    M574 X1 Y1 Z1 S0 ; set endstop configuration (all endstops at high end, active high)
    ;*** The homed height is deliberately set too high in the following - you will adjust it during calibration
    M667 S1 ; set CoreXY mode
    M666 X0 Y0 Z0 ; put your endstop adjustments here, or let auto calibration find them
    M350 X16 Y16 E16 I1 ; Set 16x microstepping with interpolation
    M92 X80 Y80 Z160 ; Set axis steps/mm
    M906 X800 Y800 Z800 E800 I60 ; Set motor currents (mA) and increase idle current to 60%
    M201 X2000 Y2000 Z100 E4000 ; Accelerations (mm/s^2)
    M203 X30000 Y3000 Z300 E1500 ; Maximum speeds (mm/min)
    M566 X600 Y600 Z24 E300 ; Maximum instant speed changes mm/minute
    M208 X350 Y220 Z300 ; 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)

    ; Thermistors
    M305 P0 T100000 B4388 R4700 H0 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 T100000 B4388 R4700 H0 L0 ; Put your own H and/or L values here to set the first nozzle thermistor ADC correction
    M305 P2 T100000 B3974 R4700 H0 L0 ; Put your own H and/or L values here to set the second nozzle thermistor ADC correction
    M570 S180 ; Hot end may be a little slow to heat up so allow it 180 seconds

    ; Fans
    M106 P1 H-1 ; disable thermostatic mode for fan 1

    ; Tool definitions
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
    ;*** If you have a single-nozzle build, comment the next 2 lines
    ; M563 P1 D1 H2 ; Define tool 1
    ; G10 P1 S0 R0 ; Set tool 1 operating and standby temperatures
    M92 E418.5:418.5 ; Set extruder steps per mm

    M307 H0 A125.6 C331.8 D3.8 B0
    M307 H1 A568.7 C235.4 D6.3 B0
    ; Z probe and compensation definition
    ;*** If you have a switch instead of an IR probe, change P1 to P4 in the following M558 command
    M558 P1 X0 Y0 Z0 ; Z probe is an IR probe and is not used for homing any axes
    G31 X0 Y0 Z4.80 P500 ; Set the zprobe height and threshold (put your own values here)

    ;*** If you are using axis compensation, put the figures in the following command
    M556 S78 X0 Y0 Z0 ; Axis compensation here

    M208 S1 Z-0.2 ; set minimum Z
    ;
    T0 ; select first hot end


  • administrators

    I suggest you put the print head near the middle of the bed, send G91 to enable relative movement, then use G1 S2 commands to move the X and Y motors independently. For example, G1 S2 X10 will move the X motor forwards by 10mm. You are aiming to get the movement specified in the GCode wiki listing for the M667 S1 command:

    Forward movement of the X motor moves the head in the +X and +Y directions. Forward movement of the Y motor moves the head in the -X and +Y directions.

    where +X is to the right and +Y is towards the back.



  • I've got the motors moving correctly now i.e. G1 S2 X10 moves print head towards the right and Y towards the rear. G1 S2 Y10 moves print head to the left and Y towards the rear, but right now with what I have set up in my homing files, X and Y make no attempt to move towards the endstops Should I change the Y value in M574 in config.g from Y1 to Y2? I'm just going to paste my homing files here and let you have a look.
    ; homeall file for use with dc42 Duet firmware on CoreXY printers
    ; This file assumes the endstop switches are at the low end of each axis.
    ; Reverse the X and Y movement for high-end switches.
    ; Adjust the bed upper and lower limits in config.g (M208 commands) to get the correct homing positions

    G91 ; relative mode
    G1 S1 X-375 F3000 ; course home X
    G1 X4 F600 ; move away from endstop
    G1 S1 X-10 ; fine home X
    G1 X0 F2000
    G1 S1 Y-220 F3000 ; course home Y
    G1 Y4 F600 ; move away from endstop
    G1 S1 Y-10 ; fine home Y
    G1 Y0 F2000
    G1 S1 Z-350 F200 ; Course home Z
    G1 Z2 F50 ; move away from endstops
    G1 S1 Z-10 ; fine home Z
    G1 Z0 F200

    ; If you are using a microswitch for Z homing, insert similar code for the Z axis here,
    ; but use lower feed rates suitable for your Z axis.

    G90 ; back to absolute mode

    ; If you homed the Z axis using an endstop switch, you can insert a G92 command here to correct the height.

    ; The following code assumes you are using a Z probe to do Z homing. Remove it if you are using a microswitch.
    ; Adjust the XY coordinates in the following to place the Z probe over a suitable spot,
    ; preferably near the centre of the bed if your Z probe supports that

    G1 X100 Y100 F2000
    G30
    ; This file leaves the head at the zprobe trigger height so that you can slip a piece of paper under it and then do G0 Z0 to check the height.
    ; If you prefer to send the printer to X0Y0Z0, un-comment the following lines
    ;G1 X0 Y0 F5000
    ; G1 Z0

    X Homing
    G91
    G1 S1 X-375 F3000
    G1 X4 F600
    G1 S1 X-10
    G1 X0 F2000
    G90

    Y Homing
    G91
    G1 S1 Y-220 F3000
    G1 Y4 F600
    G1 S1 Y-10
    G1 Y0 F2000
    G90

    Z Homing

    G91
    G1 S1 Z-320 F200
    G1 Z2 F50
    G1 S1 Z-10
    G1 Z0 F200
    G90



  • Yes, from how you've described the set up, M574 should be

    [c]M574 X1 Y2 Z1 S0[/c]

    Also, youhave your Y maximum speed set much slower than X. Is that deliberate?

    [c]M203 X30000 Y3000 Z300 E1500 ; Maximum speeds (mm/min)[/c]

    I'd have expected them to match with a CorexXY:

    [c]M203 X30000 Y30000 Z300 E1500 ; Maximum speeds (mm/min)[/c]

    (You also have Z max speed set very slow - 300 mm/min is only 5 mm/sec. But maybe that's right?)



  • Okay, I made the changes you pointed out, but there is something evidently wrong with my homing files that prevents X or Y from approaching the endstops. When I home all, X is going right approx. 200mm, Y goes to front of machine. Neither approaches it's endstop. Z goes to endstop and tries to keep going, ignoring the stop.


  • administrators

    Do you have movement in the correct directions now, i.e. positive X moves to the right and positive Y moves towards the front back?



  • @GBusy24:

    I've got the motors moving correctly now i.e. G1 S2 X10 moves print head towards the right and Y towards the rear. G1 S2 Y10 moves print head to the left and Y towards the rear,…...............................

    That ain't right. If you command the machine to move in the X axis (G1 X10) then there should be no movement of the Y axis. Conversely, if if you command it to move in Y (G10 Y10), there should be no movement in X.

    So assuming you have configured your printer to work in coreXY mode by having M667 S1 in you config.g, then it seems that you might need to swap the X and Y motor connections (with the power off !!!) then play around with the S values for M569 P0 and P1 until you get the motion correct. You can send M569 commands from the =web interface so no need to keep editing the config.g and restarting every time.

    Also, just use G1 X10 or G1 Y10 and if you want with S1 to check for end stops. S0 is the default and ignores end stops. S2 I think is only for Delta printers.

    HTH

    Ian


  • administrators

    Ian, if he is using the S2 modifier then the movements he said are correct. The S2 modifier allows you to control individual motors on both delta and CoreXY printers.



  • Yes, dc-42 motor directions are correct per the G1 S2 commands I send. Moving X+ manually also goes right by itself and moving Y+ manually sends the gantry away from me by itself. My biggest problem now I feel that I have something terribly wrong in my homing files preventing X and Y from searching out the endstops. I realize that I don't have the correct Y homing position entered at the moment. I believe per a previous conversation we had that it needs to be set to a positive number that correlates to front of bed. I've just gotten really hung up on why it wont search out the X and Y endstops per my homing at the moment. If I hit homeall right now, X travels 10mm to the right from whichever current position it's in and Y moves directly forward from the new X position and stops at the front of the bed. Z goes to the endstop, ignores it and tries to keep going.



  • Sorry, my bad - just what I read here http://reprap.org/wiki/G-code#G0_.26_G1:_Move only mentions Deltas' not coreXY.

    Anyway, I'm a bit confused. The first post states that homing is to left rear. So if the motors are moving correctly, shouldn't Y+ be moving away from home -i.e. towards the front rather than away towards the rear?



  • The description of events when you press homeall and looking at your homeall.g fiile, seems to me that the endstops are permanently triggered as if they are wired active high but they are set to active low by using S0 in M574. Also, I'm a bit confused as to what you are using form Z homing. Is it a switch or is it a probe? - you seem to have both in your homeall.g file,



  • Z homing is endstop switch. It seems to me that regardless of everything, that if I go to the G code console in DWC and send a G1 S1 X-300 command that my X should go to the endstop, but it doesn't. As soon as I send that command, it immediately shows the X being at Home position.Yes, I've been wondering about those Z probe definitions and whether I need to comment them out. I've just had the Z endstop so far, but will be receiving the mini ir probe tomorrow and hope to implement it ASAP.



  • The config.g towards the top of this thread is outdated. Here's the current….........; CoreXY sample config file for dc42 Duet firmware

    M111 S0 ; Debug off
    M550 PDBot CoreXY ; Machine name (can be anything you like)
    M551 Preprap ; Machine password (used for FTP connections)
    ns)
    ;*** If you have more than one Duet on your network, they must all have different MAC addresses, so change the last digits
    M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ; MAC Address
    ;*** Wifi Networking
    M552 S1 ; Enable WiFi

    M555 P2 ; Set output to look like Marlin
    M575 P1 B57600 S1 ; Comms parameters for PanelDue

    ; Machine configuration
    M569 P0 S0 ; Drive 0 goes forwards (change to S0 to reverse it)
    M569 P1 S1 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes forwards
    M569 P3 S0 ; Drive 3 goes forwards
    M569 P4 S1 ; Drive 4 goes forwards
    ; 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 Z1 S1 ; set endstop configuration (X and Y and endstops only, at low end, active high)
    M667 S1 ; set CoreXY mode
    M350 X16 Y16 E16 I1 ; Set 16x microstepping with interpolation
    M92 X80 Y80 Z160 ; Set axis steps/mm
    M92 E418.5:418.5 ; Set extruder steps/mm
    M906 X800 Y800 Z1000 E800 ; Set motor currents (mA)
    M201 X2000 Y2000 Z100 E4000 ; Accelerations (mm/s^2)
    M203 X30000 Y30000 Z300 E1500 ; Maximum speeds (mm/min)
    M566 X600 Y600 Z24 E300 ; Maximum jerk speeds mm/minute
    M208 X300 Y180 Z320 ; 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 P1 X0 Y0 Z1 ; Analog Z probe, also used for homing the Z axis
    ;G31 Z1.20 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
    ;*** You can use S and B parameters to define the parameters of the thermistors you are using
    M305 P0 T100000 B4388 R4700 H0 L0 ; Put your own H and/or L values here to set the bed thermistor ADC correction
    M305 P1 T100000 B4388 R4700 H0 L0 ; Put your own H and/or L values here to set the first nozzle thermistor ADC correction
    M305 P2 T100000 B3974 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 ; 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
    the current.



  • You need to use M119 to make sure the endstops are working as expected.



  • M119 shows;Endstops - X: at min stop, Y: at min stop, Z: at min stop, Z probe: not stopped. My print head is currently near the center of the bed and Z is about 10mm from nozzle.


  • administrators

    @GBusy24:

    M119 shows;Endstops - X: at min stop, Y: at min stop, Z: at min stop, Z probe: not stopped. My print head is currently near the center of the bed and Z is about 10mm from nozzle.

    You have your endstops inverted. If they are simple microswitches, rewire them to use the two outer connections on each switch (the normally closed contacts). Otherwise, change S1 to S0 in the M574 command in config.g. See https://duet3d.com/wiki/Connecting_endstop_switches.

    Additionally, if your Y endstop is at the back of the printer then it is a max stop not a min stop, and you need to change Y1 to Y2 in your M574 command.


Locked
 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.