Welcome! Log In Create A New Profile

Advanced

z-endstop and print level setting

Posted by dwonh 
z-endstop and print level setting
September 30, 2013 10:29AM
I've just finished building up my first diy 3d printer
And last issue(I hope) remained to get my printer running.

Z-end stop is located at the top of z-axis.
And distance between print bed and tip of hotend at home position is little less than 120mm.
I set Z_MAX_POS to 120 in configuration.h in marlin firmware.
After leveling print bed, first layer of print should be 8.69mm (not z=0).

Here is my question,
Is there any way I can set my printer know current zero point (8.69mm, not 0) ?
I tried some change in slic3r but didn't work well.
I believe there should be a way to set zero point without repostioning z-endstop.

This might be too silly question for most of you guys, but please understand that
I never used 3d printer before.
Re: z-endstop and print level setting
September 30, 2013 02:52PM
TOP ?

Isn't it usually at the bottom, so that when your Z is at 0, your nozzle is just touching the bed.
That way it's easy to set your nozzle height exactly where it should be !
Re: z-endstop and print level setting
September 30, 2013 08:34PM
So, there is no method adjust 'zero-point' in software?
In that case, it is very strange because adjusting 'zero-point' would be much easier than
screwing or relocating z-endstop physically.
Re: z-endstop and print level setting
September 30, 2013 09:46PM
DaveS,

I know there are some people have there z-endstop at the top.
I just don't know how they configured in firmware or slic3r.

Most of all, how to configure specific z-height as start point of print.
besides adjusting endstop physically to set z=0 just above print bed, which is very difficult.

Regards,

Edited 1 time(s). Last edit at 09/30/2013 10:19PM by dwonh.
Re: z-endstop and print level setting
September 30, 2013 10:36PM
there is a way to zero it in firmware. post your configuration.h and we will help you out.
Re: z-endstop and print level setting
September 30, 2013 11:12PM
Here is mechanical setting of my configuration.h

**********************************************************************************************
// Disable max endstops for compatibility with endstop checking routine
#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
#define DISABLE_MAX_ENDSTOPS
#endif

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

// Disables axis when it's not being used.
#define DISABLE_X true
#define DISABLE_Y true
#define DISABLE_Z true
#define DISABLE_E true // For all extruders

#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false

// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR 1
#define Y_HOME_DIR -1
#define Z_HOME_DIR 1

#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true // If true, axis won't move to coordinates greater than the defined lengths below.
// Travel limits after homing
#define X_MAX_POS 110
#define X_MIN_POS 0
#define Y_MAX_POS 110
#define Y_MIN_POS 0
#define Z_MAX_POS 120
#define Z_MIN_POS 0

#define X_MAX_LENGTH (X_MAX_POS - X_MIN_POS)
#define Y_MAX_LENGTH (Y_MAX_POS - Y_MIN_POS)
#define Z_MAX_LENGTH (Z_MAX_POS - Z_MIN_POS)

// The position of the homing switches
//#define MANUAL_HOME_POSITIONS // If defined, MANUAL_*_HOME_POS below will be used
//#define BED_CENTER_AT_0_0 // If defined, the center of the bed is at (X=0, Y=0)

//Manual homing switch locations:
// For deltabots this means top and center of the cartesian print volume.
#define MANUAL_X_HOME_POS 0
#define MANUAL_Y_HOME_POS 0
#define MANUAL_Z_HOME_POS 0
//#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.

************************************************************************************************************
Do I have to change Z_MIN_POS according to actual distance between bed and nozzle?
Re: z-endstop and print level setting
October 01, 2013 01:21AM
am i right to assume you would want to zero z axis at 8.69mm? if so then make your max hieght 120-8.69

or #define Z_MAX_POS 111.31

when you home at z max, it will think its max limit is 111.31, and then home to what it thinks is zero or 8.69mm.


there is one other issue to consider, and that is step scaling. check at 100mm in each direction and measure with a known 100mm object or metric ruler to be sure of the distance. if it matches then your set!

Edited 1 time(s). Last edit at 10/01/2013 01:25AM by jamesdanielv.
Re: z-endstop and print level setting
October 01, 2013 02:05AM
jamesdanielv,

Thanks. I'll try today.
I thought it would be nicer if I can adjust those kind of settings in slic3r or repetier host and I believed it possilbe, but not.

Anyway, another strange thing in configuration.h occurred to me.

I see below settings are default, and does not make sense to me
Strangely, there are no problem in using 3 axis at all.
How come it is possible with all axis are disabled?

********************************************************************************
// Disables axis when it's not being used.
#define DISABLE_X true
#define DISABLE_Y true
#define DISABLE_Z true
#define DISABLE_E true // For all extruders
.....
#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
Re: z-endstop and print level setting
October 01, 2013 06:15AM
when the axis is no longer used such as when an x/y motion does not require z, or x/y does not move the axis will shut down (actually it goes to a memory idle state and starts back up to the same micro stepping)


it is advised to not have x/y or e disabled, unless you really know what you are doing. x/y can loose position and will only keep position if within the same step, so if it vibrates out of place and then gets re enabled position will be lost. z axis can be disabled as the amount of force required to rotate it without power is very high.


what you can do is this:



// Disables axis when it's not being used.
//#define DISABLE_X true
//#define DISABLE_Y true
#define DISABLE_Z true
//#define DISABLE_E true // For all extruders
Re: z-endstop and print level setting
October 01, 2013 12:04PM
jamesdanielv,

Thank you so much,

I have my first print successfully, after change code as you said.
Your comment was very helpful for noob like me.

One last question,
I saw "z offset" menu on "printer setting->general" in slic3r
I guess it it possible to use this value (like 8.69) instead of setting Z_MAX_POS value for same purpose?

I'll try later but I'm afraid that nozzle might crash into bed, if I'm wrong.

Thanks again.
Re: z-endstop and print level setting
October 01, 2013 05:23PM
z offsets in software are really for first layer adjustments. I would guess it could work, but there is a huge difference of 8.69 over travel and a 0-1mm travel on z axis. I'm coming from a more standardized approach, for example i only compile gcode once, and run it on 3 machines. the differences of the machine should be isolated in firmware as a good practice.


on another note, i have seen software errors occur every now and then and the z height offset is not included. likely it is human error, but very fatal. not something i want to do again. better off in firmware.

also whenever you perform a home to set positioning, it now will no longer crash the head.

Edited 1 time(s). Last edit at 10/01/2013 07:53PM by jamesdanielv.
Sorry, only registered users may post in this forum.

Click here to login