Friday, 8 September 2017

More CNC router

Visit Tagbits to see the full range of tagger products described in this blog.

I have been continuing work on my DIY CNC router this week by starting on the Y axis. This moves along the linear rails at the top and bottom of the Y gantry:

The Y axis needs mounts top and bottom for the linear bearings, shown here in blue.

I bought some 15mm aluminium plate from cut to size. I was quite impressed with their price and service as the pieces arrived cut accurately. I used the print and punch technique I described here to ensure the holes I needed were accurately aligned with the holes in the bearings.

The holes aligned perfectly but, as I had simply stuck a 2D print of the centres onto the plate and then drilled, I had failed to align the holes with the edge of the plate. This is how it should be:

And this is what I ended up with:

I realised that I would be unable to accurately align the paper with the centres printed on it with the edge of the work piece. Which brought me to a complete halt. A few months ago I was fortunate to take possession of a Warco WM-16 vertical milling machine.

I fitted it with a third party digital read out for the X and Y axes. This uses optical sensors to allow me to position the bed to an accuracy of 0.005mm. By aligning the work piece parallel to the bed, and centring the mill on one of the corners I can accurately drill all the holes knowing that they will be aligned with the edge.

The only issue is to accurately place the work piece. To do this I clamped the piece to the bed. I then used a dial indicator to check the part alignment by winding the bed backwards and forwards. Noting the change from one end to the other and moving the piece to compensate until the dial did not move (by much) from one end to the other it is possible to get the piece edge parallel to the bed axis.

Using an edge finder I was able to align the chuck with the corner of the piece.

Here is how they work:

And with a print out annotated with dimensions from the CAD system, using the digital read out I was able to drill each hole with fantastic accuracy.

Here is the Y axis half assembled.

In conclusion, the print and punch method I have used previously is great for aligning holes unless their position needs to be relative to some other edge.

Wednesday, 7 June 2017

Casting PCBs in acrylic

Visit Tagbits to see the full range of tagger products described in this blog.

I've been trying to optimise the way I make Milestag sensor domes. Previously I have thermo formed acrylic sheet but this is very labour intensive. The acrylic sheet needs to be cut to size, heated in the oven, force formed, cut and sanded.

In an attempt to reduce effort, I investigated using acrylic resin to encapsulate the sensor PCBs. Initially I tried dental alginate as a moulding agent. Using the formers my neighbour made (see link) I made some moulds. These appeared to be OK until I tried casting acrylic resin into them. The alginate when set and flexible has too high a water content and this interferes with the resin curing process. Simply leaving the alginate mould longer to dry makes it become hard and dimensionally unusable.

I then tried silicone mould making kit from amazon. First I laser cut a box using Makercase that was large enough to hold the formers.

I glued this together with a hot melt glue gun. This ensures the moulding material does not leak out when it is poured.

The silicone kit comes with a white base and a pink hardener. This makes it easy to ensure it is mixed correctly. I use the larger part of a Muller corner yoghurt to mix in as the triangular shape makes an excellent pourer.

Initially I poured a 5mm layer of silicone into the box. This forms the bottom layer of the mould.

I then placed two formers onto this layer, and filled with silicone.

After the silicone had cured (about 12 hours) the box was broken away. I cut the mould in two and 3D printed a mounting jig to hold the sensor PCBs in place. I also drilled a hole in the side of the mould to allow the sensor cable to exit. This was smaller than the actual cable to prevent the resin from leaking.

After pouring in the acrylic resin I left it to cure for 12 hours.
The parts are easily removed from the flexible silicone mould. The acrylic seems to not fully cure at the interface to the mould, leaving a cloudy finish. However, a few tens of minutes exposed to the air and it clears nicely.

Friday, 6 January 2017


It's been a while since I last got chance to blog my CNC router. Last post was in

I've got quite a lot done since my last post. My neighbour kindly machined the Y axis risers and Y axis gantry for me. I really did not do much on these myself, so here is a pic of them after installation. You can see the linear bearings installed on the rails at the top left and the bottom centre of the Y gantry labelled 'FRONT'

This week I'm working on the Y axis itself. This will slide from left to right along the rails in the picture above.
The first plate I need to machine is coloured green in this picture from the CAD system:

So starting with a bare piece of 15mm aluminium plate:

I printed out a 1:1 plot of the hole centres from my CAD system. Using 3M spray mount, I glued this to the plate:

In engineering, a centre punch is used to mark the centre of a hole that is to be drilled. The centre punch is simply a hardened steel rod with a tapered tip. The difficult part is aligning the tip of the punch with the centre of the hole to be marked. It's easier if you use an optical centre punch. These are available for a few 10s of pounds and allow punch alignment to be accurate to within 100ths of a millimeter.

They comprise of from left to right; an alignment cone, a punch and an optical sight:

First the alignment cone is placed of over the 2D plot of the hole to be centered. On the paper stuck to the plate, this has an image of cross hairs centred on the hole to be drilled. The alignment cone of the punch is placed over this, and the optical sight fitted:

Using the magnifying properties of the sight, the alignment cone is positioned so the sight cross hair align with the markings on the paper.:

When aligned, the optical sight is removed and replaced with a metal punch.

The punch is then lightly struck whilst holding the alignment cone firmly in place. I find a pein hammer is best for this as it is light.

After striking with the hammer, the accuracy of the punch is obvious when viewed throught the optical sight:

When all the holes have been punched. I use a spotting drill to reinforce the indentation before drilling. This means that when I actually drill the hole, the drill bit will find its centre more readily. A spotting drill has a 90degree cutting face as opposed to the 60degree cutting face of a normal drill. Here the 3mm spotting drill at the bottom has a noticeably sharper point than its counterpart.

After running the spotting drill over all the holes, it's time to start drilling:

First I started all the holes with a 3mm high speed steel drill.

I'm initially drilling 10mm holes that will be used to attach the ball nut mount of the Y axis. I'll detail the terminlogy in another post. Basically, 4 x 10mm holes are required. After the 3mm drill, I progressed to 6mm and finally to 10mm drills.

I'm using Dormer drills here.These are made in England and are the best price/peformance ratio money can buy.

After drilling the holes for the ballnut mount, I had a dry run fitting. The bolts I am using are socket head countersunk and so really need a countersunk hole to fit in. But this shot shows all the holes aligned as desired.

Here is the ball nut mount on the opposite side of the plate with a ball screw fitted,not the acutal one to be used though.

I countersunk the 10mm holes to fit the socket head countersunk bolts:

Though not essential, the bolts look better when countersunk.

Saturday, 8 October 2016

My first CosPlay

I did my first ever CosPlay event today at Hamfest Oldham. All 3D printed of course.

Not too bad...

Wednesday, 10 August 2016

Electromagnetic Field Festival LEDs

I've been fortunate to attend the 2016 Electromagnetic Field camping festival this year. This is a 3 day event in the UK where geeks get together for a fantastic festival of talks and workshops of all things geeky.

In preparation for the 2016 event I ordered some WS2811 RGB LEDs to adorn my tent:

This uses the Adafruit Neopixel library example code, but is modified to do an RGB fade from the centre outwards:

I was asked how I did this so here is a quick tutorial:

1) Buy WS8211 LEDs from Amazon.
2) Buy a high current 12V to 5V power converter from Amazon. This needs to be capable of providing at least 3Amps.
3) Buy an Arduino Nano. The original boards can be bought in the UK from places like Cool Components. However, Chinese clones are available from places like BangGood. However, these devices will need a driver installing before they can be used with Windows.
The Arduino shows up as a serial ports (e.g. COMXX), but the clone devices use a cheaper alternative serial chip than the originals, hence the need for a driver. Here is an Instructable on getting it working.

The LEDs have 3 connections:
+5V power in.
The data can only go in at one end and this is not clearly marked. It's best to check that everything is working before tidying everything up.
The 0V and +5V terminals are difficult to identify. By peering through the transparent housing though it is just possible to see the terminals marked as +5V and GND. The remaining terminal is the data line.

Note that the connections are the same on opposite sides of the printed circuit board.

Wire everything up as below. The converter is used to drop the 12V input to 5V for both the LEDs and the arduino.

Download the Arduino project here. You will also need to install the Adafruit Neopixel library. See here for details on installing Arduino Libraries.

Remember, if it doesn't work first time, try connecting to the other end of the LED strip. And feel free to give me a yell if you are having troubles.
Please note that this is a guide only. You follow this guide at your own risk. I am not responsible for any errors, ambiguity, truth or omissions.

Saturday, 26 March 2016


At Hack Oldham's monthly Hack The Library event today I got to play with the soon to be released BBC Micro:Bit.

This is a small PCB with an ARM MCU. It has on board Bluetooth, compass and accelerometer peripherals. And also come with a 5x5 programmable LED matrix and user buttons. The plan is to give one to every year 7 (11-12) kid in the UK and just let them get on with it.

There are several ways to program it, from Scratch like block programming to an implementation of Micro Python.

I tried the block based interface first, but as a classic programmer I found it unwieldy so I got straight in with the Python.

The web based Python editor is ok, and the peripheral documentation is reasonable. I would have liked to see some more detail included though. For example, the accelerometer is fully supported in the API. But it would have been nice to have it documented on the numeric range that the device would output. Not a show stopper, but easy to add to the docs.

After writing your code, clicking the web 'download' button literally downloads a .hex file straight from the browser to the local file system. When the Micro:Bit is connected to a Windows PC, it shows up as a removable drive. The file needs to be copied into this drive, where after downloading it is immediately executed.

If the Python script has any errors, the error is displayed as scrolling text on the 5 x 5 LED display. This is useful, but it would have been great if this could also have been dumped to a text file in the mounted drive. Waiting for an error such as : "Error line 60: Syntax Error" to scroll along a single character display can be frustrating.

Anyway, after half an hour or so I'd managed to write a small game where by tilting the board, a statically illuminated LED is moved towards a flashing LED. When the two meet, a Pacman symbol is flashed (it's a hard coded image, amongst others, in the Micro:Bit) and the two LEDs are randomly re-positioned.

Saturday, 9 January 2016

Laser cutter + surface mount MPU programming

I designed a PCB that has to fit in a space that is very constrained. The PCB uses SMD micro controller, and there is no space for a dedicated programming connector on the board.

To solve this I simply placed PCB pads connected to the MPU programming pins. I ordered some spring test probes from BangGood. If you are willing to wait a couple of weeks this is the cheapest place for these.

The PCB design software I use, DesignSpark allows me to export a mechanical .dxf file for the PCB.
I imported this into my laser cutter software to allow me to cut a 3mm MDF sheet with holes where the MPU programming pads are:

It's a bit over the top using a laser cutter for this, but: 1) It cuts quicker and more accurately than I can. 2) The probes have an odd diameter, 1.3mm which is a drill size I don't have, but the laser can do any size hole.

I cut two of these, and used them in parallel to align the spring probes:

I ran the hot melt glue gun between the two plates to fix them.

And epoxied the wires to the molex connector that plugs into the PicKit3 programmer and the jig itself:

This jig enables me to simply press it onto the PCB. The spring contacts guarantee a good connection. And programming takes a few seconds. It's quicker than plugging a MPU into a programmer, and then transferring it to the target board.