Created
05/22/06
Related Items/Links
PIC
programmer
Senior Design Project
Software Used
Schematic: MultiSim 8
Board Layout: UltiBoard 8
PCB Fabricator / Cost
PCB Fab Express
- $19 ea. for 4"x8.5"
- minimum of 5 boards
- wholeheartedly endorsed!
I've been meaning to try my hand at PCB layout for a while now, but none of my projects ever really required it. My group's senior design project (a demonstration model of a reconfigurable IC tester to assist in radiation-validation of new ASICs) didn't really require it either, but we felt that putting our system on a PCB would make it look more professional (it was previously distributed over a handful of dead-bugged copper clad sheets connected by a dozen poorly made cables). Also, sloppy construction was suspected to be the reason why our RS-232 connection between system and host computer was only transmitting about 70% of bytes correctly, so there was some hope that a PCB would solve this problem. It did. To skip ahead a bit, it was supposed to look like the photo on the left, but eventually looked like the photo on the right:
The first step was to consolidate all of my hand-drawn modular schematics into one system schematic on the computer. I used Electronics Workbench's MultiSim 8, a combined schematic capture and circuit simulation suite, for availability reasons. Until trying this software I was convinced that schematic capture on a computer was an impossibly complicated task no matter what software is used. Now I see that it isn't bad at all, but that every program I've tried until now has just had a spectacularly crappy user interface. MultiSim is simple and intuitive, yet provides a lot of powerful options and flexibility. Adding new components to the parts library is painless and fast.
Board layout was done in Ultiboard 8, which cooperates very closely with MultiSim. This being my first layout, it took me a few evenings to finish. Ultiboard has a 3D visualization feature that really helped me see what I was doing. The Ultiboard footprint library is absolutely massive - far more impressive than the components library in MultiSim. I did not have occasion to try making a new footprint however; I'm not sure how painless it is.
The autorouter in this version of Ultiboard (apparently an extension, called 'Ultiroute' is absolutely phenomenal. I spent two evenings optimally placing parts. Routing took about a minute and twenty seconds. It did a decent job, too. I figure it saved me about two weeks of work.
I exported Gerber 274X layers and an Excellon drill file, zipped them together in one file, and sent it off to PCB Fab Express. My groupmates and I selected this fabricator over all the others we found on the net. The primary criterion was cost. PCB Fab Express advertised $13 boards, minimum order of 5 boards; the closest competitor offered $33 each, minimum order 3. We honestly expected to destroy 3 boards in construction and testing, so PCB Fab Express' greater minimum order did not faze us in the least. Secondary to cost was convenience and features. PCB Fab Express offered unlimited drill sizes per board, five-day turnaround, and reasonable design constraints such as annular ring width, trace width and spacing, etc., and also included solder mask, tinning, and topside silkscreen. They were the obvious choice in our situation.The day after I sent the order, I received an email informing me that there were problems with my design:
Lesson #1: Double-check design constraints, even if the layout software claims all is well.
My design included six plated through-holes with annular ring widths below PCB Fab Express' minimum. I did not catch this initially because I had previously set Ultiboard's global design constraint for annular rign width to an acceptable minimum value. Little did I know that there is a check-box on the properties sheet for every part that allows for an override of global design constraints, and two of my parts had this checked by default. I discovered this by finding the undersized annular rings using the handy little spreadsheet-view feature, which exports a spreadsheet containing an awful lot of board feature properties. I simply sorted this by annular ring size and found the six miscreants, fixed them manually, and re-submitted the PCB design for fabrication.
Lesson #2: Read the fine print.
Only after scrolling to the bottom of the page and reading the fine print did it become apparent that the low low price of $13 would only buy a board of up to 20 sq. in. area. $18 would purchase a board between 20 and 30 sq. in. I misread this as the price for a board of 30+ sq. in., up to the next bracket, so I ordered my 4"x8.5" board as an $18/board order. My error was noted in the email I received, and I was informed that the boards actually cost $19 (for 30-40 sq. in.) each. This was still a very acceptable price. PCB Fab Express charged the difference to my credit card, and my order was not delayed when the order was resubmitted.
I received my boards in a well-padded envelope about two weeks later. They were absolutely beautiful. There it was, traces, holes, pads, and silkscreen exactly as I had specified, but made into a real, solid object that could be held... One possible issue I noted right away, though. Before receiving my boards I really had no conception of how small 7 mil annular rings are. They are quite narrow. They turned out to be a lot easier to solder than they looked, though.
I think the boards would have arrived sooner had I not placed an order right before a weekend. I don't know if this fab house operates all week long, but in either case, after the 5 days of manufacturing time, the boards still had to be shipped to me, and the next weekend probably slowed that a bit. They arrived just in time. Any later and our senior design project would have been delayed, because we had a bit of debugging to do...
Lesson #3: Your design contains errors.
It turns out that adding new parts to the schematic capture library isn't quite as painless as it initally seemed. Every software has its quirks. MultiSim likes to resequence pin numbers starting at the upper left corner on all new parts which have been copied from another, similar part already in the library. The schematic symbol and pin names copy over, but not the numbers. I did not realize this, and the program did not inform me of this. After making a MAX232A from a MAX232E copied out of the library, I did not check the pin mapping table closely because to do so for every part would have taken a long time, and we had a looming deadline to meet. I erroneously just sort of assumed that the 'copy' command really copied.
The resulting part had a completely incorrect pin mapping, but in my schematic, I connected lines by name and function, not number. The schematic went to layout, the layout went to fabrication, the board came back, and I gleefully soldered in a bunch of parts. In fact, I soldered in nearly all of the parts.
I took pictures as I soldered parts in. I did not perform one single electrical test during this process.
When I powered it up, I immediately noted that my power bus indicator LED for the 5v system supply wasn't glowing. Ye olde multimeter showed that my 5 volt system power bus was hovering at around 3.5 volts. Well, that's no good...
Lesson #4: Incremental testing is your friend.
I could have saved a lot of time and effort had I employed incremental testing while I constructed the board. Instead, I had to start a second board, because at the time I had no idea where the problem lay. The second board was built two or three parts at a time, starting with the power supply at the corner of the board, and slowly spreading out like an encroaching mold.
After every few parts were installed the board was tested to verify proper operation. When I installed the MAX232A, the main supply bus broke. The MAX232A made a decent space heater. I had found my culprit. I don't know how I missed that chip heating up on the first board. Unfortunately, I had soldered the MAX232A directly to the board.
Lesson #5: In the initial prototype, socket every IC (if possible).
I now had one and one-third completed boards, both of which with a MAX232A soldered in. The holes in the board could take a lot of solder, and I gave it to them. Desoldering proved unsuccessful, both with a solder sucker and desoldering wick. There was insufficient room to maneuveur a pair of cutters in next to the chip. In the end I had to literally saw off a row of pins on each chip with a dull pocket knife. It took a while, and I almost severed a trace when the knife slipped. Once that chip was removed, however, all voltages on both the first and second boards were bang-on. There was much rejoicing. I completed the second board, but with more sockets this time. It probably would have been wise to socket them all.
I already had several of the more important chips socketed. The microcontroller, obviously, but also the MAX7301 port expanders and the 74VHC541 bus buffers, because we had a limited supply and both products had gone out of production in DIP package in the time between design inception and board production. A very irritating development, to be sure.
The ICL232 is a placeholder for the purposes of photographing the board; we didn't yet have an available MAX232A after cutting two of them off our boards:
A special adapter was built to correctly connect the misordered board pads with the true MAX232A pinout. It was made by my groupmate Martin out of two sockets, solder, wrapping wire, and a frustrated hour of cursing at the unwillingness of the solder to stick to charred plastic. I injected the interior space with hot glue for strength. Then I handed the board off to my groupmates so that they could flash the microcontroller firmware and test actual operation. The board was designed to allow firmware updates via an ICSP header next to the serial port connector:
Lesson #6: Your design contains more errors.
Marc soon reported that he could not program the microcontroller through the ICSP port, but he could program the microcontroller when it was removed from the board. He determined that the pinout on one side of the chip was correct, but that the board traces connected to a reversed pin order on the other side. I never determined how exactly this happened, but it probably can be traced to when I made the PIC16F737 part in MultiSim, entering pin names off of a datasheet. Marc put the microcontroller on a small piece of protoboard and built a DIP plug from male header. He connected the two using the correct 16F737 pinout. This adapter was then plugged into the microcontroller socket on the board, and it operated correctly.
Later it was discovered that the silkscreened pin labels for one of the signal banks in our plugboard socket were reversed. A minor problem. Also, a chip-select trace to a module that we did not plan on activating in firmware in our initial prototype version was found to be missing - the signal line was waiting to be connected in the schematic, I forgot about it, and then overlooked it in visual inspection. A somewhat less minor problem.
Lesson #7: Surface-mount soldering isn't as hard as it looks.
At least, soldering surface-mount chips isn't as difficult as I expected it to be. SMT resistors or capacitors would probably be harder. All I did was put a little blob of solder on one of the pads, then put the chip down while the blob was liquid. Then I soldered each pin as i would any other IC pin, heating the pad and the pin before applying my solder. Of course, I'm sure that having a narrow iron tip and narrow solder helped a good deal.
Lesson #8: Seeing your names on a board feels neat, even if it probably will never be used.

And here are some other pictures that don't really go with any particular part of the above text.

answer this post
Errors...