Sunday 25 April 2021

Measuring the thread mill effective diameter

The datasheet for the Simturn DX boring bar with threading insert seems to be suggesting an effective diameter of 5.5mm but it's clear this isn't how mine behaved. I needed more infeed than that in the end. So let's do a quick measurement on the machine. But how to do it?

One obvious(?) method might be to cut a slot or hole with the tool and simply measure the resulting diameter. Sounds fairly straightforward but this is a pointed cutter and not a very robust one at that. 

I don't need ultimate precision here and the machine itself is hardly in watchmaking territory, having an achievable accuracy of around 20-30um on a good day. So let's be sensible here. Do this:

  • Insert tool in spindle
  • Hold crappy calipers in vise
  • Touch off tool against fixed caliper jaws
  • Rotate tool 180 degrees and close caliper jaws onto tool.

Read off the measurement - 19.57mm

Subtracting the 10mm pin gauge (aka broken tool) gives an effective diameter of 9.57mm. Indeed this is somewhat less than the 11mm suggested by the datasheet. This may explain why I needed rather more infeed than expected.

I've now created an updated tool for this threadmill application, with an effective diameter of 9.57mm. Hopefully there will be less trial and error at the machining stage now.

VFD setup for the Bantam

Next on the LinuxCNC system for the Bantam is the VFD interface. I need to connect up the spindle speed control (digital potentiometer), spindle enable and spindle direction outputs from the 7i76 card to the VFD. I'd also like to feed back a "spindle at speed" and/or "VFD fault" outputs from the VFD back to the controller.

I have a VFD on the machine already, set up for manual control using a multiturn pot and a couple of switches plus and e-stop. Works fine and this is pretty much what I need for the LinuxCNC system. However, it's all wired up and would require significant rework. 

I have a second, identical VFD on the shelf that came off the Bridgeport when I fitted the Newker CNC controller to it. This also has a pot, on/off and direction switches etc, plus the operator panel all mounted in a diecast box. It seemed rude not to take the opportunity to fit a Yaskawa V1000 VFD, so this original VFD came spare.

If I reuse this spare VFD, I can leave the existing setup untouched, in case I need to use the lathe in manual mode the meantime. All I have to do is connect the motor to the other VFD and we are good to go. Sounds simple enough but as ever, the details will doubtless take some working out.

This needs a bit of rework. The remote operator, pot and switches were made up for the mill. They can come off for starters.

Here's the other VFD currently fitted to the Bantam

For the record, here's the new signal wiring.

I've wired it for "mode 03" ie Stop/Start (one wire), Fwd/Rev (another wire) and remote pot (speed control). There are 2 uncommitted relays that I have wired for VFD Fault and Spindle at Speed. The fault will eventually be wired into the e-stop circuit. The Spindle at Speed signal is handy to let the controller know when it's sensible to start machining.

At the 7i76 end, things are still a bit messy and will remain so until I have a cabinet to assemble these parts into. For now it's a bench lashup. Luckily most of the connections are missing from this pic.

Note that the digital outputs are all floating, as are the VFD IO. So you need to ensure the IO have a ground (0V) return to reference them to the correct level.

HAL file setup:
Some changes / additions are needed to get things running. For instance, the spindle-vel-cmd-rpm-abs    <=  spindle.0.speed-out-abs line was missing, which is needed to feed the spindle speed command to the pid.s module, otherwise nothing comes out of the digital potentiometer. You can see why that's needed by looking further up in the HAL file:


setp   pid.s.Pgain     [SPINDLE_0]P
setp   pid.s.Igain     [SPINDLE_0]I
setp   pid.s.Dgain     [SPINDLE_0]D
setp   pid.s.bias      [SPINDLE_0]BIAS
setp   pid.s.FF0       [SPINDLE_0]FF0
setp   pid.s.FF1       [SPINDLE_0]FF1
setp   pid.s.FF2       [SPINDLE_0]FF2
setp   pid.s.deadband  [SPINDLE_0]DEADBAND
setp   pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp   pid.s.error-previous-target true

net spindle-index-enable  <=> pid.s.index-enable
net spindle-enable        =>  pid.s.enable
net spindle-vel-cmd-rpm-abs     => pid.s.command
net spindle-vel-fb-rpm-abs      =>
net spindle-output        <=  pid.s.output

# ---digital potentionmeter output signals/setup---

setp   hm2_5i25.0.7i76.0.0.spinout-minlim    [SPINDLE_0]OUTPUT_MIN_LIMIT
setp   hm2_5i25.0.7i76.0.0.spinout-maxlim    [SPINDLE_0]OUTPUT_MAX_LIMIT
setp   hm2_5i25.0.7i76.0.0.spinout-scalemax  [SPINDLE_0]OUTPUT_SCALE

net spindle-output      => hm2_5i25.0.7i76.0.0.spinout
net spindle-enable      => hm2_5i25.0.7i76.0.0.spinena
net spindle-ccw         => hm2_5i25.0.7i76.0.0.spindir

The main changes are shown in bold. The inputs from the VFD to the 7i76 are on pins 04 (Spindle at Speed) and 05 (VFD Fault). The former is connected through and seems to work. The latter is set up but not connected to the e-stop circuit yet. I commented out the default sets spindle-at-speed true line, as I now have a "real" signal for that.
# ---setup spindle control signals---
net spindle-vel-cmd-rps        <=  spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs    <=  spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm        <=  spindle.0.speed-out
# Added this and commented it out in the WHB hal file 
# - otherwise pid.s.command doesn't have anything to work with:
net spindle-vel-cmd-rpm-abs    <=  spindle.0.speed-out-abs
# Added this and commented it out in the WHB hal file:
net spindle-enable             <=  spindle.0.on
net spindle-cw                 <=  spindle.0.forward
net spindle-ccw                <=  spindle.0.reverse
net spindle-brake              <=  spindle.0.brake
net spindle-revs               =>  spindle.0.revs
net spindle-at-speed           =>
net spindle-vel-fb-rps         =>  spindle.0.speed-in
net spindle-index-enable      <=>  spindle.0.index-enable
# ---Setup spindle at speed signals---
# sets spindle-at-speed true
net spindle-at-speed           <=  hm2_5i25.0.7i76.0.0.input-05
# Not connected up to e-stop cct yet:
net vfd-fault                  <=  hm2_5i25.0.7i76.0.0.input-04

This seems to work as intended although I had to comment out a couple of lines in the wireless pendant HAL file (xhc-whb04b-6.hal) to avoid startup errors. Not 100% if this is an issue but for now I have a result. 

Took a while to figure stuff out. mainly the connection to the pid.s module and the fact that some connections are actually made in the whb04b HAL file.

That'll do for now....

Thread milling with Simturn boring tool

I need to create the M16 x 2.0 thread in the solid pillar for the Multifix toolpost. I don't actually have a tap for this thread size, so my plan is to mill it using a single point tool. Or more precisely, I'll use the Simturn boring bar with an internal threading insert. When I bought the boring bar from Cutwel, I bought profile, threading and boring inserts (2 of each). 

The threading toolpath is easy to set up once you have a suitable tool in the tool library. But therein lies the issue. The "threading tool" function in the tool library seems to have some sort of  "bug" ie the software engineer in charge fucked up and didn't test it properly. The result is that when I try to create a 3mm tool with a diameter less than around 12mm, the cutter profile created gets screwed up.

I posted about this on the Fusion manufacturing forum, so not much point recreating it all here. Sure enough, they seem to have fucked up.

Finally bit the bullet and created a form tool instead of persevere with the thread tool feature. The dimensions are all given in the datasheet for the DX tools.

This did the trick. CAD model visible:

CAD model hidden. You can see how the toolpath is expected to look.

Off we go. I mean, what could possibly go wrong etc

"Pitch diameter offset":
Went OK although I had to play with the "pitch diameter offset" setting in the thread operation CAM dialogue box. This wasn't well explained. 

You need to start off with a bore of the right diameter, ideally the root diameter of the thread. Then based on the form of the tool, root and crest, you need to specify the "pitch diameter offset". WTF is that? It's basically the amount of infeed you need to achieve the required thread depth.

John Saunders has a video on the matter, which helps to lay out some of the basics:

Metric thread dimensions - the theory:
It's not a black art but equally the dimensions of the std metric thread form are not necessarily obvious. There's a pretty reasonable, copyright-free summary on Wikipedia.

In short:
  • The "major diameter" (in my case 16mm) is measured to the flats of the crest, not the "pointy" tip of the triangular form.
  • The flats of the crest account for 1/4 of the pitch length.
  • The flats in the troughs account for 1/8 of the pitch length.
  • The 60 degree angle gives a height to pitch (H:P) ratio of cos 30 ie (sqrt 3) / 2
  • The "effective pitch diameter" is positioned on the centre line ie midway between the "pointy" bits. This is not the same as the mid point between the crest and trough.
  • The "pitch diameter offset" is calculated based on the radial difference between the flats of the crests and the troughs.
That all seems fairly reasonable. However, if you are dealing with Fusion 360 (or taking guidance from John Saunders), for an internal thread you need to set the tapping hole diameter to the correct dimension to begin with, as the other settings are derived from it. So rather than simply dimension the hole as a nominal 14mm perhaps, you might want to enter the correct dimensions in Fusion:
      Dmajor = 16mm
      D1 = Dmin = 2 x 5/8 x 0.866P = 1.0825P = 13.835mm
      Dp = Dmajor = 0.6495P = 14.70mm (for completeness - not required in Fusion)

And finally, if you have pointy tools with no flat (that generate no flat in the trough), the infeed needs to be increased by the depth of those flats. In my case for an M16 thread, this means a total infeed of 3/4H ie 1.299mm. This assumes the tapping bore is the correct 13.835mm diameter to start with and actually results in "pointy" troughs at a diameter of 16.432mm. 

Do it:
Here's how it worked out for me. This is the final pass - yes, I had to do a bit of trial and error in the end. 

Looks good to me and fits pretty nicely.

The final uncertainty is over the effective radius / diameter of the tool point. I could probably do a test cut and determine it by measurement. However, I think it's fair to conclude that the effective radius is NOT 5.5mm, as suggested by the datasheet for the insert. If I can be bothered, I may make a test cut and measure it. Time will tell.....

Saturday 17 April 2021

Machining the Multifix toolpost pillar

 Aha! I behold a toolpost pillar inside that block of stock.

It's a piece of 6082-T6 that's a nominal 4.5" square and 86mm long. Ideal.


3D Adaptive to rough it out. Hopefully I have the balance right between reducing the machining time and not overloading the machine.

Then 3D Radial toolpath with 0.25 degree increment:

And finally a 3D Contour:

That little lot will take several hours but I'm hoping for a half reasonable surface finish.

Make chips:

I'm not going to convert the surplus 25mm or so of stock into swarf, so instead, I'll chop it off in the bandsaw. It's a bit too big for the blade but almost too short for the vise. This did the trick though:

I didn't time it but this must have taken half an hour or so.

Given the organic shape of the finished part, I need to have some means of holding it in the machine vise. So I added a couple of M10 threaded holes in what will end up as the base of the pillar, having faced it off first. Used the tension compression head for this and a toolpath generated in Fusion - it worked well. This piece of barstock is parallel to withing a few tens of microns, as I don't have much spare stock to lose in the X axis direction.

Here we are, set up with the Renishaw probe. 

Woah now, fat boy:

Some of the feeds and speeds felt a bit ambitious when I did an air cut. I'm trying to get this made before the sun cools down but my spindle motor is rated at around 3kW (4hp) which isn't exactly stump pulling territory. Thought I'd better check what my original values would require.

With 0.25mm per tooth (5 inserts per rev), 2000rpm and 5mm step down, I'd be needing almost 6kW, so the initial attempt would have been ahem fairly short lived. The machine time would have been about 1h for this, according to Fusion.

This looks a bit more achievable - 1800rpm, 1800rpm and 3mm stepdown, resulting in ~2kW:

But regenerating the toolpath ends up with around 3h of machine time. Hmm. Let's try to shorten that a bit. Perhaps whop the stepdown up from 3mm to 4.5mm? Yes, that takes it down to 2h on the dot - if the machine can handle it.

Reducing the fine stepdown to 1mm (from 0.45mm) removes another 22 mins. Given that I have 2 subsequent finishing passes (Radial and Contour), a slightly rougher 3D Adaptive shouldn't be an issue.

Let's give this go and see if it can cope with these settings. The motor nameplate claims 3.2kW at 1800rpm, so you never know....

Making chips:
Hmmph. The Yaskawa V1000 VFD reports the output power (in kW) when you set up monitor U1-08. However, the displayed value never exceeds 0.28kW or so. Not sure which to believe but generally Yaskawa stuff tends to work as advertised. Also not convinced The Shiz is actually breaking any kind of sweat. 

Bollocks - I've started, so I'll finish. Both the Fusion and Centroid time estimations are very similar (around the 1:20 mark), so I'll continue as it is. I could perhaps play with the settings to increase the spindle load but in the end I'd probably lose any time saved fannying about in Fusion. 

I have 22k lines of code, which is hardly a monster. 

First, this is going to be messy, so I'll fit some simple screens to contain the chips and coolant:

Then off we go:

Starting to emerge

I'm hardly pushing the machine here...

Starting to look fairly convincing....

I can live with this:

Took 1:36:22 according to Centroid. Nice result. So next I will apply the radial toolpath...

Sorted. Nice:

Drill bolt holes:

That worked for me.

Saturday 10 April 2021

Machining the rear cross slide cover.

Simple part - machine down a piece of rectangular stock to the required dimensions, then clear out and finish the channel in the middle. 

It's easy to get used to thinking of these indexable face mills as being only usable for surfacing operations. However, they have a decent cutting depth of 15mm or so for the APGT1135 inserts. 

Mine's a Korloy AMCM3050HS which is 50mm diameter, although I didn't pay the RRP for it(!). Different system to the Mitsubishi BAP mills but very similar in appearance. Fitted with ground APGT inserts, it's viciously sharp (fingers!) and gives a great finish.

Given that I'm machining a wide U-channel here, it seems an ideal use for the tool. It should also be a lot less liable to clog up and chip weld (ping) the cutter with decent MRRs.

Rough out the channel with 2D Adaptive, then 2D Pocket, 2D Contour and 2D Chamfer:

Face off the top and chamfer:

Looks good to me. Bandsaw, long series endmill (manual CNC mode using the MPG) and off we go:

Bottom side (U-channel) done:

Flip over and finish the other (top) side:

I never got round to fitting the enclosure. Now the place is covered in chips. 

Long series drill for the fixings - 7.5mm through and 10mm counterbore:

Sorted - clean out the tapped holes in the cross slide (60 years or crud in there) and slap it on.

Another job done. The Bantam should be happy with this.

Final assembly and test of the spindle nose adaptor - RESULT!!

After the recent distraction caused by the 3D scanner, resurrecting the 3D printer and buggering about with the throttle bodies for my Honda...