So there are lots of ways to do electronic projects, and most have been used at the hackspace – Breadboards, Stripboard, Variboard; but I wanted to try my hand at PCB making, opening up opportunities to work with surface mount chips as well as looking much neater.
The first issue you run into when starting with PCB stuff is the layout of the board. Â As an opensource fan, I wanted to use opensource applications, and this is an area that I found was problematic – KiCad is overly complex and expects a lot of prior knowledge, Eagle isn’t opensource (there’s a free version, with restrictions) and others are less established, crashy or require a lot of hoop-jumping to install.
I decided to go with Fritzing, which still has various issues, such as random crashing and a very “interesting” autorouter, and the fact that to get the latest, less-crashy version, you have to download the binary version from the website or compile your own (no ppa or packaged versions).
I found that the multi-step process of Fritzing (breadboard -> schematic -> pcb) was a great idea but some of the things I wanted were not breadboardy (isp header, 1mil sockets) and also the circuit I was building really benefits from a wide not long breadboard and those don’t exist in Fritzing. The main problem though is that when you finally lay out the PCB and connect what you want to connect, then hit the autoroute button, those it thinks are unroutable it disconnects. Â Then you have to re-lay out the board and remember what connected to where. This lead me to a board with wrong routing that I manufactured.
Thankfully, all was not lost, we rescued the circuit, but I’m getting ahead of myself… Â The method I used to make the board is a common one – print onto laser transparency, expose to UV (actually used a standard energy saver light), develop for about a minute and then etch in a tray of acid.
I then broke about 4 drill bits trying to use the pillar drill to drill the holes, finally resorting to a dremmel, which actually seems easier and about as accurate.
Okay, so some of the holes were not perfect but that was to be expected. Â I went ahead and soldered the board up and then was quite confused when it didn’t work. Â With the help of one of the other hackers we located the causes – three routing errors in total, and some tracks were too close together, causing shorts.
Using a craft knife to cut tracks, using tracks that were aimed to be for the reset button (who needs that?!) and jump wires, we were pretty sure that the circuit was correct. Unfortunately, the board still didn’t work.
We scratched our heads a bit, followed the traces with a multimeter and then it struck what the problem was – the copper was on the wrong side of the board. Â Effectively, the transparency was the wrong way round when the board was exposed, leading to a reversed chip layout.
Almost ready to throw the board away, we decided that the time spent on making the board would be well worth the two minutes to “deadbug” the circuit – effectively treat the dip chip as a surface-mount chip and solder it to the copper side.
The finished board looks fine if somewhat blurry here (apart from the fudged pins from inaccurate drilling and how is that arduino clone running blink without a chip?!) from the top :-
Side on and from underneath though makes people squirm and draw back in horror!
So version 2 will be so much better!
P.S. The reason for the word “ShrimPCB” is that I’m using the fantastic “Shrimp” project’s circuit as a base for this Arduino clone, once I have made a working version that doesn’t require the fixes as above, the fritzing and svg files will be on github and/or thingiverse.
There’s a reason everyone uses Eagle (free or otherwise). PCB CAD software is *hard* when you have to include all the drilling dimensions, the track clearances, a library and so on. All the Open Source ‘free’ ones are a bit shit and my time is worth more to me than spending ages debugging something that’s gone a bit wrong or crashed whilst I was using it. So I use Eagle and so far I’ve had perfect working PCBs every time.