Making Circuit Boards

Rapid iteration is the key to all good things. In software rapid iteration is possible, with effort. In hardware it is possible with a lot of expensive equipment, or if you live beside a PCB factory. There have been some great efforts to make good quality home made boards though, and the following is my attempt to build on that work.

It’s tempting to start right in on optimizing a solution, but it’s important to first step back and remind ourselves of the problem we’re solving. For PCBs, we have a lot of small electronic components that we need to wire together. That’s it. There are a lot of ways to do this, all with different constraints and trade-offs, but it isn’t about etching or soldering or track widths. Of course the world already has some great solutions for this, but our constraint is we need rapid turnaround on a reasonable budget. So a fast way to make thousands of electrical connections. That’s the goal.

Sometimes it helps to think of what our ideal process would look like. A perfect solution can’t exist, but it does help define our goals and minimize the trade-offs. Here are some ideals:

  • Instant: Settle for fast — an hour per board.
  • Free: Settle for a few dollars per board.
  • Defect free: Less than one bad board in 50.
  • No toxicity: Minimal exotic chemicals, fumes, PCB dust and disposal issues.
  • Unlimited layers: At least two layers of copper minimum.
  • Use any components: One day, far away, ball grid array.
  • Invincible: At least durable, no oxidation or stress breakage.
  • Accurate and repeatable: Make many boards in the same run.
  • Any shape: Rectangles or custom shapes.
  • No user error possible: Process guards against bonehead errors.
  • Small traces and spacing: Pins down to 4 mils (0.1 mm)
  • Perfect drilling: Needs to be computer controlled (CNC), and remain exact through process
  • No assembly: Optimize for an easier DIY assembly process.
  • No soldering: Optimize for fast accurate soldering, always seek alternatives.
  • Program and debug: Fast compiles, breakpoint debugging, etc.
  • Single app solution: At least carve an easier path through all the programs required, and document/summarize it well.
  • Same design can be used for professionally made boards: Aim for minimal required tweaks, though don’t be shy about exploring impossible to manufacture ideas — this is prototyping after all.

There are many ways of making do-it-yourself PCBs, here are some common ones:

  • Photo etching: Use pre-sensitized copper clad boards (or laminate dry film on to blanks), expose the PCB pattern on it with UV light, and dissolve the non hardened parts, leaving a mask. Then etch the exposed copper away leaving a PCB.
  • Toner transfer: Similar to photo etching, however instead of using a photo resist, you laser print the circuit mask on special paper, and transfer that to the copper with heat and pressure. Then etch the unprotected copper away.
  • Milling: Put the copper board in a CNC milling machine, and carve out the circuit pattern using V shaped bits.
  • Laser etching: Either use a laser to remove a paint/resist layer and then etch. Or use a very costly laser to blast away the copper.

Photo etching is the traditional way of getting the pattern on the copper, and it works very well. It is a multi-step process. First laminate a photo-sensitive film to the board, print a mask on a transparency, then cure it with UV light. Next remove the non hardened part with a base solution, etch the PCB, and remove the remaining mask with acetone. In spite of great results, it is hard to line up the sides on a two layer board, and it still requires you to drill all the holes with perfect accuracy somehow (this will be a recurring theme).

Toner transfer works great *if* you use the correct paper – I’ve tried many many (many) variations, and the answer is use Fab-in-a-Box toner transfer paper. Many other things can work, but given the price, quality and repeatability, I would now only ever use that. It still leaves you needing to drill holes though, and like with photo etching, it is very finicky to line up both sides correctly.

I’ve used high end laser machines from LPKF, they are very impressive, but not cheap, and pretty finicky. If you have a medium sized company that does a lot of prototyping though, it could be the right fit. They have drill machines as well– all very good, but it would be easy to spend 100k on setup here. There are workflows with a regular laser cutter, and I do need to experiment with these more.

Milling must be the answer then? Drilling is automatic, lining up the two sides is simple, and it all happens on a single machine so it is consistent. It would be prefect except… except the minimum trace width you can easily get is not that small – at least not without a lot of care, time, and cost. Some machines can get 6 mil traces, but that requires a collection of sharp new bits and a lot of patience. That said, there are excellent machines out there, and one of the best options available – especially if you don’t have to use tiny chips and components. The good ones also come with quality software that helps you through the process.

That covers most options for getting the traces on copper, but in reality drilling and soldering PCBs by hand can be the bulk of the effort – not to mention it’s very tedious, time consuming, and error prone. A CNC milling machine is a reasonably cheap way to make the drilling fully automatic, and is probably the highest value upgrade to the process (plus you can mill a pretty good circuit with it). A pick and place machine is the normal way to assemble boards, but they aren’t ideal for DIY prototyping. They are expensive, require solder stencils, as well as a lot of effort to set up per board. Even if you have access to all of this, for simple one-offs you may still want to assemble boards by hand. So thinking of ways to make the drilling and assembly steps easier should be top of mind right through this process.

With these constraints in mind, the best process for me so far has been what I call ‘scribe milling’. It uses a milling machine for both drilling and drawing the traces, but it scratches the traces into the board rather than fully milling them. The board is then put into an enchant for a few minutes to complete the traces. This allows *very* fast carving – 2500mm/min, that’s like two minutes per board! It is repeatable with very high precision. Even the etching is very fast with minimal chemical and odor — the scratch edges mean very little copper needs to be removed. The scratch bit is simply a very cheap (and indestructible) scriber tip. They are less than a dollar each, and because it only scratches the copper (not the fiberglass) is stays sharp for months. If you skip the solder mask step, you can produce a fairly complex board with 6 mil footprints in less than an hour.

I have also been experimenting with mounting SMDs vertically (0603’s from the top to bottom of the board), and this works surprisingly well. It makes these components easy to place, easy to solder, and the board is very durable. It does involve some h̶a̶c̶k̶i̶s̶h̶ creative steps with KiCad, but it can greatly speed up assembly. The main drawback is a fab house probably won’t make the board as is, and certainly a pick and place machine wouldn’t assemble it. In spite of that, I love it for prototyping.

The following posts will document this whole process – from KiCad to a working board (and ultimately all the way through to building and using prototyping software which is the main thing I’m doing here). I will try to update as things change, but please feel free to comment with any tips and tricks of your own. I’m also on twitter if you prefer @debreuil. It’s amazing how helpful little things can be with DIY PCB manufacturing, so input is always appreciated.

Next: KiCad and Scratch Milling