Building B-Carve

Under the hood maintenance update.

Its been 2.5 years since the first iteration of the machine. The ballscrew bearings have started to sound strange. I am not talking about the ballnut bearings. Those have been recently lubricated and run super smooth. There’s a bearing block on each side of a ballscrew. A fixed block on the side of the motor and a free block on the far end. The fixed side is the most critical. This is not something that can be dealt with lubrication, they need to be replaced.

A 1605 ballscrew uses the FK12 or BK12 type of bearing blocks on the fixed side. The blocks themselves have a very simple geometry (i.e. are easy to manufacture). But then why some of them can be found for $10 or less and some for $50 or more? Cause maybe the bearing blocks are identical, but the bearings inside them are not. The former category carry deep groove ball bearings (aka skate bearings), the latter carry angular contact ball bearings.

Guess which kind mine were…

So I started researching about angular contact ball bearings. In essence angular contact ball bearings are designed to withstand both radial and axial loads (as opposed to deep groove ball bearings’ radial only ability). They are available in a variety of configurations, but for this particular application I will just focus on the duplex face-to-face (DF) and duplex back-to-back (DB) arrangements. Here’s how I tried to visually summarize them.

In DF the load lines converge towards the bearing axis, in DB they diverge from the bearing axis. This makes DB more rigid, but DF more forgiving. Both arrangements need to be preloaded. In DF the inner races touch and the outer races need to be pushed together. In DB the outer races touch and the inner races need to be pushed together. The best way to get this right and not have to fiddle with spacers and guesswork is to get them in matched pairs. In that case the preload (i.e. gap between them) is specific and already taken care of during manufacturing.

The contact angle is significant as the higher the angle the higher the axial load that can be handled (image below taken from SKF).

contact_angle

As angular contact bearings are not a commodity (compared to skate bearings), there are not so many retail options out there. These are the ones I ended up with as a sweet spot between angle, precision, preload, price: 7001 for size, AC for 25deg contact angle (as opposed to C for 15deg), P5 for precision (DIN P5 = ISO Cass 5 = ANSI ABEC 5), DF for, well, DF and A for light preload. They come as a matched pair.

(Since I was going to swap the fixed sides, I got some new ones for the free sides too. There’s a single deep groove bearing there that can float in the bearing block.)

Are they really P5? All I can tell is that they wring together. I’ve only seen that with a pair of 1-2-3 blocks before, so some precision grinding is definitely there.

The total preload is between 0.10mm and 0.15mm.

Making sure that this

minus this

is more than the preload. No shim needed, bolting the top plate on the main body is enough to apply the preload.

Swapping was a breeze. It was understanding what I was doing and why that took most of the time.

6 Likes

I got a tool setter.

I checked out several kinds… like this, this, this. I also found how clones are made.

I eventually went with one made by a small german machine shop. I like how it’s built with 3 sets of dual contacts spread 120deg apart (just like a Renishaw touch probe). I found some youtube videos that showed great repeatability. It can trigger even if probed off center and it’s been tested with tools down to 0.3mm dia.

TLS-02s

Now, GRBL does not support M6, so it would seem that a tool setter will still require a lot of interruptions, loading of files, jogging, changing tools, probing. So what’s the benefit compared with just re-zeroing using a touch plate with each new tool? The answer would be nothing much… except…

…what if there was someone in the middle that translated M6 to a tool changing and probing macro? Someone who would parametrically assign a previously measured value to all subsequent probing operations? That way it would be possible to postprocess a whole setup of no matter how many tools in one single gcode file, measure once and let all probings happen automatically. Of course tool changes are still manual, we are not talking ATC here.

Well, bCNC can do exactly this.

2020-01-26-004422_1280x1024_scrot crop

You do this once and forget about it:

  • set policy to “Manual Tool Change (WCS)” (this workflow is based on that particular policy)
  • set the change tool location (the “get” button will copy the current location)
  • set the probing location (the “get” button will copy the current location)
  • set the fast probing speed (initial probing)
  • set the probing speed (final slow probing after initial probing touches and backs off a bit)
  • set the probing distance (try probing that far down, trigger an alarm if nothing touches)

You do this for each setup (in F360 terms, i.e. several operations with different tools but same Z0):

  • set Z0 (via touch plate, paper, however you like)
  • run a calibration (i.e. perform a probing with the same reference tool you zeroed to determine the tool setter’s height relative to Z0 …bCNC saves this as “toolheight”)

Then you hit run and every M6 will:

  • stop the spindle
  • pause the program
  • move to the predefined tool changing location (Z first to avoid collisions)
  • wait till you change the tool and hit resume
  • move to the predefined tool probing location (Z last to avoid collisions)
  • probe fast, probe slow
  • G10L20P1 Z[toolheight] (*)
  • go back to the predefined tool changing location (Z first to avoid collisions)
  • wait till you hit resume (second resume is optional, subject to user setting)
  • start spindle
  • wait 5 seconds (for the spindle to reach desired speed)
  • resume job

(*) this step is the glue for the magic to happen. By using a parametric macro it’s possible to save and assign the Z value from the calibration that happened earlier. If there was no need for this (e.g. if someone’s Z0 was a constant reference on the bed and so was the tool setter) they wouldn’t need to remember and assign any calibration value. A static macro would be enough… or even tweaking a postprocessor to statically translate M6. But if Z0 changes between setups, then the tool setter’s height relative to Z0 changes and someone needs to save and assign this value.

Speaking of postprocessors, there was one tweak I did for more convenience. If bCNC sees a comment in the M6 line, it will discplay this comment during tool change. E.g. this

T11064 M6 (1/4" 2F BALL ST23)

will show like this

2020-01-26-005628_1280x1024_scrot crop

This is a great reminder at the right time. What I entered as a comment was the tool description and the tool stickout. In some rare occasions I need to remember to pull the tool further out for reaching deep without risking a crash. So updating the stickout in F360 will reflect there. I used to print the setup sheet and mark by hand “WATCH FOR THAT MUCH STICKOUT”, circle it, highlight it, put stars and exclamation marks. Not anymore.

Here’s what this particular tweak in the GRBL postprocessor looks like. I commented out this block

/*
    if (properties.useToolChanger) {
      writeBlock("T" + toolFormat.format(tool.number), conditional(properties.useM06, mFormat.format(6)));
    } else if (properties.useM06) {
      writeBlock(mFormat.format(6));
    }
*/

and wrote this

if (properties.useM06) {
    writeBlock(
        conditional(properties.useToolChanger, "T" + toolFormat.format(tool.number)),
        mFormat.format(6),
        "(" + tool.description + " ST" + tool.bodyLength + ")"
    );
}

Btw, having a 3.5mm audio jack on the controller side I soldered a 3.5mm audio plug, so I can interchange between touch plate for zeroing once at the beginning of a setup and the tool setter for all tool probing within that setup. The former is NO, the latter NC, so I cannot use them in series (the tool setter won’t trigger) or parallel (the touch sensor won’t trigger). So I set $6=1 (normally low, high when triggered) in order to use

  • G38.2 (stop on contact, else error) for the tool setter
  • G38.4 (stop on loss of contact, else error) for the touch plate

Testing…

4 Likes

Dont have an xcarve, but subscribed to the forum just to like your posts. Keep up the good work man, been enjoying following your build for a long time.

Thanks :slight_smile:

I just realized it’s been 3 years since the beginning of this trip. Lots of ups and downs and many lessons learned along the way.

1 Like

Just patiently waiting till you instal atc spindle, migrate from grbl to something like uccnc and document entire process hehe :smiley:

wait… you made that beast of a machine and you are still using grbl?

Yes, still GRBL, still a little 328p chip. I haven’t hit the 30kHz step limit so far (I guess smoothing in F360 does help in this aspect), so why change to another controller?

The main reason for considering changing would be if I really wanted a 4th axis. I don’t care about ATC (not worth the extra payload, possible Z loss, the $$$ for holders, bigger compressor, etc) …my changes are super fast after setting up the tool setter.

The main reason for staying is that I cannot even imagine not having those 16 gamepad buttons that I know like the back of my hand. I don’t think a UCCNC or a Masso or an Acorn … or a Heidenhain :grin: can beat this.

1 Like

is feedrate override possible with grbl? Because I use that a lot!

Yes, feedrate override, spindle override, rapid override. See here.

1 Like

A while back when settling for the 0.74kW (1HP) spindle I was thinking I have plenty of room to try higher removal rates. Using the new spindle I had comfortably reached 60cm^3/min (3.6in^3/min) in wood but didn’t have a chance or feel the need to push it further. Until tonight. Accidentally. :smiley:

So as I was starting a 2D adaptive toolpath with a 8mm endmill that was supposed to cut perimetrically @17mmDOC and 1mmWOC, I didn’t pay attention and used a wider stock… which resulted, you guessed it, at slotting. 17mmDOC x 8mmWOC x 1600mm/min = 217.6cm^3/min (13.3in^3/min).

I swallowed my heart and did not press feedhold for the few seconds it took till it completed the first perimeter and then continued @1mmWOC as if nothing had happened.

…and just like that the bar was raised 360% higher.

1 Like

Can you do that again and take a video :grinning:?

1 Like

Iphigenia on the altar.

…and we’re off to take Troy.

cut data:
bit 8mm 2f
DOC 17mm
WOC 3mm (starts after the first perimeter)
F 3922mm/min
S 23732rpm
chip thickness 0.08mm
MRR 200cm^3/min
dustshoe-less for visibility (cleaning up took a lot longer)

3 Likes

love it!

The world would be quite different if no-one made mistakes… :slight_smile:

The hardest I have run mine at (intentionally) is 150cm^3/min
(10mm DoC, 6mm WoC at 2500mm/min in MDF )
I managed to smoke my old and trusty Makita when my machine failed to retract for a traverse, the “doubled down” making the lock nut hit the MDF. Magic smoke prevailed, new Makita purchased (did consider a VDF spindle…)

1 Like

@EliasPolitis I’m new to the CNC world and I am researching right now to purchase for my business. I’d like to get something from the start that has the 4th axis. This feature is important for some of my intended products. You seem like you know what your doing so I was hoping you could give some advice and recommendations to me?

You have a PM.

What are the red clamps you are using?

Legacy’s LowPro.

Four pairs was overkill in the experiment above. Two would be enough, but these were uncharted waters and didn’t want to risk it.

PS. I believe it was about that amount for 4 pairs back in 2017 when I ordered them. Now it’s 2 pairs.

1 Like

Thank’s Elias, I am reading through Building B carve over and over, is it 12 mm threaded rods for the ball screws and ballnuts for the X and Y, you said it is better to buy as a kit, and you got them from china, do you have a link for the supplier

They are the 1605 variety (16mm dia, 5mm pitch) and not buying them as a kit (i.e. ballscrews with matching ballnuts) was not worth the savings of buying ballnuts from China and ballsrews locally. This was the biggest lesson learned in this build. It took me a long time to source and try different sizes of bearings to match the separately purchased ballnuts.

Buying from a random AliExpress/eBay/Amazon seller can be a hit or miss in terms of quality => runout => whipping. The only reliable source I have seen in real life and can confidently recommend is a UK one:

That is in case you are in the EU. I am sure there are reliable sources in the US that I am not aware of.