While the weather finally made a turn for spring here in Ohio, I decided it was time to do some cleanup work on my shapeoko 2. My waste board was good and thoroughly covered in cuts from other jobs, and my v-wheels were just covered in junk. Thus, my Sunday afternoon was spent cleaning things up and making my machine work its best again. Additionally, I implemented the touch probe functionality in GRBL, allowing for precise zeroing of the Z-axis.
Waste Board Resurfacing
Having just passed a year of owning my Shapeoko 2, my waste boards were quite marked up with over-cuts from old jobs. I’ve been using the original MDF waste board halves from the stock shapeoko bed, and had already replaced and flipped both halves as many times as I could. All the cuts and grooves made it annoying to clean, and less effective when using double sided tape.
It was kind of interesting to take a look at these waste boards and remember all the different projects I’ve worked on with this machine. I could recognize outlines from my rostock bases, parts for my E-stop bracket, and parts from my VR headset. With what I was planning to do I would basically be erasing all of this evidence.
My plan was to take one of these boards, cut it down to ~13 inches, mill in four new counter bored mounting holes and then resurface the whole thing. I ran downstairs quickly to use the band saw and cut it to size, then mounted it on top of my old waste board like it was just another piece of stock.
To make the counter bored holes, I setup two spiral drill operations in EstlCAM. I jogged the machine into position above where I wanted the hole, then ran the quick job. After that I jogged in the +Y as far as I could and then ran the counter bore job again. Then I jogged in the +X 180mm (the slots of my alum bed are 20mm center to center) and cut another hole. Finally, I jogged in the -Y to the final hole location. The result was a rectangular hole pattern that would fit onto my aluminum extrusion bed very nicely. I did make a small mistake with my first hole location, so there a couple extra holes that don’t actually line up with anything. Fortunately, after I turned the board around, they are outside the working area anyways. I then removed my old waste board and loaded in the new one.
My plan was to take roughly .125″ off the top to create a smooth, and perfectly level (to the spindle of the machine anyways) surface. I did this by taking two 0.05″ passes, and then a .02″ finishing pass. Due to geometry of the machine, I couldn’t reach all of the space, even with the 3/4″ router bit I was using. As a result, I did the first two .05″ passes in the orientation shown above, then cut a little deeper on the front edge and right edges (which will be out of the working area after rotating). After that, I rotated the whole board 180 degrees and then cut the final .02″ surfacing pass. The result was a nice, smooth and level surface. Additionally, I cantilevered the board over the edge a little and then edge cut it with a 1/8″ end mill to clean up that edge too.
The board was fairly smooth at this point. You can sort of see some lines already in the picture above, and I believe that is due to my spindle being slightly tilted. I cleaned it up with some 1000 grit sandpaper, and considered it “good enough.” At this point, the M5 x 12mm screws I was using were too close to the surface for comfort. Luckily, I had some low profile M5 x 10mm screws that worked just perfectly.
The final operation I did to the waste board was to engrave a 9″ x 12″ work area with .5″ grid spacing. I chose to use a V-bit do do this, and only used a .025″ depth of cut. I was very happy to see the bit cut over the entire surface, meaning the bed is quite level (at least within .025″). The lines are rather light, but they should still work. The origin is actually at X=0, Y=.2, but that is an easy thing to jog to for each job start.
The new board opens up a couple more of my bed slots, which should allow for better work holding placement. Also, since it is relatively flat, I should be able to enter the exact height of stock now and get little to no over-cut marks!
I also took a time lapse of the whole process, check it out:
My machine was quite messy from some recent jobs (specifically cutting blue foam) and as a result the v-wheels would bind up. My standard method for cleaning the v-wheels was to use my fingernail in the vee while moving the gantry. This sort of worked, but did not really clean the wheels enough. Previously, when my machine was torn apart, I used a wet wash cloth to clean them off, but I wasn’t about to take apart my whole machine every time I needed to clean my wheels. What I ended up doing was using an old toothbrush to scrub the wheels clean. This worked surprisingly well! The bristles were stiff enough to scrub away the gunk in the wheels but soft enough to get in there still. Suffice to say, I will be keeping a toothbrush near my shapeoko now.
The final part of this post is about how I implemented a touch probe to zero the z-axis. The basic idea is that an aluminum block is wired to ground, and the end mill is wired to the probe input via an alligator clip, then the z-axis slowly descends until the bit contacts the aluminum block and thus pulls the probe signal to ground. When this happens, the z-axis stops and then you can tell the machine that the current position is a certain height (the height of the plate). This gives you a nice easy way to zero the z-axis, as long as your touch plate is suitably flat and consistent. Luckily, as a student in mechanical engineering, I have access to a machine shop! The student machine shop here even has some scrap, which is all I really needed to make this touch plate. As it turned out, it was easier to ask a friend to machine it for me, since it has been a little while since I used a Bridgeport. I ended up trading some 3D printing services to him for machining services. Thanks John! The block he machined for me was fly cut on two sides to make it very flat, and he managed to make it very close to the target height of .500″ (I measured it at .501″, but my calipers are fairly cheap). He also drilled and tapped an M5 x 0.7 threaded hole to attach the ground lead.
The positive probe lead (red wire) is connected to the A5 pin on the arduino, and the negative lead (black wire) is connected to ground. I routed a wire from the arduino around the back of the shapeoko up the the front left corner and the zip tied it in place. There is enough slack in the line at the end to probe anywhere on my work area. When not in use, the plate fits in the small space in the front of my machine. My plan is to replace these moving wires with a retractable headphone cable to make it wind up when not in use.
To use the probe, a fairly simple G-Code command is used. G38.2 is that command.
G38.2 Zxxx Fyyy
As I understand it, there are two parameters to use with G38.2 to make it function. The Zxxx is by how much it will move before it’s declared a “probe failure.” The Fyyy declares what feed rate the probe action will be done at. The exact parameters I use are:
G38.2 Z-0.5 F1
This starts a straight probe operation in the Z-axis, probing no more than .5″ down at a feed rate of 1 inch/min. (or .5 mm down and 1 mm/min if you’re in metric units). After probing, you need to set the Z-height to the height of the touch probe and then raise the z axis to remove the probe plate and clipped lead.
I use the straight probe command in a UGCS macro to automate the process even more. My macro starts a straight probe, then sets the z-height to that of the probe plate and then finally raises the z axis .25″.
G38.2 Z-0.5 F1; G92 Z0.501; G91 G0 Z0.25 %Straight Probe, Set Zero, Pull up quarter inch.
After running the macro, unclip the end mill lead and move the touch plate away. If X and Y are already zeroed, simply starting a cutting job should now yield a good job.
GRBL also now supports TLO – Tool Length Offsets. This means that you can enter the lengths of tools relative to each other and after precisely zeroing with the touch plate, tool changes don’t require re-zeroing, just changing the physical bits. Doing this does require that you can load the end mills with the exact same lengths each time, which does pose a problem with the style of collet I use. Some of my end mills have stop collars on them, which does provide this consistent level, but not every tool I have has this feature. My plan of action to implement this is to mill out some stop collars out of HDPE with a slightly undersized hole, then heat this collar in boiling water and then install onto the shaft of the end mills. Hopefully, this will create a tight fit and a reliable reference point for my end mills that don’t have them already. More on this to come.