How to use the CNC Router to fabricate a simple spinner body.

Smartboard Notes:       

Back to Shalvey home


Design of variations to the Fidget spinner is done using INVENTOR software. Autocad can also be used.

The bearings are standard skateboard bearings: OD=22mm, ID=8mm and thickness=7mm.


Perfect Fit

After some experimentation, it was found that the 3mm diam cutter produces a good fit to the bearing when the tool path is set up to a diameter of 21.85mm (with 1.5mm tool offset). In 5mm Polycarbonate, this produces a press-fit that can just be done by hand (i.e. finger tight).

Sample for testing bearing fit. A simple ring was machined to test the fit of the bearing. Diameter 21.85 worked perfectly.

The 4mm rim width seems like a good thickness around the bearing (not too weak or flexible)


Here is a general layout using recommended dimensions.

A basic 3-bearing fidget at minimum size



Now add the toolpath.

This tool is 3mm diameter, so we offset the outline by 1.5mm. (Yellow)

The toolpath is changed to a different layer, which makes it easy to focus only on the toolpath during the CNC programming stage.

CNC Routed Part

A standard 3-bearing design (Well - 4 bearings altogether) drawn up in AutoCad.

(The 3 outer bearings are on 26mm radius and has a 4mm thick wall around each bearing)

For CNC cutting, this design was offset by 3mm for a 6mm cutter (yellow lines).

Download the Autocad file: fidget-3-bearing.dwg

Then this file was saved as a dxf file, for import into CNC generator program (DXF2GCODE)

Download the DXF file: fidget-3-bearing.dxf

(Only the yellow layer is included in the code, Layer "0" is the drawing itself and has been disabled in the menu below - so these lines appear dotted in the image and are not included in the G-code).

Which outputs the code... (abbreviated)

Download the GCODE file: fidget-3-bearing.ngc

(This file is set up for MACH3 CNC controller)

Things to Note:

There are a number of little tricks to run DXF2GCODE correctly here. Firstly, we run the program in INCREMENTAL mode which makes it easier to place the parts at random positions on the polycarbonate plate.

To set incremental mode, go to the DXF2GCODE file structure > postpro_config > open "postpro_config.cfg" using Notepad.

Change the following setting:

# Used to switch between absolute (G90) and relative/incremental coordinates (G91).
abs_export = True

Change this line to...

abs_export = False

The code is also set up to run 2 cuts, the first at z=-3mm and the second at z=-5mm.

Using incremental, we start at z=1, go down by z=-4, then by z=-2, then up by z=+6. This is repeated for each entity.

Since the code is set up to start at z=+5, move the tool to z=+5 before running the code and no changes will be necessary.

Overall Diameter

There is a limit to the diameter, otherwise the part will not fit within the average hand.

There is no minimum, but the is a maximum!

Little 3-bearing fidget = 80mm

Typical maximum diameter = 90mm

Absolute maximum diameter = 95mm (but try to avoid this - stay within 90mm)


Polycarbonate Sheet: (2400 x 1200 x 55mm) $150
Size of each item (100mm x 100mm)
Quantity of parts per sheet: (2400 x 1200)/(100 x 100) = 288 parts
Material cost per part = $150/288 = $0.52 each

Machine cutting time: 3 minutes
Machine running cost: $5 per hour
Machining time cost: $5/20 = $0.25 each

Cost of cutting tool: $20
Number of parts per tool: 200
Tool Cost per part: $20/200 = $0.10 each

Total of material expenses: $0.52 + $0.25 + $0.10 = $0.87

(Note: This does not include labour costs - designing, postprocessing and running the CNC machine)


CNC Machining

A spinner sample cut out on the CNC router.

(Time to machine: 1 minute)

This is 3mm black acrylic

Thicker material (8mm clear Polycarbonate)

Holes are drilled first while the board is held in place.

Completing the outer cut in 8mm PC (Hold-down screws are not shown in this photo).

Feedrate: 700 mm/minute

RPM: 10000

Cut depth: 4.5mm (two cuts)

Material cost approx $1

Spinner with bearings inserted.

Some experimentation was needed to ensure a good fit with the bearings (which was a bit tricky since these cheap and rusty bearings from an old skateboard were not the best ones to test the fit).

Hole size was reduced by 0.1mm (CAD diam 21.90 mm). This is rather high, so we expect there might be an issue. (Check cutter diameter, cutter concentricity, mounting rigidity, chatter etc. Perhaps test at various RPM and feedrates to be more certain about the degree of fit)

The clear body is nice. A light de-burring on the edge with sandpaper was the only finishing.

OK, we can manufacture fidget spinner bodies easy enough.

Now we are ready for some fresh ideas!


Student's CNC'ed parts   

Aotearua. This turned out to be a bit too large in the hand. Need to pull those bearings closer together.

Bayley. Nice adventurous design. The saw tips were a bit sharp (needs a radius). Try to reduce diameter a bit more.

Dante. Tips seemed to be on the sharpness limit at R0.2mm. Elegant design.

Eyring. A bit large, need to tighten up the spacing.

Hayden. Reliable work with a new twist on a 5-bearing fidget.

Orren. Standard 5-bearing design, neatly done.

Simon. Standard 5-bearing design, neat.

Bayley. More nice work from Bayley.

Jaedyn. nice work from Jaedyn, a bit large but nice idea.

Ricky. Neat and clean work from Ricky.

Simon. More from Simon. Clean design.

Ricky. Another neat design from Ricky.


Relevant pages in MDME
Web Links