Every electronics person has this story: the board works. On the bench, with the good bench supply, in the good harness. Then it ships and it does not.
The usual suspects
Ground bounce
A shared ground return carrying switching current will make your analog signals lie. Star the ground, or give the noisy part its own return path back to the capacitor.
If your ADC reads a value that depends on what else is switching, you have a ground problem until proven otherwise.
Floating nodes
A floating input is an antenna with an amplifier attached. Every unused pin gets defined — tied to a rail or to ground, never left alone.
Cable pickup
Your test harness is part of the circuit. Long ribbon cables in an enclosure pick up noise, and a “clean” bench setup hides it by accident.
The checklist I actually use
- Measure with a short ground spring, not a long clip lead.
- Check the rail first, every time, before looking at signals.
- Freeze the MCU clock and see if the noise follows. If it does, it’s analog.
- Compare against a known-good board with the same firmware, if one exists.
What fixed it
A decoupling capacitor placed too far from the pin it was meant to decouple. It was on the schematic, it was in the BOM, it was in the right value — and it was 40mm of copper away. Moving it to the other side of the board fixed it.
Takeaway
The schematic is the intent. The board is the implementation. When they disagree, suspect the layout.