While swapping SDRAM chips on one of the Mesh Potato prototypes a short developed between 3V3 and GND. This is nasty as 3V3 and GND are both power planes so the short could be anywhere on the board. I had a few goes at finding the short over the last few days but no luck.
The short was very low resistance, giving the same reading as a dead short on my multimeter. I tried the trick of high current (3A) low voltage (0.3V) in an attempt to “burn” the short out but that didn’t help either.
Then I started dreaming up ways of locating the short. The first idea I had was to pass a high frequency signal through the shorted nets. High frequency currents follow the path of least impedance so maybe I could track the signal path with some sort of small loop connected to my oscilloscope. Then I extended that idea to a DC current. I figured that current must pass through the PCB 3V3 plane, the short, then back through the ground plane. The power planes have a low but not zero resistance. As the current flows through the planes, a voltage drop will gradually develop (V=IR) along the path of the current.
So if I measured the voltage at various nodes on the 3V3 and ground nets, I should see slightly different voltages along the path of the current. If I measure two nodes that have no current flow between them, they should be at the same voltage. So by looking for small changes in the voltage I should be able to establish the path of the current through the planes. When I get to the short, the voltage between the 3V3 and GND node should be equal.
So I rigged up a high current but low voltage (1.6A, 80mV) through the short. The low voltage means no components can get damaged, despite the current. I connected one multimeter probe to the power supply negative terminal, and probed various nodes with the other multimeter probe. I measured about 30mV on most GND nodes and 50mV on most 3V3 nodes. However one 3V3 node was 45mV. It was a capacitor near where I had removed the SDRAM chip.
So I carefully pulled the capacitor off and looked underneath: