Print not starting in center of bed. Incorrect setting?



  • When save a print from the slicer, it located in the middle of the bed. All of the specs are correct in the slicer, upload the .gcode and run the print, the print starts off center, closer the Y low end side. Here is a couple of my config files, do I have something set wrong? The bed is 300 x 200, with a piece of glass that it is probably 280 x 180.

    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    ; generated by RepRapFirmware Configuration Tool on Sat Aug 04 2018 20:07:02 GMT-0500 (CDT)
    M561 ; clear any bed transform
    ; Probe the bed at 4 points
    G30 P0 X15 Y15 H0 Z-99999
    G30 P1 X15 Y175 H0 Z-99999
    G30 P2 X280 Y175 H0 Z-99999
    G30 P3 X280 Y15 H0 Z-99999 S

    ; Configuration file for Duet WiFi (firmware version 1.19.2)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Sun Aug 05 2018 14:15:49 GMT-0500 (Central Standard Time)

    ; General preferences
    M111 S0 ; Debugging off
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin

    M667 S1 ; Select CoreXY mode
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X280 Y221 Z300 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y2 Z1 S0 ; Define active low and unused microswitches

    ; Drives
    M569 P0 S0 ; Drive 0 goes forwards
    M569 P1 S0 ; Drive 1 goes forwards
    M569 P2 S0 ; Drive 2 goes forwards
    M569 P3 S1 ; Drive 3 goes backwards
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    M92 X100 Y100 Z400 E148 ; Set steps per mm
    M566 X600 Y600 Z24 E300 ; Set maximum instantaneous speed changes (mm/min)
    M203 X30000 Y30000 Z300 E1500 ; Set maximum speeds (mm/min)
    M201 X2000 Y2000 Z100 E4000 ; Set accelerations (mm/s^2)
    M906 X800 Y800 Z1200 E1000 I30 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Heaters
    M143 S250 ; Set maximum heater temperature
    M305 P0 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 0
    M305 P1 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 1

    ; 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

    ; Network
    M552 S1 ; Turn network on
    M550 PDuet ; Set machine name
    M552 P172.16.0.28
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S1 ; Enable Telnet

    ; Fans
    ; Fan 0 is used as the part cooling fan for tool 0 (see M563 in the Tools section above)
    M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 (hotend) value, PWM signal inversion and frequency. Thermostatic control is turned on.
    ; Fan 1 not connected
    ; Fan 3 not connected

    ; Custom settings are not configured

    ; homeall.g
    ; called to home all axes
    ;
    ; generated by RepRapFirmware Configuration Tool on Sun Jun 18 2017 14:15:49 GMT+0300 (FLE Standard Time)

    ; Relative positioning
    G91

    ; Lift Z
    G1 Z5 F6000

    ; Course home X or Y
    G1 X-280 Y215 F3000 S1
    ; Course home X
    G1 X-280 F3000 S1
    ; Course home Y
    G1 Y221 F3000 S1

    ; Move away from the endstops
    G1 X5 Y-5 F6000

    ; Fine home X
    G1 X-280 F200 S1
    ; Fine home Y
    G1 Y221 F200 S1

    ; move Z down until the switch triggers
    G1 Z-300 S1 F400

    ; back to absolute mode
    G90

    ; homex.g
    ; called to home the X axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sun Jun 18 2017 14:15:49 GMT+0300 (FLE Standard Time)

    ; Lift Z relative to current position
    G91
    G1 Z5 F6000
    G90

    ; Move quickly to X axis endstop and stop there (first pass)
    G1 X-290 F3000 S1

    ; Go back a few mm
    G91
    G1 X5 F6000
    G90

    ; Move slowly to X axis endstop once more (second pass)
    G1 X-290 F360 S1

    ; Lower Z again
    G91
    G1 Z-5 F6000
    G90

    ; homey.g
    ; called to home the Y axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sun Jun 18 2017 14:15:49 GMT+0300 (FLE Standard Time)

    ; Lift Z relative to current position
    G91
    G1 Z5 F6000
    G90

    ; Move quickly to Y axis endstop and stop there (first pass)
    G1 Y221 F3000 S1

    ; Go back a few mm
    G91
    G1 Y-5 F6000
    G90

    ; Move slowly to X axis endstop once more (second pass)
    G1 Y221 F360 S1

    ; Lower Z again
    G91
    G1 Z-5 F6000
    G90

    ; homez.g
    ; called to home the Z axis
    ;
    ; generated by RepRapFirmware Configuration Tool on Sun Jun 18 2017 14:15:49 GMT+0300 (FLE Standard Time)

    G91 ; relative mode
    G1 Z4 F3000 ; raise head 4mm to ensure it is above the switch trigger height
    G90 ; back to absolute mode
    G1 X0 Y215 F5000 ; put head wherever you want it to be when you home Z (omit this line if it doesn't matter)
    G91 ; relative mode
    G1 Z-300 S1 F400 ; move Z down until the switch triggers
    G90 ; back to absolute mode



  • I think what you're running into here is the difference between the size of the bed and the location of the end stops.

    You say your bed is 300x200 with 280x180 piece of glass on it. Then in your config you have your axis minima and maxima set as

    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X280 Y221 Z300 S0 ; Set axis maxima
    

    I'm guessing the endstop where the 0 coordinate lies is actually off the edge of the glass. You'll need to compensate for this in one of two ways.

    1. measure the true length of the axis from endstop trigger to extent of physical motion at the other end. Then measure the distance between endstop trigger and the edge of where the printable surface actually starts. Where the print surface starts is actually your 0 point, and everything from there to the endstop can be treated as a negative value. So if the endstop is 10mm away from the print surface, use -10 as your axis minima. That way the 0 point set in your slicer will start on the print surface rather than at the endstop.

    2. Depending on the slicer you can set an offset there so it knows that your 0,0 origin is actually some distance from the endstop. How this is done varies by slicer.

    Here's a blog post that goes into it a little more detail. https://drmrehorst.blogspot.com/2017/08/setting-up-corexy-printers-origin-and.html

    and here's one that goes even further and goes for option 3, which sets the center of the bed as 0,0 which makes it slicer agnostic. https://drmrehorst.blogspot.com/2018/07/ummd-better-way-to-set-up-origin-and.html

    Hope this helps.



  • You say the bed size is 300 X 200 with piece of glass that is 280 X 180. Yet you've set the axis Maxima to be 280 X 221. That's 41mm wider than the piece of glass you are printing on. So the centre for Y will be about 110mm yet the physical centre is only 90 mm
    Edit. Was typing at the same time as the other poster.



  • @deckingman Sorry Ian, I guess I should leave some for the rest of you. 😜



  • @phaedrux said in Print not starting in center of bed. Incorrect setting?:

    @deckingman Sorry Ian, I guess I should leave some for the rest of you. 😜

    No you carry on. I'm just finishing my coffee then I'll be off to work.😉



  • @deckingman No can do, it's time for bed, someone else will have to pick up the slack.


  • administrators

    I have set the M208 limits on all my printers so that X=0 Y=0 is at the centre of the bed. Then I can always slice with the print centred at (0,0) in the slicer, and I can run the same GCode files on any of the printers if I'm not too worried about optimising print quality.



  • @phaedrux & @dc42 - Ha, SMH.....seriously sometimes it is obvious and another set of eyes can make you see the problem. I overlooked the small stuff, I changed one line and it is perfectly centered,

    M208 X300 Y200 Z300 S0 ; Set axis maxima


Locked
 

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