It’s been a while since I’ve done any posting to my blog. Mostly because what I’ve been working on I haven’t really been comfortable releasing to the public, so I just keep things hush hush for now. Maybe in a month or two that will change, but for now this will have to do.

In an effort to expand my horizons, I’ve been dabbling with a microcontrollers a lot lately. I’ve messed around with them a little bit in school, and a bit more at work, but overall nothing extensive enough to really allow me to say “I know MCU stuff really well.”

With MCUs, it’s important to plan things out, because unlike a regular basic circuit you can’t just build it up, power it, and let it run to your heart’s content. With an MCU, you have to figure out not only how you’re going to hook it to the rest of the circuit, but also how in the hell you’re going to get your program onto it.  Seems simple, but what happens when you want to do multiple? What happens when you want to streamline your circuit into SMD components? And what happens when you can’t actually test out your MCU on it’s own in a proto board because it’s using something like USB and requires external circuitry to drive/function?

All these things need to be considered, and also the immediate answer is to simply create a test station, or test fixture.

Starting out, with only 1 or 2 chips, and the simplest of schemes you may end up just doing something like this, and then just plugging it into your proto circuit:

It’s quick, dirty, but ultimately very inefficient at larger scale. It also won’t really work if you’re using something that’s surface mount. Luckily, when you use SMD chips there’s generally some sort of adapter to help you out with this, something like this:

Again, that will only get you so far, since it will help you easily program them, but what about making sure it’s functional in the circuit as intended? The best way to go about things, since you’re going to need to test out your final circuit anyhow, is to build a station of sorts for any sort of testing and possibly updating of the firmware that’s been initially programmed.

In my case, I’ve got a few requirements

1. Fast, eventually I’m going to do a bunch over a span of time, I’d like that to be short as possible.

2. Firmware updates, my project updates it’s firmware through the USB lines, so accessing those is the best way to do this.

3. Switchable, both for power and for testing/updates. You NEVER should plug any sort of PCB into a hot station if it’s avoidable at all. That can (and absolutely will) lead to accidentally putting power somewhere you don’t want it.

4. Modular, I’d like to incorporate a USB jack instead of just soldering a USB cable, since I’d like to be able to conserve space if I can. This also allows me to swap cables really easy if by chance my cat uses it as a chew toy.

With those points in mind, I started off on the project. It’s pretty straight forward, I basically took a proto-board that’s designed for SMD components, and dremeled off the entire top layer so that it’s only the FR4 that’s left.  Once that was done I got a general idea of how to place things, and decided to use none other than pogo-pins to make contact with my board. After measuring stuff, drilling some holes, and a bit of grinding I ended up with this guy:

I already had the drill bits for everything so getting the correct hole size wasn’t terribly hard. As you can see, I’ve incorporated a USB jack, and 2 switches. The bottom left switch controls the grounding of the pogo that’s closest to the camera, allowing for FW updates, and the left switch simply controls the power. Ignore that second unpopulated pogo, I decided not to use that spot but just in case I change my mind I kept it in place.

One thing I noted with these little Radio Shack switches is that they can be really finicky. What I mean is that I found out in one of the switches… pushing the switch all the way to one side would actually not connect the 2 lines as it was supposed to until you scootched it back toward the center a tad. I had about 30 minutes of head scratching on that one. The easy fix was to move the wire to the other side of the throw, which wasn’t as picky and worked great.

Oh, and one more thing. If you plan on grinding out a large space for something like those switches, don’t try to just drill a single hole in the center and grind outward. It seems like a “duh” concept, but instead use a smaller drill bit and bore holes to outline what you want to cut out, that way you don’t have to grind as much material, just the pieces in between the holes.

Let’s check the underside of this guy, I’ll show you the mess that I made trying to align the pogos here and there while trying to keep the wire from coming unsoldered >.<

You’re looking at that correctly, it’s a solid plane. So precautions had to be taken, and once I got my holes drilled I proceeded to dremel in between all the spots so that nothing was shorted together. The plane then becomes one big ass ground, which is useful in some regards but still makes soldering to the ground spots a bit difficult as it just becomes one big heat sink.

PROTIP: In the picture you’ll see that I don’t have any sort of nuts/washers on the #4 screws used as standoffs. I use a bit of a trick that I picked up doing arcade stick mods. With a #4 screw, you can drill with a 3/32 drill bit, and it will leave a hole that is picture perfect for the threads of the screw to catch and thread itself into the material and is secure enough to mount PCBs and other things into certain softer mediums (plastic and FR4 for example). This allows you to not have to utilize any nuts (unless you plan on having heavy strain, which I don’t since the board is really light).

It seems like a lot of work for something like programming your MCU’s, but in the long run it saves you time and hassle. They use things like this in the industry quite often, and since my first product could be argued that it’s kind of a test fixture of it’s own I’ve gotten quite good at mocking them up. This one was just easier to create since accuracy didn’t matter as much as I’m the only person using it 🙂