Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  
corngolem

Setting Z=0

Recommended Posts

The UltiController is supposed to have a Set origin feature but it's not in the Prepare menu anymore. How can I position the bed (manually or not) and then tell the printer this is the new Z=0 ?

Bed levelling is a distinct procedure and Z top switch positioning is another distinct procedure.

P.S. this must have been asked many times before but the answer hasn't been made obvious.

 

Share this post


Link to post
Share on other sites

Most of us don't have a distinction between home and a prepared bed.

You can do this by messing with the gcodes in the start/end gcode tab. Learn about the gcodes first here:

http://reprap.org/wiki/G-code

Or if you only want to do this to one print ever then edit the gcode after you "prepare" (slice) your stl.

But why do you want to do this? I always run the z home command, then move the print head around with my hand and use a piece of paper to check the height at all 4 corners and make sure there is *very* little space. The paper should be just barely slightly tight.

Then when you hit print, it levels and goes to your layer 0 height (typically .3mm in Cura) and starts printing at that height above your bed.

 

Share this post


Link to post
Share on other sites

Most of us don't have a distinction between home and a prepared bed.

You can do this by messing with the gcodes in the start/end gcode tab. Learn about the gcodes first here:

http://reprap.org/wiki/G-code

Or if you only want to do this to one print ever then edit the gcode after you "prepare" (slice) your stl.

But why do you want to do this? I always run the z home command, then move the print head around with my hand and use a piece of paper to check the height at all 4 corners and make sure there is *very* little space. The paper should be just barely slightly tight.

Then when you hit print, it levels and goes to your layer 0 height (typically .3mm in Cura) and starts printing at that height above your bed.

 

Bear in mind also that any setting of z=0 via gcodes or the ulticontroller will only last until the printer is power-cycled. The activation of the limit switches are how the printer identifies the origin of it's coordinate system. Once you power-cyle the printer, it has no idea where it is in space until you have performed a homing operation and triggered the switches.

 

Share this post


Link to post
Share on other sites

But why do you want to do this? I always run the z home command, then move the print head around with my hand and use a piece of paper to check the height at all 4 corners and make sure there is *very* little space. The paper should be just barely slightly tight.

Then when you hit print, it levels and goes to your layer 0 height (typically .3mm in Cura) and starts printing at that height above your bed.

 

Why I want to set Z=0 ? because moving the bed on its axis is the logical and practical way to set the distance between its surface and the nozzle, which is required for printing properly.

What you describe is bed levelling (making 4 points of the bed equidistant from the vertical print head).

Limit switches as their names imply are for something else than homing. For XY it doesn't matter but for Z the precision required is too great to be attained by moving the Z top switch.

I tried homing automatically then moving the bed manually to the proper distance so as to change where Z=0 really is, but it homes again before every print so it's useless.

I'm not going to bother with gcode, I want a permanent solution.

 

Share this post


Link to post
Share on other sites

The permanent solution is to use the limit switches for homing before each print after having adjusted the bed to be perfect after homing the z-axis. This is the way all of these types of printers work and the precision is more than enough for this purpose.

You may want to print this: http://www.thingiverse.com/thing:11033 to make it easier to adjust though.

Also, unless you add homing switches in addition to the limit switches how do you propose the printer is supposed to know where it is before starting a print? I know using the limit switches for both purposes might not be the correct way of doing it in the world of "real" CNC machines but for our use it works just fine.

 

Share this post


Link to post
Share on other sites

I removed it. Because of the reasons mentioned above. A 3D printer is not a CNC mill, so it shouldn't try to act like one.

And fine-tuning the Z endstop is a bitch. There are a few solutions on thingiverse that help. But what I always do is not fine-tuning the endstop, but fine-tuning the 4 bed screws. This gives much better control then the Z endstop.

 

Share this post


Link to post
Share on other sites

Also, unless you add homing switches in addition to the limit switches how do you propose the printer is supposed to know where it is before starting a print? I know using the limit switches for both purposes might not be the correct way of doing it in the world of "real" CNC machines but for our use it works just fine.

Those switches (at least their implementation) are not adapted for calibration, so adding extra switches would only repeat the problem. The printer would know where its print head is because we would have used the Set origin and Store memory functions and it could find it again from the limit switches. example= Z=0 corresponds to Z top limit + 0,45mm

That screw and plastic fine tuner seems like an excellent solution that should be adopted by Ultimaking. Too bad I can't print it.

I removed it. Because of the reasons mentioned above. A 3D printer is not a CNC mill, so it shouldn't try to act like one.

So you removed a feature that made something very difficult very easy, that did not pose any issue, for a reason that nobody cared about ? This can only be a bad decision.

Both are CNC mills and 3D printers are 3D coordinates machines, so they can share solutions, even use any solution. In the end, it's the usability that rules over.

 

Share this post


Link to post
Share on other sites

I'm not going to bother with gcode, I want a permanent solution.

Playing with gcode would be a permanent solution. I guess you misunderstood. You asked for a way to *not* run home before printing. The answer is in Cura. Go to the start/end-gcode tab, look for the line that says "move Z to min endstops". Comment that out by putting a semicolon as the first character on the line. DONE. Now when you start printing it will use the current Z height as zero. Or you can *add* a move z command up or down and have the G92 reset *that* position as zero. or you can use the g92 command to set the initial position to any value you want - you can make the start position considered "1" and then the printer will treat zero as 1mm below where it starts printing.

 

Share this post


Link to post
Share on other sites

So there are thousands of users of the ultimaker and a few people have built optical endstops which are probably more accurate than the limit switch but the limit switch seems to be consistent much more than .1mm so it works fine for us.

The bed warps, tilts, changes over time. Especially the first few months. I have to re-level every day as the part of the bed towards the front keeps drooping from day to day. By now I can now usually do it in under a minute with a piece of paper. It's not a big deal or people would have modified the ultimaker by now. The most common leveling changes are things like stronger springs, 3 screws instead of 4, but changing the Z=0 height isn't an issue.

I'm sorry you are having trouble printing. Maybe if you post a picture or video of the issue someone can help.

 

Share this post


Link to post
Share on other sites

The limit switch is accurate up to 2 micron in repeatability. Yes, that accurate. It the bed that is changing shape on most machines (but not all of them) depending on the printer this can cause up to 0.5mm difference in tilt. But a tilted platform needs re-calibration not just a different Z start height.

Manually setting an origin on a CNC mill is done to mark the position on the material that you are milling. With a 3D printer you don't have material, so no need for an origin point on it. The normal start code that everyone uses also overrides the origin point, as well as homing resets the origin point.

Just because you used it doesn't make it a good idea. Nor makes me stupid for removing it. And it's commented out in the firmware, you can always put it back in yourself. So far you're the first to bitch about it, and before that I've seen multiple questions from people asking what the option did (which could only be explained as "it does nothing in a normal setup")

 

Share this post


Link to post
Share on other sites

Corngolem - I can't help but think that your workflow is probably more complicated than it needs to be. But if you just can't live without the ability to set the origin point manually, just use a text editor to create a one line gcode file, and store it on your SD card.

The line needs to be:

G92 X0 Y0 Z0

If you're only interested in setting Z, then leave the x and y parts out of the line.

Then, when you have the head where you want it, just run that file from the SD card.

Share this post


Link to post
Share on other sites

That won't work as there is already a g92 in there. And he wanted a *permanent* solution. So I gave him one in my previous post.

 

Share this post


Link to post
Share on other sites

I was just responding to the issue that the 'Set Origin' option is now gone. All that did was to execute a G92 X0 Y0 Z0 command. So putting that in a dedicated gcode file that he can run whenever he wants does EXACTLY the same thing. The command only ever lived in the Prepare menu, as far as I can see, so it went away during printing (to be replaced with the 'Tune' menu). Therefore, this was something that Corngolem wanted to be able to do outside of a print, when running a file from the SD card would be an accessible option.

I agree that it's kinda redundant, and that you'd also need to edit the start gcode to remove any extra homing commands etc. But since I'm not sure I understand the workflow that we're trying to recreate here... I was merely offering it as an alternative for the missing command that was being complained about.

 

Share this post


Link to post
Share on other sites

Why I want to set Z=0 ? because moving the bed on its axis is the logical and practical way to set the distance between its surface and the nozzle, which is required for printing properly.

What you describe is bed levelling (making 4 points of the bed equidistant from the vertical print head).

Limit switches as their names imply are for something else than homing. For XY it doesn't matter but for Z the precision required is too great to be attained by moving the Z top switch.

I tried homing automatically then moving the bed manually to the proper distance so as to change where Z=0 really is, but it homes again before every print so it's useless.

I'm not going to bother with gcode, I want a permanent solution.

 

I agree with you. My CubeX separates the bed leveling process from the Z-height adjustment and I've found it to be easier to get a really level bed without having to set perfect print height at the same time. Once it's perfectly level, the Z-height setting is truly the same over the entire bed when you set it. On the other hand, it's a 3 point level system and I prefer the 4 point on my Ultimaker for the leveling aspect. Just because a plane CAN be defined with only 3 points, doesn't mean it SHOULD be defined that way. Because it's 3 points, when you lower the right rear corner, the front left corner moves up. It's definitely trickier to get to "level" than four point. At least the CubeX has lock nuts which prevent the bed level from changing print-to-print. I have to level my bed every 3 or 4 prints on the Ultimaker. I did it once on the CubeX and tightened the lock nuts down to keep it that way. Plus, the plastic build plate isn't perfectly flat on my Ultimaker. It has a slight upward warp on the right side. It makes large prints less accurate and perfect leveling impossible. The build plate on my CubeX is laminated layers of glass with a white ceramic surface. It's really flat with no flex. If it just had 4 point leveling, it would be perfect. As it is, neither is perfect.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Our picks

    • Taking Advantage of DfAM
      This is a statement that’s often made about AM/3DP. I'll focus on the way DfAM can take advantage of some of the unique capabilities that AM and 3DP have to offer. I personally think that the use of AM/3DP for light-weighting is one of it’s most exciting possibilities and one that could play a key part in the sustainability of design and manufacturing in the future.
        • Like
      • 3 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!