Thanks for the description, John.
I’ve been making my own boards for many years now, using different methods – mainly driven by needing to keep the cost down. When I started, there was no fast return Chinese service, and I think I just kept on making them because I liked having them even faster!
Early attempts were with etch-resist pen and transfers, then photo-sensitive board. I used to expose the boards to sunlight back then to develop – and it worked quite well, but I soon bought a UV light box, and a ‘bubbly’ heated developing tank.
I got fed up with bright yellow stains on numerous shirts eventually, so I moved on to isolation milling, which I much prefer.
Like everyone else (it seems), I tried the available software such as Eagle. Kicad, Fritzing, etc, but was never really happy with any of it. My biggest gripe is that none of these packages seem to have an ‘intuitive’ feel to me when using them. Another thing was packages being either still in development, or no longer being developed – perhaps I just tried at the wrong time.
Currently I design my boards (mostly double-sided) using LibreCad Draw. This came about because I was doing many drawings using this tool: it is possible to export drawings as .SVG files, with a positional accuracy of 0.01 of a millimetre. In addition, Draw has multiple layers, which made it easy to design double-sided boards, complete with location of vias, further simplified by the use of colours.
Of course, there is no auto-route as in most ‘proper’ design packages, but I can’t say that has ever caused me problems. I find it a simple job to design my circuit layout, then export the results as .SVG files – basically, it is simply a question of locating the components, so the vias are fixed, then drawing the appropriate connecting tracks as lines. Once this is done, then I draw the milling tracks between the connection lines. It needs some care to ensure the connections are correct, but I had as many problems with auto-routing which wouldn’t(!). This seems to work fine even using SMD components for me.
Originally, I used Inkscape to convert the .SVG files to G-code, but eventually gave up on this, because it seemed to me to be too easy to make errors, so I decided to write my own application to generate the G-code.
This I did, using Gambas3, compiled to a .Deb installation package for Linux. I decided I didn’t want to use separate files for track layouts, and another for holes: the vias are marked on the layouts, and produced as G-code commands at the end of the layout milling g-code files by my G-Code Generator. It has various other functions – e.g. set milling depth, drilling depth, traverse speeds and so on.
I do appreciate that this seems like a lot of work, rather than using commercial products: I can only say it works for me – I can produce my board designs much more quickly than any of the commercial packages I have played with.
Like John, I use UGS to drive my CNC mill – I played with Candle for a while, but it appears to be no longer supported. As John mentions, UGS has an auto-level function, which can be used to modify the input G-code to allow for bumps and twisted PCB board: With a high-speed conical D-bit, this allows very narrow isolating cuts. As someone noted, a sharp tool is also essential – I had some initial problems with milling too deep, resulting in either a broken tool tip, or, eventually, the tip was blunted by the glass-fiber board, but eventually solved those issues.
Registration of a two sided board is by designating (at design) some holes for registration, then picking these up with the mill bit when the board is turned over.
I fix the board down with white double-sided tape (Lidl), which seems to be very effective. I modified an air pump (intended for air-assist on a laser cutter) and attached it close to the cutter, so it sucked instead of blowing, and this is very effective at removing dust.
Through-hole connection is achieved by using small hollow brass ‘eyelets’ in various sizes sold for the purpose on places like AliExpress. They are an improvement on small rivets or wire through connections, because it is possible to also insert a component lead through the hollow centre if required.
As I said, this process works for me, and is reliable and inexpensive.