Electronic – arduino – short to ground in custom Arduino shield only when connected – how to find it

arduinodebuggingshort-circuit

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.