I've built a custom Arduino shield using a PCB and surface mount components. The board has a short between power (5V) and ground (GND) when it is connected to an Arduino Due.
When the shield is not connected, the short does not appear to be present. With a continuity checker on my multimeter and the board disconnected from the Arduino, I've tested for continuity between GND and all the shield pins (including 5V). I only get continuity where I am supposed to – on the GND pins. I also tested for continuity between the 5V pins and the other shield pins (including GND), and only get continuity where I am supposed to – on the 5V pins.
How can I debug this problem? Why doesn't the shield show a short to ground when it is not connected, but when it is connected, there is a short? What am I missing?
Best Answer
I found the problem. It was a pin mismatch. The Eagle schematic was correct, but I had the shield XIO connector reversed in the Eagle board layout - so I had two pins connected to what I thought was ground, but on the Arduino Due, they were connected to +5V.
It's a 4-layer board. I found the problem by looking at the different layers in gerbv - when looking at the ground (GND) layer, I noticed there were two ground connections that shouldn't be there... that led me to discover the connector was placed backwards in the Eagle board file.
Here's a picture of part of the ground layer of the board that has the problem. The two pins in the upper right are +5V on the Arduino, but connected to ground on my board.