The good thing with failure is: it is an opportunity to learn :-).
So here is a case: For a STEM roadshow (see “MINTomat: World’s Most Complicated Bubble Gum Automata?“), we have produced in a rush an autonomous robot with a shiny printed 3D cover:
The board on the top has 4 I²C ToF (Time-of-Flight) sensors to measure the distance through a hole on each side of the sensor board on the top:
The 3D printed part is attached with screws to the PCB:
The robot worked fine for several weeks, until it failed. Failure is indicated with a red LED error code: all LEDs were permanently showing in red:
The robot firmware uses USB CDC for a command line interface. Hooking it up on the host showed that the I²C communication to the sensor fails:
So there is something wrong with the sensors? The cover is attached with screws to the sensor PCB, removed the screws to inspect the board:
Because things were on a very tight schedule, we had to produce the prototype board internally. And because of a layout error, we had to fix two traces. A close inspection of the PCB showed where the problem was:
The board was working fine initially, but over time the mechanical pressure of the 3D printed part pulled down the solder of that fix, making a shortcut with the ground plane :-(.
With this, the temporary fix was easy: fixing the shortcut and putting in a mechanical spacer so there is no pressure applied on the board surface in these areas.
We better would have spent a day more to get good PCBs and not to rely on internally produced ones. Temporary solutions won’t last long (that’s why they are temporary). Don’t underestimate mechanics and mechanical pressure on solder: solder will flow and can create all kind of effects (not talking about high acceleration or vibration forces here!). And always think about the unexpected, and yes we have learned yet another thing which comes with experience :-).
Happy Learning 🙂