DIY BitSetter

I’ve been toying around with this idea for a while now and finally got it to a point that I’m not scared to share it! I’m not sure if anyone here has attempted this or not, but here is mine.

I prefer setting my stock up in CAM with the Z Zero at the surface of the spoilboard; versus the top of the stock. So implementing a BitSetter would really make tool changes that much faster. So here is my work in progress…


It’s simply a limit switch inside of a 3D printed housing. The round pin has a smaller shaft on the bottom that presses against the button of the switch. There is a piece of metal (in this case a sanded dime) so that bits don’t dig into the soft PLA.

The BitSetter is also wired in parallel with the touch plate that Ryan sells, should I want to use it instead for whatever reason.

Here is a video showing it in action… I home all axis, change the coordinate system to G54. Move and zero my X and Y at an “origin” of my invisible stock, then simulate a bit change. The gcode uses G53 to move back to machine “zero”, resets the new bit height, and returns to my stock “origin”.

I was able to use the touch plate to measure the distance between the BitSetter’s trigger point and the spoilboard. I tested this measurement a dozen times and it stayed at the exact measurement (in my case) of 20.46mm each time. Pretty happy with that!

Would really like to hear your thoughts and input!

6 Likes

This is very cool. I created something similar using a push button, and after playing with it, decided it was just not accurate enough. But it sounds like using a lever switch, you got the accuracy you need. I encourage you to put it up on Thingiverse. I frequently use the top of the stock instead of the spoil board as my reference point. At first I thought this would eliminate a bitsetter-like solution, but then I found workspaces. You can zero the machine and bit in the global workspace but use the top of the stock and the offset from the origin in the local workspace. I’ve put this idea aside, but your success pushes it up my list of this to add to my MPCNC.

I think it’s a great idea. Pretty much exactly what I did and how I handle it, except I use cncjs and I have a macro that does the G53 and zeroing for me. I just have to make sure I’m up high enough to clear the button, run the macro, and boom set. I’ve got another macro that sets the zero to 1/8 over the spoilboard for when I lift the workpiece up.
I keep meaning to wire the mini touch plate in, but I’ve got them both on plugs and I hardly ever touch off the top so I just swap the plugs when I need to for now.
But…nice execution dude. Looks slick, and I like it.

1 Like

Ouch… Crop your image before those zip tie tails give Ryan a fit… :grin:

2 Likes

Thanks! I may do the thingiverse thing eventually. I want to put some miles on this first and see. Look forward to seeing your solution as well!

1 Like

Thank you!

Yes macros are what I use as well, except with Repetier Server. Really happy with the results.

1 Like

If love to see more information about G53/G54 in the docs. This seems like a neat solution.

4 Likes

This is what is working for me.

Home XYZ Macro: (Do this at beginning)

G28 X Y Z (My BitSetter happens to be at XY Zero)
G92 Z 20.46
G0 X0 Y0 Z60 F500
G54
G92 X0 Y0 Z60

BitSetter After Tool Change Macro

G53 G0 Z40 F500
G53 G0 X0 Y0 F5000
G28 Z
G92 Z 20.46
G0 Z60 F500
G0 X0 Y0 F4500

3 Likes

do you have plans to make this open-source? definitely a feature i want to add to my rig

edit: i guess i mean are you gonna upload the stl’s?

Absolutely! It has been working well so I’ll put together a tutorial of sorts and upload the files.

1 Like

I would like something like this.
I use the stock surface as my zero point.

And would like to move the tool to a fixed toolchange position before moving to the bitsetter for probing.

The script you uploaded is this all you use or has something been excluded?

1 Like

I have uploaded the 3D files to thingiverse. Included in the summary is the model of limit switch that will friction fit into the housing. Standard wiring practices for the limit switch apply (z-min, normally closed).

Before you insert the limit switch you must break off the little arm that is on it. The limit switch is simply a friction fit into the housing.

You must glue something metal onto the top of the round piece to prevent bits from pressing into the soft plastic. I used a dime that I sanded one face flat. It also helps to put some paste wax onto the round piece before inserting into the housing.


These are the two macro that I use to perform an initial zero and reset the bit after each change…

Home XYZ Macro: (Do this at beginning)

G28 X Y Z (My BitSetter happens to be at XY Zero)
G92 Z 20.46
G0 X0 Y0 Z60 F500
G54
G92 X0 Y0 Z60


Move Machine to Change Bit

G53 G0 Z60 F500
G53 G0 X250 Y0 F (Speed of Choice) (Moves machine to front to change bit)


BitSetter After Tool Change Macro

G53 G0 Z40 F500
G53 G0 X0 Y0 F5000
G28 Z
G92 Z 20.46
G0 Z60 F500
G0 X0 Y0 F4500


On initial setup of the Setter you must figure out the difference between the top of the spoilboard and the trigger point of the setter. Here is my recommended process for doing so…

  1. Zero your bit to your spoilboard with a piece of paper.
  2. Move your bit over to your setter and lower it down. Use the smallest movements you can when you are close and stop as soon as you hear the limit switch click.
  3. Write down the Z height of the machine (this is the difference between spoilboard and setter).
  4. On the second line of the Home XYZ Macro, insert this number after Z (This tells the machine the height difference).

Note: I also chose to surface my spoilboard so that when I zero my machine on the Setter, it is going to be true across the entire surface.


Notes:


  1. Your X and Y location could potentially be anywhere you decide to place the Setter. If this is not X0 Y0, then adjustments to the Macros are needed…

Home XYZ Macro (Adjusted):
G28 X Y
G0 X (Setter Location) Y (Setter Location) F (Speed of Choice)
G28 Z
G92 Z (Number you wrote down)
G0 Z60 F500
G54
G92 (Setter Location) Y (Setter Location) Z60

BitSestter After Tool Change Macro (Adjusted):

G53 G0 Z40 F500
G53 G0 X (Setter Location) Y (Setter Location) F (Speed of Choice)
G28 Z
G92 Z (Number you wrote down)
G0 Z60
G0 X0 Y0 F (Speed of Choice) (This moves your machine back to the XY Zero of your work piece)


  1. You need to be sure Z Min Software Endstop is disabled (This usually is by default on Ryans firmware I believe).

This is all that I can think of at moment. If there are any questions just let me know! Hope this works for everyone else as well as it has for me!

4 Likes

very cool, thanks for sharing!

1 Like

Looks like it has worked out well. Also, that blue layer on your trucks and corners looks sick. All that effort though, there has to be time to cut the zipties too, hehe! j/k

Thanks for sharing!

1 Like

Zip ties and get the wire wrap back on it… maybe one of these days! Haha

1 Like

Have you come across of a way to calculate this on the fly?

I mean if your zero is the stock top surface and not the wasteboard top surface. The this value will change from stock to stock item.

Hey, I just noticed your manual endstops. I have been using the little ones that are normally used for the automatic endstops, but yours look way better since they can’t move around when the MPCNC hits them. Do you have a Fusion Model that I could change to my exact values? That would be really great.

I haven’t gone down this path so I am unaware of any easy ways to accomplish this on the machine itself.

I use Fusion 360 so in the CAM portion I can set the Z Origin to the bottom of the stock. I can then setup the stock in CAM to match the height of the piece I’m placing on the machine.

1 Like

Sure thing! Here it is on Thingiverse.

They are setup to get the machine (with Makita Router installed) as close to the corner as possible without colliding. I use them for my sensorless homing with my TMC2209 drivers. But they can be used to manually square up as well!

1 Like

Uh, I forgot to ask: Which size are your rails? :smiley: