Computing stuff tied to the physical world

The PCB that got everything wrong

Once the fundamental design and most of the details of a circuit have been worked out, it’s nice to turn it into a Printed-Circuit Board (PCB). With a free-but-not-open-source package such as EAGLE, we can turn this:

DSC 4958

… into this (with a few more components added, i.e. radio and 2nd FET):

Screen Shot 2015 04 28 at 21 13 09

… then into this, after placing all components and routing all the traces:

Screen Shot 2015 04 28 at 21 13 30

And then send it off to a PCB fabrication house to have a few boards produced:

DSC 5039

Looks neat, but you better make sure everything is correct. In this particular case, it wasn’t done accurately, and several mistakes crept in. With huge time-wasting consequences…

Having to debug a PCB can be a lot of work, in particular if there are MULTIPLE bugs!

In this case, it turned out that every 3-pin component had been done incorrectly:

  • the TLV431 shunt regulator had the anode and the cathode switched
  • the BC549 was placed as its mirror image (i.e. collector & emitter swapped)
  • the two ZVP0545 P-MOSFETs had their gate & drain pins mixed up

DSC 5043

Mistakes happen, that’s life. And every time you identify one, your eyes will light up in delight. Aha! Gotcha! But then you fix it, try again, and … dang, it’s still not working!

There were a bunch of other mistakes which made these problems even harder to fix:

  • re-using the breadboard components for the PCB, thus destroying the only usable point of reference on the planet – don’t do it, keep it around!
  • assuming that orientation is the only error one can make: in each of these cases, the pins were mixed up in such a way that a quick check that the Vref/Source/Collector pins were in the right spot failed to catch these mistakes
  • re-using a part for a different type of component (because not every component is available as an EAGLE library part) – without being obsessively careful to check every single pin assignment

At this stage, you really need to jump from one stone to the next. Which is why it’s essential to keep the breadboarded version around, to not lose confidence in what is working (note that component tolerances might still cause a second build to fail!). Debugging a board with 3 mistakes and not being 100% certain that the circuit really works is … madness.

Also: it doesn’t really help that the EAGLE schematic is correct – this just creates a false sense of confidence that “the board only needs to place each component right” and then we hook it all up and the project will be done.

The moral? Every mistake will come and bite you. There are no shortcuts to being careful.

[Back to article index]