Making PCBs at Home

I like building stuff with electronics, but for projects expected to actually go into ‘production’, a breadboard just doesn’t cut it. I know I can order PCBs cheap on the internet, but last I checked they’re ether from China and take a while to arrive, or not inexpensive.

So here is the approach I’m currently using to do PCBs at home in a relatively quick and cheap way. Note that ‘beautiful’ is not a word in the previous sentence 🙂 This method is based on ideas and processes I picked up on various sites, particularly has lots of interesting stuff.

I design the PCB in Fusion 360 – I know I can use KiCad but I learned Eagle a few years ago and have a Fusion 360 license for doing 3d printer designs anyway.

Once the PCB is done I select all the relevant bottom layers, and print them in b/w and NOT MIRRORED. The goal is to have an image that is the mirror inverse of what needs to be the etch mask later. This sometimes takes me a few times to get completely right, so I print on normal paper first. The printer must be a laser printer and you need good toner with solid black areas!

Once it looks right I put a piece of magazine paper over it, attached at one end. The paper needs to be the type of slightly glossy, completely smooth thin paper you find in magazines or catalogues. I’m using half a page from an ‘ELV’ catalog here. 🙂 It’s only attached at one end because it needs to go through the laser printer without getting torn or folded and I found this works best on my super cheap Samsung M2020. Be aware that whatever laser printer you use might not like this at all, do at your own risk.

Once I have the size I cut a piece of pure PCB, just copper layer, no photosensitive layer. I find a manual jigsaw works best. After cutting I file off the edges, do a first clean of the surface with steel wool, and then a second clean with acetone to remove all grease from it. (Use gloves!)

I attach the piece of PCB with the copper surface to the printed design, using heat-resistant tape. Then I run it through a laminating machine, any cheap one should do fine. It needs to go through a couple of times, probably based on temperature and size. I just let it run through in all directions until it’s too hot to touch and the paper solidly sticks to the PCB – don’t pull it off!

I cut off most of the paper and soak the whole thing in water for a few minutes. The paper gets ‘darker’ and finally starts showing the underlying PCB layout. At that point I start gently wiping the soaked paper off the board, it should come loose with almost no effort. The toner is left behind, stuck to the copper.

If the toner is not properly sticking to the PCB then the treatment in the laminator was too short or it has not properly soaked. If that happens I clean the PCB with acetone, and go back to the previous step.

In the meantime I’ve preheated the etching solution (just ferric chloride) – the heat bed of a 3d printer works quite well for this 🙂 This will make the etching process take only a few minutes.

Etching in progress. I carefully wobble the PCB around to ensure fresh acid gets to all surface area uniformly. The toner acts as a protective layer, letting the acid remove all of the other copper. Once there is no more shiny copper left I remove the PCB and wash it in water to remove the remaining acid. (Again, use gloves!)

Finally I wipe off the toner with acetone to get the finished PCB. (Did I mention using gloves?)

I occasionally use the same laminating process to also get a silkscreen layer on the other side of the PCB – that’s useful for more complex designs but often unnecessary. I think it should also be possible to do a double sided PCB this way, but most of my designs work well single sided with a couple of jumpers and I avoid the hassle of lining up front and back.

The PCB can be used with the pure copper surface, but I like to put a layer of tin on it to make soldering easier. I found the easiest way is using this “Fittingslötpaste” that’s otherwise used for soldering pipes together. I smear a layer of this stuff on the copper surface, and then heat the whole thing with a heat gun. The paste first looks like its melting, and then it gets solid again. After that I stop applying heat, let it cool, and then wash off the solidified paste with water. Underneath it a uniform layer of tin has covered the copper.

Once all layers are etched/laminated/tinned, it’s time to drill holes as necessary using a drill press. Again I don’t strive for perfection, I just drill everything with an 0.9mm drill and then check if something doesn’t fit.

This here is just a simple breakout board for an experiment, but the pinout of the RJ45 connector just doesn’t fit in a breadboard and I didn’t want to order and wait for an alternative.


A Surprisingly Useful Tool

20x magnifying stereo microscope, with a common ruler in its fangs.

Based on a recommendation from a coworker I bought a simple stereo microscope for around 30 Euro a while ago. I believe the manufacturers idea is that kids look at insects or little rocks with this (it actually comes with a few tiny splinters of different rocks), but this thing turned out to be extremely useful for several of the electronics stuff I’ve done lately.

For example I’ve used it to check my work after etching a PCB or soldering it. The magnification of 20x turned out to be perfect – it’s significantly better than my eyes but still “real” enough that I can interact with the object using small tools or a soldering bit.

I found having two occulars is not magically improving what I can see, but it certainly makes it less stressful to look through it for a long time. The magnified image shows about 8mm of object width.

In a recent case I was struggling with an Arduino Nano, which was connected to a Raspberry Pi, and just did not want to work if the host rebooted while it was plugged in the USB port. All I got were errors like this in the logfile:

May 23 20:32:28 raspberrypi kernel: [    3.707998] usb 1-1.3: new full-speed USB device number 4 using dwc_otg
May 23 20:32:28 raspberrypi kernel: [    3.807985] usb 1-1.3: device descriptor read/64, error -32
May 23 20:32:28 raspberrypi kernel: [    4.028021] usb 1-1.3: device descriptor read/64, error -32
May 23 20:32:28 raspberrypi kernel: [    4.257989] usb 1-1.3: new full-speed USB device number 5 using dwc_otg         
May 23 20:32:28 raspberrypi kernel: [    4.357989] usb 1-1.3: device descriptor read/64, error -32
May 23 20:32:28 raspberrypi kernel: [    4.577988] usb 1-1.3: device descriptor read/64, error -32
May 23 20:32:28 raspberrypi kernel: [    4.698153] usb 1-1-port3: attempt power cycle
May 23 20:32:28 raspberrypi kernel: [    5.358060] usb 1-1.3: new full-speed USB device number 6 using dwc_otg
May 23 20:32:28 raspberrypi kernel: [    5.818026] usb 1-1.3: device not accepting address 6, error -32
May 23 20:32:28 raspberrypi kernel: [    5.918003] usb 1-1.3: new full-speed USB device number 7 using dwc_otg
May 23 20:32:28 raspberrypi kernel: [    6.357982] usb 1-1.3: device not accepting address 7, error -32
May 23 20:32:28 raspberrypi kernel: [    6.358192] usb 1-1-port3: unable to enumerate USB device

Turns out the problem is not with the USB driver in the Linux kernel, but instead it’s a hardware bug in the Nano: The FTDI serial chip’s “TEST” pin was left unconnected. This way it “floats” after a power cycle and reliably prevented prober USB device enumerating. Ugh. I realized this is the problem after a lengthy search and finally stumbling over this issue in the FHEM wiki.

So here it goes, on the bottom side of the Arduino Nano I need to connect two freaking small SMD pins with each other, so TEST is reliably pulled to ground. I can hardly see those pins properly!

Perfect situation to use the microscope: Put a tiny blob of solder on the very tip of the soldering iron, veeeery slowly direct it to the right pins, and done!

With this the Nano gets connected properly whenever then Raspberry Pi reboots. 🙂

Microscope set up to allow viewing the bottom side of the Arduino Nano.
Solder blob connecting TEST and AGND pins.