General PCB design tips
07 January 2019 at 12:02 pm
When I made my first PCBs, I had no idea what I was doing. I played around with Fritzing and looking back on those designs, it’s a wonder that some of them worked at all. I now make many designs per year and most of my income is from creating electronics and writing the accompanying software for customers. This post sums up all those tiny things I wish I knew when starting out creating my first circuit boards.
Laying out PCBs is something you’ll learn as you go along. There’s lots of things you don’t do like placing delicate signals near a switching buck converter or let signals run anywhere without a good ground plane nearby. Learn to use ground planes correctly for both preventing traces from becoming antennas (they do!) and as a way to dissipate heat when needed. Watch video tutorials showing how to design boards from scratch. There’s so many thing that experienced designers know, but only will share as they stumble upon it while designing.
Always read the last pages of datasheets where they suggest PCB copper layouts for that specific chip. These will usually also suggest clever placement and sizing of passives like capacitors and resistors.
The FR4 glass fiber that PCBs typically are made from are really sharp. You don’t need to make many PCBs to understand how clever this is, but you are likely to make sharp corners until the first time you cut your finger or the pocket in your backpack where you put the boards to transport them.
Always add mounting holes
You may not need them initially, but there is seldom any cost to adding them. Use 3mm holes since Nylon studs are easily available for this. Buy the big kit of nylon M3’s, not just a small one. Having these holes on the board makes fixing the board or fixing things to the board so much easier.
Always add a button and a LED
If you use a microcontroller, just do this. You don’t need to populate these on the board as long as you added the footprints, but if something does not work as expected these makes debugging so much easier. Most projects will need a status led or button input at some time, so it’s just nice to have it on the board.
Always trust the DRC
This feature in any EDA program will tell you the obvious errors in your design. I have never seen it report something incorrectly so I don’t ever doubt what it says. If there is an error or unconnected component and it’s hard to spot the location on the board, remember that it may be at both ends of that wire. Hunt the error down and never ignore these warnings.
Also - never submit a board without running the Design Rule Check (DRC) before exporting the files. I once managed to send a board off for fabrication without any GND and 5V. If I only used the DRC one last time before submitting, I would have saved both time and money.
Always add test points
If the Microcontroller on your board comes in a small package, it’s critical that you add test points. I always add several of these for anything I may want to measure such as analog signals, sensors and voltage. It’s so easy to remove them from a design, but it’s a massive time saver to just solder up a wire when you need to test something more than once.
One of the core things you do when creating PCBs is reading datasheets. Here’s a few things I wish that someone told me with regards to just that.
See a line above or below the RESET pin? It tells how you should tie a pin by default. This is also called Active High. There is also Active Low, but that’s less common.
In datasheets you’ll often see a resistor marked as RL (lower pos L) and it’s never documented what this means. I guess the reason it’s not explained is that anyone with an electronics background will learn this at school? RL stands for Resistive Load and it’s just there to explain that it represents your Load (what you’re driving with your circuit). This can be a LED, motor, microcontroller or whatever, but RL is just something you’re expected to know.
What the HEX?
Why do all datasheets obsess with these Hex numbers? Why can’t they just use normal numbers? It’s a matter of convenience and they’re only there because they are easier to use than base-10. It’s just not obvious until someone points it out.
A microcontroller is either 8 bit, 16bit or something more. That’s a bunch of one’s and zeros? To set bit 1 of an empty byte (b00000000), you just add 0x1 (b00000001). To set the second bit you add 0x2 and so on: 0x4, 0x8… But notice what happens for the upper 4 bits. You add 0x10, 0x20, 0x40 and 0x80. You can see a practical example in the ADS124S08 class I’ve published. You can set Bit 6 with 0x20 and bit 7 with 0x40 -> set both by adding them. Very clever when you see how it works out!
What EDA software should you use?
Hard one to answer but I get the question often, so I add my thoughts here. When you’re just starting out, it’s easiest to use a tool that you know someone using already. That way you have someone to ask as you progress beyond what you can learn from Youtube. If you don’t know anyone, just drop by your local Hackerspace or check out the tons of tutorials available on Youtube. Popular choices are KiCad, EasyEDA, Eagle and Fritzing. Fritzing is the ideal choice for beginners, but it’s unfortunately it is no longer actively maintained.
I primarily use KiCad and it’s become a really good tool. I often find Open Source software to be either command-line based (and good) or half-working with a half-baked UI. KiCad is both well working and has a good UI. This is thanks to CERN supporting the software and making it their tool of choice. If it’s good enough for CERN, it’s more than good enough for me. KiCad is better than the former versions of Eagle that I have used (more intuitive), but the Fusion360 integration tempts a bit, so I’ll likely poke into Eagle in 2019 to test it out.
Expect this article to be expanded over time. Got more good advice? Post it in the comments below!