I had a dream….

Many years ago I had an idea to use a computer to control a linear positioning system. I bought a couple of stepper motors from Maplin in the UK and started to hook these up to my 8 bit PIO card. Harnessing the full power of Window 98 and Turbo Pascal, I excitedly hooked up some simple gears to the stepper motors and a piece of M8 threaded rod… it twitched slightly and NOTHING!!!.
It turned out that I had massively underestimated the torque of the tiny motors.

To be clear, I’m not saying there was anything wrong with the motors – they were really easy to get going and quite reasonably priced. With no load, they trundled nicely clockwise and anticlockwise. I had a lot of fun with these learning about stepper motor sequencing etc but my expectations regarding what they could drive were just all wrong – I had set the bar way too high for myself and so, the motors went back in a box, the M8 threaded rod and bearings went back in the garage.

Over time, the bits were recycled but I kept finding the old piece of wood with my “linear bearing” (a piece of aluminium tube with another slightly larger diameter section fitted on the outside + the M8 rod…. there must be a better way of doing this.

Late in 2012…
In 2012 a chance discussion with a colleague made me realise that building a CNC machine at home was actually possible
I started to make myself a shopping list of all the bits and pieces that I wanted (motors, controllers, lead screws, bearings, spindle etc etc) and the total price is…. completely unrealistic!!!!!

Plan B… can I make this for next to nothing?

I stripped down an old inkjet printer to see what I could use… conclusion… not much 🙁

Plan C… try to buy a small number of key parts to allow me to build something sensible.

The one section that I couldn’t work around was the set of motors and drivers.
Clearly these were going to use up a significant part of my budget so I wanted to ensure that I had at least enough torque this time… in the end I went for Nema23 425oz motors and a 36V 350W PSU with micro stepper controllers.

Excitedly I downloaded the trial version of Mach3 and plugged it all into to the parallel port on my old laptop. The motors jumped on power-up and then sat there not doing much…. a few tentative movements but not much else.
I read the Mach3 info including statements about not using a laptop (due to the power saving features if I’m correct).

Several discussions later and indeed the conclusion was…. don’t use a laptop!
Since my fastest non-laptop was a Pentium 2, it was time to hit the second hand market for an old PC. I found a great looking Dell and rushed round to pick it up.
Next problem – no parallel port!!!! AGGGGHHHHHHHHHH!
A few days later a PCI LPT card appeared through the post and….. it works!!!!

December 2013

 DIY Bearing Blocks
Leadscrews and the associated bits all seemed too expensive. Firstly you need the lead screws, then bearings and something to take the strain so that your precious motor bearings don’t get ruined. Then come the anti-backlash screws etc etc….

I decided to use some M8 threaded rod instead of leadscrews and found the straightest ones I could in the local DIY shop but now how to mount them????

I had some 8mm bearings lying around (as you do!). Two problems had to be solved…. firstly, the bearings had to be held firmly so they couldn’t shift but could rotate freely. Secondly, the M8 rod had to be held such that it could rotate freely but could not move laterally.

I found that the bearings were the same thickness as some plywood I had and made a sandwich with three plywood squares and labelled them ‘1’, ‘2’ and ‘3’. A simple adjustable hole cutter in a pillar drill cut out the hole for the bearing in piece ‘2’.

Now for the rod fixture… I found a steel M8 “T-nut” that fitted perfectly through the bearing.

The four folded “spikes” on the T-nut broke off very easily when I tried to fold them backwards. The barrel part of the T-nut was a bit longer than the thickness of the bearing so I filed it down so that it matched nicely. This allowed me to tightly clamp the centre piece of the bearing without crushing it.

The final stage was to recess enough room for the T-nut and on the other side have space for a self locking nut.

The recess for the T-nut is a smaller diameter than the hole for the bearing so the outer back of the bearing remains sandwiched in part ‘2’ between parts ‘1’ and ‘3’.

To my great delight… it works! Cheap, easy and simple to mount to an overall wooden structure.

A simple view of the assembly (please ignore the “ears” still fitted to the T-nut)

 Linear bearings – low cost alternative
The next problem was how to allow things to move smoothly but without wobble.

I sketched a rough design using a conventional fixed table, bridge and z-axis on the bridge.

In my design I look at the machine from the front so that the table depth gives the y-axis and the bridge provides the x-axis.

Plan A: My idea for the y-axis was to use two diameters of aluminium tubing that fitted tightly but didn’t bind. The narrower tube was approx 1m long and the outer tube approx. 15cm. BUT… The inner tube was too weak and flexed while the outer tube was too loose and wobbled while being very likely to fill up with dust and lock up.

Plan B: find some cheap v-bearings.
Unfortunately evenings searching the web found nothing 🙁
V-bearings seem difficult to find and those that do exist are expensive.

Plan C:  Eureca!
I discovered that in-line skates have really nice bearings however they do have some lateral wobble. Skate designers have solved this for me by combining two bearings in a single wheel and this means that general wobble is reduced significantly…. so… can I use skate wheels as complete units?
The downside is that skate wheels are silly prices when you just try to buy the wheels on-line BUT…. if you look on the second hand market, you can pick up a pair of kids skates for as little as 6Euro with 8 really good wheels.

12 Euro later and I has 14 nice wheels. (2*8 minus the worst ones)

I used the 8 best wheels to support the x bridge. 2 wheels each side bolt onto the vertical parts of the bridge and take the weight of the bridge. “C” shaped brackets then hold 4 more wheels rolling down the sides of the table. The horizontal wheels are spaced a few mm closer than the width of the table so that it clamps tightly and avoids wobble.


The wood is 18mm ply.

27th December 2013 Early efforts and mixed results

Having assembled the bridge, worked out how to fix the bearings etc, seeing the system move was a dream come true.
I replaced the router bit with a pencil and manually worked out the g code to draw a smiley face!


It was evident that the table wasn’t completely parallel with the x axis (only a mm or so off).
The answer was beautifully simple after discussions with those who had been there, done that. I glued a piece of mdf to the table and then set it to mill the whole table at a fixed height.

The result was a CNC machine capable of engraving and light milling.

Unfortunately the z axis did have some rotational wobble and this results in circles coming out as diagonal ovals/egg shapes.

After many failed attempts to improve this I resigned myself to accepting why people shell out for real linear bearings… Grrrrrr time to start saving and hit eBay….

Jan 2014 Modify or rebuild?

One year after my first real build, my linear bearings have arrived!
Now the big question: do I modify my existing machine to use the new bearings or build a new structure from scratch?

The new rails for the x-direction are a bit longer than my old travel and certainly have a significantly taller profile than a skate wheel. If I just mount these on the front of the x-bridge structure, this will push the z-axis structure even further forward. If everything was perfect, this wouldn’t matter however any wobble in the bearings and link to the x-drive will be amplified.

One solution would be to try to move the x-axis motor and bearings forwards but I would have to modify the wooden structure a bit for this.

The alternative is a major rebuild with a new design to make full use of the new bearings. This is possible but then I need to work out the new design properly and ideally I’d like a CNC machine to get all of the holes etc it the correct place.

The third alternative is to have a half way mod to the existing machine and hope that the resulting tolerances are significantly improved and good enough to allow me to CNC the next gen machine 🙂

 Partial rebuild
And so the change begins.

The old x rails (two pieces of wood with bits of curtain rail profile attached) are removed from my old machine and the z-axis assembly extracted.

Although the old x-axis only used 4 skate wheels, I had added another two wheels to reduce wobble with moderate effect.

The old and new x-axis rails/bearings can  be seen in the following photo:

The two wooden bars had adjusting screws that allowed me to tweak the alignment:

The trick now is to get the new rails attached to the x-bridge and the linear bearing blocks to the z-axis assembly with the rails being perfectly parallel so that nothing binds.

The x-bridge were stripped clear ready for the operation.

The new blocks are fitted to the back of the z assembly and ready to put back on the bridge, rails placed and attached to the bridge.


It looks good but doesn’t slide as smoothly as I had hoped. Not too bad, maybe it will settle and loosen after a few runs.

Now for the attachment to the x drive. I have a simple anti backlash construction. The main bit of wood (on the right) has a T screw in it and this piece of wood will be attached to the z assembly. On the left hand side a second strip of wood with T but is also fitted to the threaded rod and wound around until it is close to but not quite touching the main piece of wood. Two bolts then attach the two together and allow me to squeeze these slightly so that the backlash is eliminated but the threaded rod can still rotate.

Now add the top of the Z-assembly that connects to the x drive.

…and now…. Power it up!

 Bitter disappointment
Oh my goodness!

The x-axis chugs across like an old train!

I tried different feedrates etc but this is truly horrible. It’s jumping across in about 1-2mm steps.

I can actually see the wooden construction flexing on the x-axis linkage.

Time to stop and think….

 Eureca!
Big deep breaths…..

I disconnected the link to the x dive so that I could slide the z assembly across.
Yuck!!! It is grinding and not right at all.

Suspicious of the top rail, I gently slid the rail out so the the z assembly was just on the bottom rail – still binding.

Put the top rail back in and remove the bottom rail….. Smooth as silk!!!

I removed the z assembly and could see that one of the bearing blocks was just slightly off centre – maybe 0.5mm too low. nothing wrong with the block, i had drilled the holes in the wood in the wrong place. Ok time to be bold!

I removed the offending bearing block and the thing is wobble free with two bearing blocks at the top and one at the bottom.

Reassemble (including strengthening the attachment to the drive on the x axis) and… Oh my… It trundles smoothly back and forwards.

Quick grab a router!

 A little light engraving
To see how accurate the beast is now, I opted for a light weight task and mounted my low cost multi-tool with a sharp point bit.

I then grabbed an offcut of plastic  ( a block of Delrin that I bought a while ago) and tried engraving a little.

(I also experimented with spraying some white paint on the black Delrin and then sanding it off again to improve contrast… mixed results…more experiments needed)


The multi-tool is clamped by a block that I attach to the main tool support. The main tool support is made for my Blank&Decker router.

Very impressed!

Looking at this, I should also be able to do PCB isolation milling as well which I’ve always wanted to try.

PCB Isolation routing

I first saw isolation routing at an electronics trade show years ago. For anyone reading this who does not know, instead of etching a PCB by disolving unwanted copper in an acid bath, isolation routing cuts out the tracks you want by milling a cut in the copper around the track. This is something I have wanted to try since the first day I saw a YouTube video of someone making their own PCBs with a CNC machine.
Of course it isn’t that easy. I tried KiCad -> gerber -> g-code but it didn’t work. I then went back to the (apparently more common) Eagle -> PCB2Gcode approach. It took a few tries but eventually (after turning off the checkboxes for the comments) Mach3 read in the file.
I tried with my Ferm(cheap Dremmel) plus Dremmel sharp pointed bit (30 degree??? Pointy bit).

I’ve tried three runs so far.
It’s very difficult to get it to cut through all of the copper evenly without ripping off sections. You can also see jagged lines where it digs in rather than cutting smoothly.

Ummmm… Track width too small and setting for router bit width too small… Try increasing both….

Less bad but its still really difficult to get it to cut the copper. Try again this time going lower and lower and lower on the z axis. Oh yes, the tape holding the board became loose so it wobbled by a couple of mm.

I also tried an engraving bit but this is really meant to grind on the side not the end – it didn’t work.

I think I need a new real router bit.

 Was the new bit worth it? Oh yes!
Clearly my attempts to save money were a waste of money. I finally gave in and bought a real 30degree isolation router bit on line.


This may sound stupid but the first observation was how sharp it is – I mean REALLY sharp – this has to be a good thing!
I wound up Mach3, adjusted the z axis zero and went for it.


Awesome! Perfect cut, no jagged lines as it catches rather the cutting. I wonder if I can reduce the track size ??????


Amazing. The only wobbly piece was in the middle at the top. I had the feedrate set way too high and also the board wasn’t stuck down well enough.

Ok so this needs a little more fine tuning but this is seriously impressive.

April 2014 Disaster and slow recovery

For the first time everything is really running perfectly. Mach3 is all setup correctly. Really happy – and then…

Yesterday XP died. I mean really really stuffed! Even my Linux live cd won’t see the hard disk. I think it is physically stuffed.

Talking to a neighbour yesterday i told him “My data should all be backed up but I’ve lost all my Mach3 settings.”
He calmly turned to me and said “but program settings are data”.
Of course he is right. Why hadn’t I backed these up or written them down or etc etc etc???

Reluctantly I now have to start building all this stuff up again.

12 hours later and XP is installed again, all updates, patches etc run.
Mach3, Cambam and Eagle back on again.

After a good load of adjusting, I have enough settings in Mach3 to make the motors run again.

The distance calibration seems a bit off at the moment but I’m happy to see it moving again. I think the old hard disk is destined to become a novelty door stop.

Sunday, 13 April 2014 The obligatory test circuit

Well, it had to be done really 🙂 what else could I choose but an NE555 LED flasher.


A few tips:
1) don’t use 20year old PCB material. The board was warped, copper filthy, copper soft and difficult to mill.
2) don’t try to use 25year old resistors that you’ve found in a box.
3) put on your glasses before drilling the holes in the board (I thought I’d save time and not CNC the holes….)

Strangely enough, all of this combines to make a bit of a mess. Almost impossible to solder. I’ve never seen better examples of dry joints. Oh well, I got there in the end. Toggling LEDs.
It’s running on 3xAA batteries in the pack under the PCB.
(Ignore the fragments of text on the board – nothing to do with this test!)

Saturday, 21 February 2015

Simple isolation routing software
I’ve tried several different pieces of software to convert PCB layouts to G-Code. I have stumbled upon a piece of software called FlatCam. This will read Gerber and simply generate G-code.
I had some example Gerber from the web but it didn’t load (the FlatCam screen was blank). I opened the Gerber with gerbv and it showed some spurious lines that I deleted – FlatCam then opened it and a few clicks later, I had g-code cutting a piece of copper clad FR4.
Long live Enthusiastic developers and smart students. Well done JP at FlatCam.org

 

A change of direction

2015 and 2016 were complicated years and with a long pause from CNC development with small number of routing jobs and a change of direction.

After the challenge of designing, constructing and adapting my CNC machine, it took a while to find a real practical use for it.

The more I did, the more I suffered from the limitations of a home made machine with 8mm screw thread. With a 3kW air-cooled spindle installed, I had the power to mill aluminium but the unsupported rails flexed and the 8mm screw threads ripped their own threads off (especially the z-axis that really couldn’t take the weight of the spindle).

In 2016, I performed a major rebuild of the machine, switching to real lead screws and supported rails. The result was a jitter free machine capable of taking on the larger jobs that I wanted to take on.