It all started because I was getting random crashes on My6502. Just like any programmer, I chose to believe that my code was perfect and therefore it must be a hardware fault – even though, in this instance, the hardware was mine too!
It’s not as unlikely as you might think: my computer was spread across multiple breadboards, connected by a forest of jumper wires. There’s going to be an intermittent connection somewhere. I might waste a huge amount of time chasing a software fault that isn’t there!
Up until this point I’d been making boards with my CNC – but I’d been very conscious that I was hitting the limits of what I could achieve with the tools I had. The CNC wasn’t really built for super-fine work (it was built for cutting large pieces of wood) so I was deliberately designing PCBs with large and chunky pads and tracks so I could err on the cautious side.
These were still considerably better than stripboard and jumper wires … but probably not good enough for the projects I was now attempting. I couldn’t reliably route tracks between IC pins (essential for doing any circuit involving data and address buses) and the CNC was a little too cumbersome to experiment making double-sided boards.
I reckoned I had two options: buy a smaller CNC that was built for etching PCBs (geared down much further, for finer work) or experiment with PCB prototyping houses. The latter involved a smaller initial outlay, so I decided to start there.
What is a PCB Prototyping house?
Getting a PCB made professionally is hugely expensive. It needs to be a substantial order to be worth anyone’s time – they’re not going to set up a big engineering job just to knock-out one or two tiny boards for an amateur geek’s trivial project.
Instead, prototyping houses act as an intermediary. They collate board designs from hobbyists all over the world, and run their own software to merge them together into one big order which they than submit for manufacture.
The manufactured board is delivered back to the prototyping house. That is then broken into individual boards and put them in the post to the hobbyists.
See this Tweet for some rather good example photographs.
I had some useful advice from Spencer Owen about the processes he went through when prototyping RC2014, and so I chose OSHpark for my first experiments. They charge $5 per square inch of board. For that you get three boards: drilled, double-sided, with solder-resist and silk layers for each side, plated thru-hole, and postage included.
For a first experiment I chose a board design I’d already manufactured with my CNC. It was a tested design, and I thought it would be a useful comparison.
For PCB design I’m using an elderly piece of software called RiscPCB, running on an elderly operating system called RISC OS. I tried to learn KiCAD – really, I did! I just don’t seem to have the intellect for it. And when offered the choice of learning something difficult or sticking with tools I’m already happy using, which do you think I chose?
I was already familiar with the RiscPCB file format, having written code to turn it into GCode for driving my CNC. So writing a utility that instead generated Gerber files was fairly straightforward (and fun, too).
What are Gerber files?
I’ve seen Gerber files described as “the PDF of the PCB fabrication world”. This is for two reasons: it’s a well-established format (every PCB fabrication house will accept Gerbers if they want to be taken seriously) but also because the two file formats work in a similar manner: they’re formed of lists of text commands that describe things to draw in order to create a picture. In the case of PCBs, that picture is the layout of pads and tracks.
In the early days of PCB fabrication, the Gerber file was a list of movement commands for a CNC-like machine called a photoplotter. This would draw lines onto photo-sensitive material by shining a light through an aperture that moved along an X-Y gantry. This material would then form the photonegative for the stencil used to create the board.
These days the photoplotter has been retired. Instead, the Gerber data is parsed by a computer at the factory, which turns the commands into a bitmap at whatever resolution the factory requires. This means that in addition to drawing lines, the Gerber file format can also draw filled polygons, and even clear (“un-draw”) shapes from the image – which makes it very easy to create boards with groundplanes, and add daft vector images to the silk layers.
This is the file format I use to get my board designs to OSHpark.
Different layers in a board design
A Gerber file only describes one “layer” of the board – but PCBs are made up of many layers (copper layer, silk layer, resist mask, etc). That’s easy: just provide multiple files! The good news is that the file format is the same throughout – OSHpark asks you to follow a naming convention for your files, so it knows which file is which. The leafname of the files ahould all be the same – it’s the extension that describes the purpose:
The “soldermask” layers are worthy of note, because I wasn’t familiar with them before now. Solder resist is a thin layer of insulative goop applied to both sides of the board. Solder will not stick to it, which makes it a brilliant preventative measure against accidentally bridging pads or tracks. It also helps protect the copper from oxidisation.The mask is any areas that you don’t want to receive this layer – which basically means every pad that you want to solder. If you don’t provide a mask then the entire board will be insulated – and therefore unsolderable.
Viewing Gerbers on your computer
My choice is an open-source app called gerbv – it’s pretty comprehensive. It allows you to load multiple Gerber files, change the colour assigned to them, change the order they’re rendered in, hide them … even select objects from layers and delete them (which is occasionally useful).
If you want a quick example to play with, then there’s one for download in my revised EEPROM programmer post.
Submitting Gerbers to OSHpark
Submit Gerbers to OSHpark by zipping up all the individual files (named correctly, as above) and uploading that one zip file.The OSHpark website will handily generate preview images of what you’ve uploaded, so you can do one last sanity check before you pay. I found this enormously helpful when writing my Gerber generation code.
Two weeks later, and I receive these:
Woohoo!
Findings
I’m a total convert! The manufacturing quality is excellent, which makes the task of populating the board much easier, and the results something to be proud of. I’m able to use smaller pads than etching by CNC, so the soldering-iron heat remains more localised and so solders better. I can control the separation between tracks and groundplane, further keeping heat localised and minimising the possibility of any solder shorting to ground. The resist layer stops accidental bridging problems and encourages the hot solder to “blob” to the pad correctly. These boards are a joy to work with!
I also have to say that I’ve had excellent customer service from OSHpark. They’ve always answered my idiotic e-mails within an hour or two. I regularly get automatic upgrades to their “Swift” service (they seem to do it if they need just a few more boards to complete an order) and the one or two occasions that boards haven’t been how I’ve expected, they’ve re-submitted my boards for fabrication at no charge. All this from a company that ideally would like their servers to be handling every step of the process so that no staffmember need get involved.
My only complaint is that the time between placing an order and getting the board is around two weeks. This is because I’m in the UK but all the fabrication agencies seem to be in the US. But it’s definitely worth the wait! It just means I find other things to do for that time – not the end of the world, but sometimes a little frustrating. Do you remember when you were little and you used to send off for things advertised on the back of your breakfast cereal? Do you remember the agonising wait for the postman every morning until it arrived? Imagine a forty-year-old man doing that!
Summary
So: prototyping, or buy a more dedicated CNC? As things stand, I’m extremely happy with what I’m getting from OSHpark and I can’t afford to buy a new CNC anyway. But I reckon I would still have a use for both.
When board designs are complicated (and/or double-sided) then it makes a lot of sense to get them frabricated in this manner. Small and complicated boards are very much what I need for my 6502 project. But the cost is by the square inch, and so larger boards would get very expensive.
In the future, I’m going to attempt projects that need larger boards. For those, I’m going to have to consider carefully whether I can design them in a simpler (and hopefully singled-sided) manner and CNC them myself, or whether I must get them fabricated and live with the cost.
Fun though, isn’t it? 🙂