How important is a ground pour, or am I asking the right question?

I have some circuit boards laid out and the prototype works. The logic board is an ATMega328 with support chips, driving a 24x16 LED matrix with 3 TLC5916s controlling the columns and 2 74ac138s controlling the rows via MOSFETs.

The LED rows are switched at 50 Khz (for 32 levels of PWM) and I don’t observe any problems with wireless mice, WiFi devices, cell phones, or FM radios near the unit, but I can definitely hear interference on an AM radio if it’s less than 1 foot away.

I’ve been reading and it looks like I can reduce interference by adding a ground plane or pour. I can’t get a ground pour working on either the top or bottom of the board; no matter what I do the autorouter just complains that the polygon fell apart. I can get it to work by making a separate plane, but that would make the design a lot more expensive because I’d have to go to 4 layer boards.

I do have a free pin on the 2x3 headers that connect the logic board to each LED board (currently 3 go to the 3 columns, 2 go to 2 rows, and 1 is unused). Would connecting the unused pin to ground and adding a ground pour to the the LED boards help?

Or is this even something I need to worry about? I would like to eventually sell these…

Thanks as always!

I add top & bottom layer polygons, name them GND. Areas with missing fill on the top or bottom can be backfilled by adding a Via and naming it GND as well.
Do Rats Nest after each change, see what fills in.
Can often just tweak trace placement as well, let the ground plane go between two traces where it might have been too tight to start.
Sometimes there are just too many traces or components, and there's nothing you can do.

Sorry, i should have mentioned -- If I add the polygon on either the top or the bottom in addition to the polygon falling apart the autorouter can't complete laying out the traces. I always end up with 3 or 4 unroutable nets, no matter how I lay the components out.

Thanks for the via idea though, it will come in handy on another project I'm working on.

First, don’t rely on an Auto router. They are nice for repetitive signals, but they really aren’t very smart. Route critical paths first and then run an auto router.

Eagle’s “Follow-Me” route tool works well too.

Also, you don’t necessarily need the entire board to be a ground pour. Around your TLCs with multiple ground connections might work just fine.

Also specifying allowing unconnected copper will allow a more complete zone fill.

A couple of observations...

For one, you appear to be using the Eagle(?) autorouter. As others have suggested, the autorouter usually doesn't do very well (and the one in Eagle has not impressed me). For component layouts (to gauge how efficient a layout is) I have had great luck with the project. Frequently, designs with few tweaks can be adopted and integration is pretty simple for Eagle users (i.e. run a DSN, route, then run a script to lay the board out). Just remember to define your polygons up front (i.e. not only draw the polygon, but name it GND as well) and then to connect polygons that have fallen apart after the fact.

Ground planes (and positive rail grids) can simplify layouts significantly since one connection is always taken care of. The key is to review carefully what the optimum connection pattern is (and the auto-router may or may not discover that) and then to replicate it for assemblies like yours. Last but not least, another option for a power hungry board is to have a positive polygon on one side and a negative one on the other side. Then use Eagle to determine what polygons still need connections, etc.

As CrossRoads mentioned, using vias to connect polygons is the way to go. See how small you can go (your PCB factory should be able to tell you) in order to maximize the effectiveness of your vias. Laen's dorkbot PDX service allows 15 mil drills, while iteadstudio goes as low as 12 mils, for example.

Also specifying allowing unconnected copper will allow a more complete zone fill.

Do you mean turn on Orphans in the properties of the polygon?

Back to the original question its important that every signal trace has a nearby return current path (typically GND or supply) so its not an antenna and has low inductance. The easiest way to ensure this is to make ground into as best a plane (or grid) as you can. Another way is to run ground lines horizontally, Vdd lines vertically and tie them together with a decoupling capacitor at every intersection - the combination of both power rails is then a single grid (at high frequencies).

With 4 or 6 layer boards you can run both power rails as planes which makes things simple.

Thank you everybody for your advice. I’ve spent the last few hours trying to manually route everything with a ground pour on the bottom but still can’t come up with a fully routed board that doesn’t look as bad or worse than what the autorouter does.

I found another site that suggested adding the ground pour after the autorouter. I tried that, along with ajofscott’s advice of enabling orphans, and it worked out pretty well (see attached). I still have to follow CrossRoads’s advice of adding via’s between the broken polygon segments, but that will have to wait until tomorrow…

@James C4S - “follow me” is now my new favorite function. Thanks!

@MarkT - thanks for the explanation. Now I know why it’s important.

I’ve attached a couple of pics of the prototype in case anybody’s curious. It’s basically an Arduino with a 24x16 LED grid, high-precision DS3231 real time clock (with battery backup), five buttons on a resistor ladder on an analog pin, one button on D3 (for hardware interrupt), phototransistor light sensor, mini USB connection, and header pad on bottom that brings out pins for ICSP and expansion (4 analog ports and 2 digital ports).

I have a working library with graphics primitives (pixel, line, circle), a bunch of animation routines, and have one 5x7 (two line) and three 8x16 (one line) fonts done, but still have a massive amount of work to do before it’s consumer-ready.

My original plan was to sell it as a boutique art piece on something like Etsy, e.g. one with pink LEDs and a white box with a preprogrammed message that says “congratulations on your baby girl”, but now I think it might also have a home in the Arduino community.

Are there people here who want something like this prebuilt, so they can focus on programming and not have to take the time to work through prototyping breadboards, thermal dissipation, decoupling, transistor gain, questionable Instructibles articles, etc.? If so, maybe this is for you.

I hope to have the first batch done by mid to late February; I’ll make some videos etc. and announce it when it’s ready but please feel free to contact me if you have any questions etc.

Thanks again everybody,


[edit - attachments were wrong…]

Looks awesome.

But if you want to consider going down this path of creating bigger and bigger pour areas, did you consider putting the driver chips on each of the vertical "legs"? That could save you space on the main PCB without increasing cost significantly. Another option is to find a vendor for flexible PCBs... the only downside being that flexible PCBs are even worse than FRP re: heat dissipation. Though given your application, you probably would be OK. You've probably thought of all this already, I was just thinking aloud.

Congrats again on a neat project.

Hi Constantin,

I thought about moving the driver chips to the vertical legs, but not matter how I looked at it it just complicated the design. I actually started out thinking I’d use a flex PCB for the LED cylinder, but gave up partially because of design (hard to make it not deform from a cylinder to a teardrop without a lot of extra / empty board for overlap) and cost (the cheapest flex solution I could find was about 5x the octagon of rigid boards).