Controller Modifications

A project log for Unity Candle

Taking the idea of a unity candle to the next level

QuinnQuinn 05/13/2014 at 16:450 Comments

I probably could use the paddle board pretty much as is, and reprogramming the existing SC87C451 microcontroller. There look to be extra GPIO pins available that I could use for my other required inputs and outputs. That said, I don't have the tools(compiler or programmer) for doing it, and given my time constraints, am not particularly interested in re-inventing the wheel. I tend to be more of a hardware person than a software person, so anything that makes software easier, I usually go for.

In this case, I'll leave most of the original circuit intact, add a new microcontroller, and simply have it communicate via serial. Given my aforementioned preference for simplifying software, and desire for getting this done quickly, I'll go with the arduino environment and bootloader on an AVR. Digging through the available boards, I settled on an Arduino Micro, as it allows me to use it's hardware UART to connect to the SC87C451, while still leaving the USB port for development, or any other future purpose.

It occurs to me that this sort of controller may be useful in a lot of other situations than just this one, so I'll endeavor to include extra features and make things more flexible where it's reasonable.

The first modification to the original circuit board is to convert it to run on 12V. I wanted to do this because it is far more robust to feed a semi-unregulated 12V into this than a regulated 5V. Using a DPAK2 7805 linear has plenty of capacity to power both the original circuits as well as the micro. As mentioned before, There were already pads for a 7805, so I soldered one down(hot air rework to get a good thermal pad solder joint), and included a diode to prevent reverse voltage across the regulator(I know the datasheets say this is only required for higher voltage, but I've had these fail, and there were already pads to place it). I didn't have a surface mount one, so just used a leaded one, with the leads bent back and trimmed off as shown in the picture.

Next I moved to the rest of the case for adding the extras I needed. I decided to use add a circuit board to the inside of the back panel, with all top side connections. This paddle is rather thin, at only 3/4" thick, which means I need to be careful to get it to actually fit. I normally use through plated perf board for my circuits, but had a couple single sided perf boards sitting around I never used. Given that this is all top side work, I figured I could use one of those up. This sorta turned out to be a nuisance because it isn't an FR4 board, instead a phenolic board(FR2). I miss my FR4 already, but it's ok, and will work fine. I used a rotary tool(dremel) to cut out a piece that would fit in, and attached using the existing zip screws that held down the speaker on the back panel. I also cut out space to mount a couple lighted pushbuttons so that they could be flush with the back panel. These were mounted by soldering two of the leads directly to the PCB, and epoxy applied to the edges(after sanding the surfaces) to re-enforce. I cut notches in the sides of the case for the buttons. I think this mounting will be sufficiently mechanically strong to take a lot of hard presses without breaking loose because they are backed up by the PCB itself. These buttons will form the two buttons for arming and firing the system. I'll use the LEDs to indicate arming state.

Next came mounting for an additional connector to serve as the system inputs and outputs. I opted for a DB15 as it just fit in the bottom, and is relatively easy to get additional connectors for to be able to use the controller in other applications. I notched out the plastic with the rotary tool, and fastened it by drilling pilot holes, and taping them for 4-40. A standard set of screw/standoffs(not sure what these are actually called) was then threaded into the tapped holes to hold it in place, and allow the connecting cable to be screwed in if desired.

The last case modification comes from the opening for the Micro USB connection of the Arduino Micro. I opted to socket the micro. I did this by using single pin sockets, soldered to the PCB. This allows wiring to go underneath the Micro. A pin socket is what is used in the nicer IC sockets, just without any sort of plastic frame. They come on a metal mounting frame that is used to align and hold in place during soldering, then the mounting frame is removed. I ended up with a large stash of these(probably diving again) so use them frequently. They accept IC pins, not the larger header pins, so I used an Arduino Micro without headers, and soldered in short lengths of steel wire as pins.

The pin sockets in mounting frame:

In place, next to the Micro:

With the Micro mounted, I simply cut a notch in the case for the micro USB cable.

I mentioned that the paddle is pretty thin, so it was a tight fit to get things in there. Though I ordered the Micro without headers, it still comes with the ICSP header. Many people struggle with desoldering headers like this. I don't like solder wick on through plated holes as it never seems to get everything off. I frequently use hot air rework as my go-to desoldering, but given the small board, I opted to go with the more simple method. The plastic frame that holds a pin header together is not very high temperature. Because of this, if you don't need the header, you can actually just remove one pin at a time. Use an iron to heat up both ends of the pin for a while. Not only do you need to melt the solder in the hole, you want to partially melt the plastic frame. Using a pair of needle nose pliers, you can then simply pull the pin out of the hole and frame at the same time. When you remove the last pin, the remnants of the frame come with it. A good board stand helps with this.