By now, my schematic was ready. Now it was the turn of designing a PCB (a task that, for some undetermined reason, seemed terrifying to me — I really have to discuss this with a shrink, if I ever get to visit one). Supposedly this is an easy step: one gets CadSoft Eagle to create the board, places the components around, then clicks the autoroute button, then Eagle does all the flying there’s to do, and that’s it. Nope, you guessed right: in practice, seldom does it go like that.
To begin with, the SMD sizes in the reference design were not what I needed. In Greece, where I live, I could find no 603-series SMD components in retail stores, and I would have to order these in the order of hundreds from e-stores abroad. This would make my budget skyrocket. So I had to go back and change all components to 1206-series, available in my local retail store. This made my PCB quite larger; on the positive side, it also made it easier for me to solder components by hand. Then, I had to finally face the ugly truth: I had to turn this spaghetti mess (you can click on the image to see details):
into a PCB. Aaaaargghghgh!!…. How is it ever possible that people do things like this?!? It goes without saying that Eagle’s autorouter failed because of several constraints. Eagle’s design rules do not allow sizes as small as the ones I had to deal with, and the PCB size allowed by the free version of Eagle did not allow me to spread components on a PCB sparsely enough to allow Eagle enough space to route all the signals. I would have to tweak its design rules, like how much space to leave between signals. This would be risky, since it would affect all the circuit’s signals. I decided to let go of the autorouter.
I turned again to David Rowe (to whom I must confess that this design owes a lot…); after all, David had also used the 3210 reference design. So I could “learn” from the PCB design of his IP04 FXS module, that is, I could use at least the component placement and routing guidelines from his board — or, put in less elegant words, copy shamelessly a part of his PCB design into mine. But after all, this is exactly what “Open Hardware” is all about: it’s letting other people re-use what one has accomplished, saving them time and effort, and letting them to the “diff” work instead of re-inventing the wheel. So, I “used” a lot of the IP04 FXS module design in mine. Thanks, David!
Just to complicate things further, either the snap grid of Eagle seems to be somehow not-exactly-tuned to millimeter dimensions, or its precision in small dimensions was not so great. Whatever the reason was, my octagon-like routing stripes with 45-degree angles were not exactly correct. I had to magnify several times the working area and drag-drop things around to achieve good-looking angles, just to find out that rescaling this to the normal PCB size would bring some stripes too close together, resulting in short-circuits. I had to print quite a number of transparencies and tweak routing by tenths of millimeters to avoid these.
After two weeks or so of sweat, I had a first version ready. Then, I had to go back-and-forth some times from the schematic to the board, correcting some things. Even in the last moment, I decided that soldering the miniature USB SMD connector was a toughy for me and switched into a normal type B connector. So, here is my final design (as of this writing, of course).
You could see quite a few signs of amateur design: I had not “smashed” components, so their names were not placed where they should be (for example, L1’s name is outside the board — this would make it impossible to print correctly in a mass-production scale); or, there were only three mounting holes, etc. etc. But it was a board that looked correct. Here are the top and bottom (mirrored) layers in PDF format in 200% magnification (the ugly stripes in the fill areas if you set the zoom to 50% are a bug of the PDF print driver in Eagle — these print OK in a normal printer, however you ’ll need the original Eagle .brd file to produce a usable printout; please drop me a mail in case you want this, WordPress won’t let me host Eaglle files here).
Now comes the funny part.
I decided to etch the two-layer PCB by myself, using my home “production facilities”: a laser printer to print the PCB; a good supply of projector transparency sheets; markers of different sizes to make fill areas darker (otherwise light still goes through these during exposure); a mercury-vapor lamp (placed in a gardening pot!); a generous supply of double-sided photosensitive boards; an equally generous supply of potassium hydroxide powder to develop exposed PCBs; and a less generous (most of the trial PCBs never made it through to this stage), but nevertheless still respectable supply of etching solution powder.
It turned out that I had better give the PCB production out to some professional service company. These damn tiny thin copper stripes made it almost impossible to produce and etch a correct PCB with my home facilities. Either the exposure was too much, so thin stripes tended to get totally eaten or corroded during the etching solution process, or it was to little. In some of my trial PCBs the stripes between the 3210 and the PIC simply did not exist. In still others, they were glued together by some ugly corroded copper areas. In still another trial PCB, the 3201 (on the right-hand) stripes and pads disappeared altogether… Duh… It took me about seven trials to get a PCB which still had some of the lines between the PIC and the 3210 eaten by the etching process, but in places where I could “patch” them by soldering hair-thin copper wires along their path.
After about 7 or 8 failed attemtps, I was finally able to proudly present my PCB (apologies, I didn’t shoot any pictures before soldering parts):
To show a bit of the not-so-clean underwear, I am including a shot of the part with the wire patches soldered upon damaged stripes:
As you can see in the underwear picture above, soldering the damn tiny pins of the 3210 onto the damn tiny thin (and very dense) copper pads proved to be less of a problem. If one uses an adequate soldering iron (my soldering iron for SMD is about 8W with a very thin tip) and lots of soldering paste, it is feasible to solder even a chip like this without burning it, short-circuiting pins together or destroying the PCB by overheating the pads. True, it required a bit of rehearsal on a throw-away PCB (and I had many of these from my failed etching attempts), but it proved to be doable.
A harder task was that of soldering “vias” (which would be through-hole plated in a normal production PCB): OK, I took care to avoid “vias” onto which non-SMD components must be soldered (otherwise there’s no access to the component-side part of the “via” and it’s very hard to solder it). OK, in most “vias” I just used a small piece of copper wire soldered on both the top and the bottom side. *But*, there were two “vias” under the 3201, and I had to make sure that the small wires that connected the top and the bottom side would not protrude over the top side of the PCB surface, otherwise the 3210 would not sit correctly on the PCB and it would be very hard to solder it. I solved this quizz by means of the following invention: I bent the top end of the small copper wire into a spiral, with a diameter of ~1mm (same as the diameter of the “via”’s hole). Then, this spiral, along with the neighboring copper pad of the “via” made a good surface onto which flux would spread, connecting the pad with the spiral, and without protruding a bit from the PCB’s surface. I practiced this on many other “vias” until I finally soldered the ones under the 3210. Phewww… The hard part of my PCB seemed to be done!
Also not yet placed into my Eagle PCB design is a hole that one needs to drill under the 3201 to have access to the thermal copper pad on the top-side of the PCB and underneath the chip. According to the datasheet, this thermal needs to be soldered to the thermal pad on the bottom side of the chip, and this cannot be done otherwise without a reflow soldering oven (if you have such an oven at home, drilling this hole is not needed, but I did not).
To give a glimpse into what’s going to follow, this thing worked! Although this brought me face-to-face with my next big nightmare (it seems that I have a lot to confess to this shrink after all), that is, writing firmware code for the PIC. More on these in my next posts!