Carbide Motion - Extend "Initialize Machine" capabilities

It would be nice if the 'Initialize Machine" sequence could be modified to support individual preferences. After Homing, it would be nice to be able to do things like:

  • Move to location (X, Y) (give co-ordinates to move to) (Edit - changed from “Specific Point”)
  • Move to a Rapid location
  • Retract on Z (may be unneeded, does homing always end with Z retracted?)
  • Zero (X,Y) to current location

So, for example my usage would be to Retract on Z, go to Rapid SW, zero to current, Rapid to S (where I do my tool changes).

I think this would be a good modification.

I think “Move to a specific point” and “Move to a Rapid Location” are basically the same thing - you would rapid first and then nominate that point as the post-homing location.

I would also like the tool change location to be specified independently and used when BitSetter tool changes are required. It’s too far forward for me and as others have mentioned, bits fall on the floor.

1 Like

So we can also add

  • Move to tool change location

By “specific point”, I meant you could specify the X and Y co-ordinates, not that there was just a single point that you could move to. I’ll edit.

Hehe… with all these suggestions, CM will be CNCjs in no time :slight_smile:

1 Like

Machine origin which is where the machine is when first initialized will always have Z fully retracted (well, at that distance from the switch the pull-off is set to in Grbl).

If one has a BitSetter the machine will move to the tool change position automatically.

Not sure if Zero XY is worth the added button as opposed to just requiring pressing two buttons — that would be a UI query for the developers.

I would actually like to see the whole intialisation process re-engineered, where a BitZero and BitSetter are installed.

I don’t like the fact the spindle homes then immediately moves to front and centre, prompts for the bit, does the BitSetter thing, then returns to front and centre - before you even load a file! And then it does the BitSetter thing all over again.

Surely there must be a better, more efficient way to do this?

I’ll need to think about this a bit more, but surely it should home, wait there until a file is loaded, run to front and centre to change the bit it it doesn’t already have the correct bit installed or go directly to the BitSetter workflow if it does (does the Shapeoko ‘remember’ which bit is installed?), then prompt the user to run the BitZero workflow, manually zero or no zero required.

That’s all :thinking:


The Shapeoko really has no way of knowing what bit is installed - obviously it could assume. I think it just knows the Z-zero (machine coordinates), and needs the related tool length offset so it can be used for the next tool change. With the BitSetter workflow you get an option to swap the tool at the start of every job, so this is necessary at the moment.

I agree with most of the other suggestions, the current initialization workflow is a little awkward in that I have to sequence loading material around the head, or switch screens to rapid jog it back out of the way since it wants to sit in front. Not a big deal, but great points to raise if we want to see improvements!

I appreciate that, but CM maybe could ‘remember’ that, with a bit of programming, in the same way it remembers X, Y and Z zero points, BitSetter settings, etc?

Then, when a file is loaded into CM, it could compare the ‘last known’ with the ‘to be used’ bit, and go frm there.

Just a thought!

Couldn’t agree more. There’s a long carriage dance that happens at the beginning of each startup. I need a feature that will let me “Run Again” with the same cutter, but a fresh workpiece, to gain some productivity. There should be no need to do all of that if just the stock is changed out, and you want to re-run the same code again to make a duplicate.

The start up dance is a compromise that suits several individual workflows. Could it be more consistent? Possibly it could but what would be the fallout? My thoughts about the initialisation process when BitSetter and BitZero are being used is not that well formed. I will try some thinking aloud. :thinking:

The use of BitZero and BitSetter are great additions to the workflow. It is possible to specify a starting point and know that the spindle will start at the specified origin because of the BitSetter probing sequence. To my mind (rightly or wrongly) knowing the workpiece dimensions and where the workpiece is situated should be the first link in the chain after design, to start the practical cutting of the design. Knowing what tool is in the spindle is unhelpful when you do not know what are the precise workpiece dimensions and where that workpiece is situated on the baseboard.

To this end, I agree with @NewToThis that when the spindle moves to the tool change location because BitSetter is installed, that this is less efficient than it could be. This is underscored by the fact that the software request a tool to be inserted, then measures the tool and centres itself in the tool change location again, while waiting for the .nc file to be loaded. After which, the tool change request is issued again and this time the software requests the tool from the numbered list, based upon the toolpath specified tool. The measurement of the tool takes place and the spindle returns to the tool change location.

In my mind, I have wondered why the tool change, using the tool number from the specified tool path tool, does not send the spindle to the start location over the workpiece. Obviously, if initialisation of CM results in the homing position check and then an instant tool change request, the opportunity to use BitZero has not yet taken place. For this reason, I think the initialisation sequence preferences in CM could usefully permit the user to set their desired preference as to the start up sequence they wish to use, as an active user specified workflow preference.

What I am requesting is that the CM software should know that a BitZero probe is in use and offer (as a preference) whether the user wants to follow the apparently hard wired current CM sequence or to design their own sequence. I would after switching the machine on and initialising CM want to load the .nc software file and determine where the workpiece is. Then when that X, Y and Z locating sequence is completed by BitZero, a CM prompt for the correct tool would appear on screen, and the spindle would move to the tool change location.

The tool would be inserted and measured by BitSetter and then at the completion of that sequence, the spindle would head over to the starting location on the workpiece and sit at say… a 5mm retract height. The instruction to start the spindle would then result in the cutting beginning. After the cut is completed, the spindle retracts to the full height of the Z axis and sits in the home location, ready for the BitZero process to begin again for a new piece of work. It could continue to facilitate multiple tool changes as it does now.

Does that sound rational? I dislike when I have paused the cutting sequence and try and make an adjustment. Let’s call it an emergency pause, as opposed to a pause for a tea break when everything begins again normally. This is where the machine now wont respond to jog commands or any attempt to change what was programmed in the .nc file.

I think I can understand why adjustments are not possible but I would like to stop and adjust the parameters if I see a cut is not progressing as I thought it should. I guess I am just being lazy about learning everything one needs to run a CNC machine but this is a hobby machine and planning for hobby users is an essential aspect of the software development.

I would like a feature which permits dynamic testing. That is to say that if I draw a simple design in CC and I discover a particular cutter/feed/speed is incorrect, I would dearly like to cut the same file (possibly from where I stopped the cut on discovering it was incorrect in respect of the parameters I specified) just by making some adjustments. This requires a direct connection from CC to CM and the ability to interrupt and restart a process.

I hope that @robgrz will read this explanation of the current use of CM and respond to the question of whether it is feasible or likely in the future roadmap for CM/CC.

Bloody hell, Jeff, were you saving up for all that? :rofl: :rofl:

I wonder if the limitation is hardware, rather than software, as both the BitSetter and BitZero run from the same header? But maybe not.

I understand the reason for initialisation process, as the machine does need to have a known datum point to start from, but I that should also the user’s starting point, too. The router’s out of the way, and there’s space to locate and secure the workpiece (and any guides).

Load the *.nc file and start the process…

From this point there should be several options depending on configuration (and I maybe complicating things too much) but you all know the workflows, so I’ll just name them:

If neither device is installed, CM should prompt for manually zeroing the cutter to the workpiece, followed by Go to start the cut.
If both are installed, CM should prompt for the cutter, do the BitSetter workflow, return to front/centre, prompt for zeroing (I appreciate there are several types and a v1 and v2 BitZero, but maybe the latter could be configured in the Settings?)
If just the BitZero is installed, CM should prompt for zeroing.
If just the BitSetter is installed, CM should prompt for the cutter and then do the BitSetter workflow, but it might not need to return to front/centre.

Then click Go to start the cut.

I think that makes sense?


It looks like this thread is starting to wander into “What should the start of a JOB do?” territory. I don’t have any useful opinions on that myself, so maybe split that into another thread?

I think these comments are kind of relevant, and if they’re considered by @Jorge and the team, that might help, but I’m not worried either way - I can’t split the thread for you though, sorry.

Yup. :wink:

I don’t know the answer to that question Peter… The question it raises is how much would any hardware limitation in each device have on process order. My intuition is none at all but a Carbide engineer would have to speak to that issue for any degree of certainty.

I may have misunderstood this but the home position of the spindle after switch on of the machine and CM initialisation does appear to be the same Cartesian address every time. The sound and the movement at the initialisation routine appears to be the same so I am prepared to believe that the machine is capable of homing correctly.

This would mean to me that CM always knows the starting position of the axes and the spindle. If you click on the legend ‘Position’ on the left of the CM screen, it changes to the legend ‘Machine Position’ and these numerical values appear to be the real position of the spindle and do not seem to vary. As far as I can tell, the user has no real choice but to use that original position as the starting point because all information about the initialisation is used from that point and no other.

As an aside… I do not switch on the machine to initialise it until after I have located and affixed my workpiece. It is an impromptu safety feature where I know that I cannot accidentally start the machinery while my hands are inside the work area between the X and Y axes.

Yes, I do this in CM software before initialisation of it. Having loaded my .nc file, I connect the cutter and initialise it. The SO3 completes its homing routine and then goes for a tool change for a known cutter, derived from the first toolpath to be cut. If I am using BitZero, I use this opportunity to insert the measurement dowel and press resume. The spindle now goes to the tool change location.

I now move the spindle to the centre or lower left edge of my workpiece and run BitZero’s routines for X,Y and Z position. After clicking done, the tool change routine moves the spindle to its front centre location and asks me to insert the correct tool. It measures the tool and returns to front centre and request I start the spindle. It then returns to the workpiece to cut it.

OK. This zeroing process has to be both for starting position on the workpiece and Z height where you want the cutter to begin. This assumes that you have the correct stock thickness entered added to the height of your baseboard ± spoilboard height when first setting up CC to design the piece.

It effectively already does this. I don’t believe it prompts for BitZero to be used but because the initialisation of CM, once BitSetter is enabled in the GRBL setup, moves directly to the tool change location, one cannot avoid this routine being processed in this manner.

It is this thing that I find to be processed in the wrong order. I don’t try to set up my machine without first setting up the workpiece and workholding required. I also don’t want to put a cutter into the collet of the spindle without knowing where that workpiece is going to be located in 3D space and also what size it is.

Then it is logical to select the cutter (as specified in the toolpath) based upon the information gathered. e.g. I have two 90° V cutters and one has a shank that is one inch longer than the other, apart from which they are identical. Seeing the values on the Machine Position segment of CM, I am in a position to decide which cutter would be best for maximum hold security and minimum deflection risk

Yes… I agree but I would want to extend that to whenever an active BitZero is installed that the option to run that cycle of probing first should be a preference. Prompt would you like to run BitZero? Not to put too fine a point on it, I would also prompt for the .nc file to be loaded immediately after initialisation and before any machine measurements take place.

I think it makes logical sense for BitZero to be the first thing run after the home cycle initialisation so that the machine could go to the tool change routine after it knew where the workpiece was located and what size it was. On receiving the done command it would send the spindle to the tool change location and the correct tool would be requested. Thereafter the measured tool and spindle would head for the correct start location.

If only BitSetter is installed then there is only the one machine routine to run. The location and size of the workpiece will have to be measured and entered manually. I think this process would still benefit from having the .nc loaded immediately after the homing routine.

Good comments, all.

Wait, you can do this? I didn’t think you could load the *.nc file before connect/intialise!

I’ll check next time I’m out there…

No, I had written this in the wrong order. Sorry. :exploding_head:

1 Like

Well, it was about 2:30am you wrote it!


Since retirement, I have no need to be in bed at any certain time. I had my face in the lessons for FreeCAD and did not see the time slipping by. Hey! You don’t have CCTV at my place do you? :wink:


Me? No…

But I think we’ve now definitely hi-jacked this thread, though. Sorry @mhotchin

I can fork it for you, but I wouldn’t know exactly where to cut/fork. Let me know.

1 Like