I had a wake up call using Eagle Cad and a third party libraries. And I wanted to share how my ignorance caused my boards to fail (for now).
Just for reference the board uses an Atmega328P SMD and i wanted a smaller and cheaper part than a normal crystal. So I went with a resonator, there are a few very cheap and very small. I am not that good on creating parts layout by myself so I searched on the libraries at hand for a resonator with the footprint similar to the one I wanted to use. And very quickly I found a smd resonator on Sparkfun-FreqCtrl library and the part is RESONATOR-SMD. First I was very happy to actually found this part. So I put the part on my PCB and send it to fab for manufacturing. The board came back beautiful red (I had to pay a little more for color selection). Then I notice that around the resonator there were some solder mask missing, but said to myself this must be a size limitation from that cheap Chinese fab. I am like a little kid whenever I get mail, so I ran to get my iron and started soldering. "No need to do any measurement, I am 99.9% sure the design is correct" I said. If fail then I will test, but I wanted to solder right away. So I did.
Latter after the boards start failing I then went back and did some measurement, just to find some missing solder mask and some exposed copper. The copper exposed then again I thought at first it was because of Chinese fab, but turn to be my mistake not the fab.
Lets see the picture bellow, look the black region is missing red solder mask. And at the borders you can see exposed copper (blue arrows). The missing solder mask (black part) does not causes any problem. However the exposed copper do. It causes my resonator to short to ground making my board fail.
And what was the cause of all? The actual part on the library had instructions to be constructed exactly as it was done. There is a layer in eagle called tStop. The tStop layer is the one that allows solder areas of copper to be exposed. This layer stops solder mask in a specific area. This part has a rectangle over the entire part. The size of this rectangle plus a small isolation in the board causes this tStop rectangle to go over my ground plane, and causes the copper to be exposed. On the image bellow, the big white hatched rectangle is the tStop that caused the problem. This made my twenty boards order to fail.
I have three options:
1. Etch (manually) out that exposed copper to a distance that I can solder the part
2 Cover with heat resistant tape the exposed copper
3. Paint it over with solder mask (that I do not have at hand).
I am going to get a few pieces of tape, and try to cover the exposed copper in order for me to use these boards. But anyhow I edited my design and send a few more to be made, this project need to be finished and quickly. In about two weeks I should be getting them back and hope this issue is water under the bridge.
Hardware design has its ups and down, but it is well worth it. You win some and loose some and learn a lot during the process.
I should try to contact SparkFun about the part, or submit a pull request with the fix. I am a noob, this might be the right design and I am the one mistaken. Anyhow for PCB with a big ground plane close to this part this is not working. My guess is that the rectangle is intended to avoid ground plane under the part and not to stop the solder mask. This must be a layer mistake.
For the new PCB I did a ground plane cutoff polygon around the resonator, removed the tStop from the part and made the side contacts a little bigger (for easier soldering). When I get the PCB back from fab will post again with the new board. Hope that it work.
This PCB eagle files are not posted now, because this board is for a surprise event. After the event all will be posted. If you want to know, the board is just a usbaspLoader using an Atmega328P with an Arduino header footprint. Nothing revolutionary. Oh and of course, instead of a crystal with two capacitors it is using a 16Mhz resonator.
Top Comments