Basic Layout — Aligning Components

Not long ago, I designed an Arduino compatible clock board. The board has 12 NeoPixel (digital addressed RGB LEDs) arranged around the board to act as hour hands. The minutes and seconds are represented by an external ring of 60 NeoPixels.











How did I go about positioning the 12 NeoPixels, and what does it matter? For aesthetic reasons, I do want each NeoPixel in the proper place. If any are off a bit, I’ll notice every time I look at the clock.

I created a triangle, with all of the correct distances, and drew in in my CAD software’s Document layer. The Document layer looks just like a silk screen layer, when visible, but it won’t be printed on the board. You can use this layer to put in extra information for yourself, or for the manufacturer.











You’ll notice that I also wrote in the document layer “No tabs here.” That’s an instruction to the board fabricator to not put a panel tab where the micro USB connector goes. If it did, the board wouldn’t be buildable when panelized.

Some create a fabrication document layer and an assembly document layer. An example might pertain to reference designators. If the board is too compact for reference designators, of if, for aesthetic reasons, you want to leave them off the finished board, You can put the reference designators in an Assembly Documentation layer. Then be sure to let your assembler know what you’ve done.

The other things I did here is to keep all the LEDs aligned with the baseline of the PCB. In theory, you can place a component at any rotation angle you want. But, like any system, manufacturing works better when there are fewer variables.

You reduce the probability of error if you keep components aligned at factors of 90 degrees. It also helps to keep polarities oriented the same way, as much as possible. For example, if you can, have all the diode polarities facing the same direction.

Duane Benson
Time flies like an arrow; fruit flies like a banana

Do You Need that Part, or is It Just Habit?

At the moment, I’m working on an Arduino compatible clock. Like most of my Arduino compatible boards, this one uses an Atmega32U4, with USB built in. With the Atmega32U4, I sacrifice a little in program memory and SRAM, but gain a bit in reduced parts count.

A USB capable Arduino-compatible is, of course, programmed via USB, and can be powered by the USB port. Most Arduino boards also have a 5V regulator to be used when being powered by a wall-bug power supply. Naturally, I put the USB connector on the clock board, as well as the 5V regulator. With the two different supplies, I also put in circuitry to auto switch sources and protect the USB host when both supplies are connected at the same time.

My first PCB revision required6a00d8341c008a53ef01b8d0aae30b970c-800wi a few hand-mods, but not many. Still, I decided to respin the board and remove the two mod wires. While doing so, it suddenly occurred to me — a blinding flash of the obvious — that most cellphones and other small devices are charged with a USB-connector 5V wall-bug power supply. Why then, would I also need a separate power supply and on-board 5V regulator?

By pulling the regulator off of the board, I could eliminate a few capacitors and the supply auto-select / protection circuitry. Not only did I save in component cost, but I was able to reduce the PCB size, and thus cost, by about a third.

  1. I had the 5V regulator in the design because Arduinos can be powered by either USB or a non-regulated power supply.
  2. The reverse power protection is necessary to prevent damage to the USB host if the other power is also connected.
  3. The auto-power switching circuit is necessary so that a user doesn’t need to flip a switch or change a jumper when changing power sources.
  4. I had two extra LEDs to indicate which supply was powering the clock.

I questioned my original assumptions, found a “because it’s always done that way” and eliminated it. Assumptions are meant to be challenged.

Duane Benson
Question authority!
And then get squashed
(or, squash extra space out of your PCB)

VTP: Very Tiny Parts

A while back, I wrote about a new ARM Cortex M0+ chip from Freescale. It’s not the first M0+, but I do believe that it’s the smallest. I’ve been checking stock off and on and finally found the smallest package to be in stock and available to ship. 

I actually bought a couple of different types. First, there’s the WLCSP 20. It’s got 32K Flash, 2K SRAM and an 8K bootloader. The real kicker is that the package is only 1.6 X 2.0 mm. I also got a few in the QFM-16 package, which is a bit more workable at 3 X 3mm.

Finally, I bought a Freedom development board with the 4 X 4mm QFN-24 package. The dev board is hardware compatible with Arduino shields, so that will make for some interesting possibilities.

Anyway, here at Screaming Circuits, I’m most interested in that 1.6 X 2.0mm package to see how easy (or difficult) it is to use – see if there are any particular layout challenges. The other stuff is just for after hours play time.

Duane Benson
I’m not a number. I’m a free development board!
(Free, as in named “Free…”, not free as in “don’t cost nothin”)

Microcontroller in the Middle

I’ve written about Open Source hardware before, such as the Beagleboard and Arduino. Those are both great options for folks needing to get moving on embedded microcontroller development.

The Arduino is pretty low-end and the Beagleboard is pretty high-end. I think I’ve run across a good step right in the middle.

A while back at the ESC show, we spoke with a gentleman from ARM about a project that would include an online IDE, and now, here it is. It’s not exactly the same as open source, but it solves many of the same problems that open source solves. Mainly, it’s a quick and easy way to get up and running with an ARM processor. Well, it looks easy, anyway. I haven’t tried it yet. I think I’ll see if I can get one and give it a shot.

By the way, we did not build this board. We have built some Beagleboards, but not this particular product. It certainly wouldn’t be a problem for us, but that’s not why I’m writing about it. It just looks like a great halfway point between something like the Atmel-based Arduino (or the PIC microcontrollers that I use) and the Beagleboard that uses the super-speedy ARM Cortex-A8.

If I can run one down and find the time to fiddle with it, I’ll let you know what I think of it in actual use.

Duane Benson
Stay tuned. Bulletins as event warrant.
Maybe …