Store/Recall X,Y zero points

Hi Daniel and Guy,
Thank you for your input.

To clarify: My Shapeoko XXL has prox switches for homing. I also have the Z-Plus, zero probe and bit setter. My Carbon Motion is Build 513.

I entered Daniels code without any errors. But the Carbide Motion screen did still show the same XY location which I thought should have changed?.. Also, when I tried to jog, then any jog button made it move into the same direction (towards me and left), making the XY location on the screen more negative for both the X and Y axis.

Because my Carbide Motion is set for millimeters I also tried to enter G90 G21 G10 L2 P1 X-200.0 Y-200.0. That code also sent without any errors, but still no change of the XY location on the CM screen. However, this time I could jog normally afterwards.

I browsed to the links that Daniel provided and they are great. I just need time to study all that new stuff. I appreciate though if anyone could help me get started, suggestions for what I am missing and what I should try next?

I wrote a piece of software called “CMLauncher” where I can store as many “Zero points” as needed. You simply double click on the zero point you want and click a button to launch CM.

I gave Will a demo version, if he is ok with it I will make it available.

1 Like

@KHV

I started a similar thread a few days ago and I received all sort of responses…
I reached out to Luke who is the product dev manager I believe and was kind enough to suggested that if I want more control I should look at something else other than carbide motion for the time being. - Fair enough.

The suggestion was to look at CNCJS. I did and its awesome for the more “advanced” users. This is what Carbide motion should be emulating rather than the “toy” app they provide.

You need to spend a few short moment setting things up a bit but then you will be able to do much of what you would want to do with different work offsets.

1 Like

The XY zero is stored on the controller, in EEPROM, so it will persist across power cycles and restarts. The only way you will lose your previous zero is by setting a new one. In Motion, “Clear Offsets” will also reset your previous zero. As @gdon_2003 mentioned, there is always the possibility that your reference point (homing switches) will be slightly off.
G28 and G30 are user-defined parking locations if you want a couple more locations stored in addition to your work zero. Are you planning on using multiple locations? You can always take note of the MACHINE position, but the precision of the limit switches still comes into play.
In your case of using alignment pins, the best scenario would be to not home in between operations. Alternatively, you could mill side 1 (with holes to register), and then your first operation for side 2 would be to mill the holes for the pins (wouldn’t matter where they are in relation to side 1).
If you want to reuse the same registration holes for multiple jobs, I still think you’ll need to set zero if you can’t trust the homing switches.
Carbide Motion is more than capable of all of this as it is just an interface to grbl on the controller. You do not need to use CNCjs to do any of this, and I say that as a member of CNCjs (whatever that means).
The post of mine mentioned above was, I believe, in response to a user that didn’t know how to jog using the MDI. That thread was removed for some reason just before the data loss on the forum.

1 Like

Nick and CR,
Thanks for your input. I checked articles and videos for CNCJS and feel it is promising, but still in its early stages. I also do like the CMLauncher ability to store the zero points. I wish Carbide Motion had the ability to do that by itself.

At this point however I want to fully test the method that Josh mentioned early in this thread, by just using offset from a rapid position. It means that my homing switches must repeatedly switch at the exact same physical position and I will need to keep my own log for the XY offset from the rapid position. I will post my conclusion after the testing.

@neilferreri: Thank you for your information.
I realize that any homing switch has limited precision. My XXL came with prox switches. Do you know if their repeatable accuracy has been tested and what accuracy I can expect doing several ‘Initializes’?

I don’t want to drill new registration holes each time I start a new job or flip a piece to mill the other side because then my waste board would quickly look like Swiss cheese :slight_smile:

I am planning several jobs using registration pins, each job has different zero point location. Some of the jobs are double sided. I first mill the 1st side, then treat parts of that side with epoxy (that needs curing) before I can mill the 2nd side. For practical reasons it may be few day’s before I get to mill the 2nd side and in the meantime I want to run other jobs that have different XY zero points…

If you want to try CMLauncher, you can find it here:

CMLauncher

3 Likes

Nick Thanks,
I’ll give it a try.

@KHV I get sub-mm repeatability with my physical limit switches. For wood, I’ve never had an issue.

If I understand you now, you just want to be able to go back to a zero from a couple of days ago after changing zero a few times?

In that case, using G28 or G30 would be the simplest solution.
While the machine is at the XY zero you want to store, send G28.1 through the MDI. That will store your position. You can return to that position by simply sending G28 through the MDI. Note that it will move XY&Z siultaneously, so it’s a good practice to retract the Z first. Your G30 works the same way.

You can also just take note of MACHINE positions (I sometimes use a pencil on my wasteboard). Say your desired XY zero is at X-800 Y-420 (mm). You can send G53 G0 X-800 Y-420 (assuming mm mode which is default) and the machine will go to that spot. Then just set your zero there. It’s essentially the same as what @DanStory mentioned, but you’re saying “THIS is my work zero” instead of “My work zero is that far away from MACHINE zero”.
Lastly, you could use alternative work coordinate systems (G55-G59) as G54 is the default. You can store separate “work zeros” in each WCS. That can get messy if you forget to switch back to the WCS your job is in. I wouldn’t really recommend this unless you have an absolute need or you know exactly what you are doing. Apparently CM uses one of those WCS for something, but I haven’t looked into that.

Good luck!

2 Likes

@neilferreri,
Great info and I will try use the G28 and/or G30 for ‘my zero’ point storage…
Thanks, again :slight_smile:

…go put G28 on your code and tell me what happens. be careful with those recommendations people.

1 Like

As expected, my machine moved to my previously defined G28 position. XY and Z move simultaneously to get there. Are you having troubles with G28?

1 Like

G28 is a combo line of code, or a “two step” command. First it looks at an intermediate point (height of the spindle) then it rapid to XY. So you have to make sure that you have the correct Z height so that you don’t crash into a vise of fixture etc.

like I said, be careful how you implement that code.

1 Like

G28 will simply move to the previously defined G28 location, in one, straight line motion. As I’ve said, it’ll move X,Y, & Z together and caution should be taken.
You can use intermediate points with G28.
Let’s say my end mill is at X150 Y80 Z3, and my G28 location is X0 Y0 Z50. I can specify an intermediate point when using G28 to make my Z move straight up.
G28 X150 Y80 Z50 will move my end mill to X150 Y80 Z50 before continuing to X0 Y0 Z50
If you don’t specify an X & Y it will only move the Z, and not continue on to X0 Y0.
G28 Z50 will just raise your Z. Follow that with a G28 and you’re right where you want without crashing.
Another way would be to use G53 Z-10 to raise your Z to 10mm (I’m assuming mm) below the Z limit. Then use G28.

1 Like

Here from the horses mouth in case someone wants to verify the info:

What about G28 and G30?

G28 and G30 are not WCS settings.

G28 and G30 are persistent, stored positions that you can send the machine to with a single command. G28.1 and G30.1 are used to store the current machine position in absolute machine coordinates.

You set the G28 position by moving the machine to the position you wish to set and issuing G28.1. G30 is set the same way, but with G30.1. These commands do not take any values, and in v0.9 and possibly v0.8c of Grbl, passing a value will cause the machine to move.

Once they are set, you can issue the G28 or G30 command and the machine will move all three axis, at rapid speed , to the predefined position. This behavior can be changed w/ using suitable commands in versions of Grbl which support the additional inputs.1

Note: These commands will not raise the Z axis before moving the X and Y so use caution.

You can specify an optional, intermediate position by adding X, Y or Z values to the command.

Important Note: These coordinates are in the current WCS, not absolute machine values.

So if you wanted to raise the Z first, you could say G28 Z1.5 and it would rapid the Z to 1.5 - in the current WCS - and then rapid move X, Y and Z to the saved position.

2 Likes

Yes, that is the correct answer that should have been posted :wink: to avoid some newb form getting hurt.

1 Like

:man_shrugging:

2 Likes

Tonight I tested the G28.1 and G28… and it worked great!
From your guys posts I was aware that G28.1 also stores the current Z position, therefore I made sure to keep the bit in up position when I sent the code. I always re-do Z-Zero anyways when I start a new job or flip a piece. After sending the G28.1 code I did several tests, including making new XY zero points and turn the machine off/on… Then sent the G28 and tested the CNC recalled position by running my previous job on same wood piece that I had milled before and it ran the path without widening any previous groves.

2 Likes

UPDATE: I had noticed a strange behavior in the Carbide Motion build 513 software, but because my problem went away I thought I had just typed something wrong… Now I am convinced there is a BUG in my version of the software. If I enter code (like /G28) on the MDI page, then on the Jog page press ANY manual move button, then the machine just takes off and does not stop until it is at the last used rapid stop position. Does anyone else have this problem?.. What is the latest version of the CM software?

Btw: I can work around this by sending the code twice… Example: I type /G28, then wait until the machine is in position, then hit enter to send the /G28 again… after that manual buttons on the Jog page work normally again…

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.