ARM Cortex-M3 Business Card

Backstory:

As I am getting close to graduating with a B.S.E. with an Electrical Concentration I have been thinking a lot lately about getting a job.  As I worked to fine tune my resume I started thinking about what I could do to set myself apart and showcase my talents at a career fair or during an interview. I decided that I wanted to make a business card that would be unique and memorable as well as be tangible proof of my talents.

I designed, prototyped, and produced my own business card with a ARM Cortex-M3 processor that acts as a Mass Storage Device in Windows (98 through 7), Linux (Kernels 2.4-3.0), and OSX (>10.4.2).

Requirements:

Primarily I wanted this device to:

  • Display my name
  • Display my major
  • Display my email address
  • Interface to a computer as a MSC Device
  • Contain my resume

These requirements really put into perspective what my purpose with this device was.  If I wanted to and had the time and money I probably could have figured out how to make the device smaller, do all sorts of other things, and hold vast amounts of information but really that was unnecessary for this project.

Software Design Phase:

I must admit, I cheated a little bit with the software. I ordered a LPC1343 dev board from Mouser  Electronics, then downloaded the NXP Mass Storage Device example. It was pretty short work to figure out where to include the code for driving the LEDs when the device was being written to or read from. After I had a working software build, I started working on the Hardware Design Phase.

Hardware Design Phase:

To keep the part count low, and to keep costs down, I looked up the olimex dev board schematic and started removing parts that were not needed for my business card. I ended up removing quite a few LEDs, the debug interface, and a push button switch that I deemed unnecessary. I used CADsoft’s Eagle to draw a schematic with just the parts I needed, and sent it off to a few friends to have it looked over.

Below is the final schematic:

PCB Layout:

While my friends were looking over the schematic (good thing, too, sinceI had missed VDD on pin 8! Thanks Trent!) I started working on board layout. I first had to find libraries and start choosing parts that would fit, be able to be soldered by hand, were in stock, and that proven library footprints were available for.  I created a Bill of Material from my schematic (see bottom of post for the excel document), found the parts in stock at mouser, and then grabbed data sheets and got the footprints drafted into Eagle. This is where the Sparkfun eagle library came in really handy, as it had most of the parts I wanted to use already available.

Below is the final board layout. I would like to state that future revisions of this board will have a more high frequency friendly layout to reduce noise and possible failure points.

Part Sourcing:

I ordered all of my parts from Mouser Electronics except for the PCBs, the USB-A headers, and some solder wick.  I ordered the USB-A headers and the solder wick from SparkFun Electronics to say thank you for the excellent Eagle Library.  I ordered the PCBs from Seeed Studio (which was very inexpensive, but took 4 weeks to come in the mail.)

Hardware Build Phase:

Upon receiving the PCBs (almost a month after ordering them) I took them out and continuity tested a few of them to make sure they were manufactured correctly. I discovered that quite a few vias had been masked over, but thankfully, all of the pads were ok. You will also notice that the font size I used for the part labels was entirely too small (even though it was 2 sizes larger than Seeed Studios recommended size).

I took a trip to the Letourneau University Microcomputer Design lab, and borrowed their reflow heat gun, and soldered on all of the LPC1342 microprocessors, and then took the boards home to solder the rest on with my Hakko FX-888 soldering iron. About 20 hours into the manufacturing processes I had finished all 10 boards. I took out my multimeter, and continuity tested (after reading the datasheet and ensuring this wouldn’t hurt the LPC1342 of course) all of the boards, fixed my mistakes and I was ready to move onto Flashing/Testing the boards.

Flashing/Testing:

Since I had used the dev board for my code development, I didn’t have much to do here. I rebuilt my code for the .bin file that the USB firmware loader built into the LPC1342 was expecting, plugged in the business card, copied over the firmware and hit reset. Everything worked the first time.

It is worth mentioning that once the board has been flashed, it cannot be reflashed through USB again.

Final Product:

Here are pictures of the business card after it was soldered up, and was being loaded with my resume for the up-coming career fairs and interviews.

Source Code, Board Files, and Other Downloadables:

I am releasing all of the code that I have written, and all of the designs I have done under GPLv2. Notice that some of the code (as it was written by various third parties) is not able to be licensed under GPLv2.

Also, I am not responsible for anything this code may do to you, for you, or if it burns your house down. Use at your own risk as there is no implied warranty.

LPC1342 Project

Eagle Schematic and Board Layout

Bill of Materials

Also, for any potential employers my resume can be found here in doc, pdf, and odt.

Function Generator

For electronics design lab, every student was tasked with designing and building their own function generator, capable of delivering 5 volts peak to peak sin, square, or triangle wave across a 600 Ohm load from 20 Hz to 20 kHz. I chose to use a XR2206 function generator IC, and a TL082 operational amplifier. Below is the circuit schematic and electrical data.

Specification: Value
Supply Voltage Maximum (Split Supply) +/- 13V
Supply Voltage Recommended (Split Supply) +/- 9V
Supply Voltage Minimum (Split Supply) +/- 5V
Maximum Output Voltage (open circuit) 15V peak to peak (at +/- 9V Supply)
Minimum Output Voltage 75mV peak to peak (at +/- 9V Supply)
Operating Frequency Range (Square) 600 mHz – 2.5 MHz
Operating Frequency Range (Sine) 600 mHz – 2.5 MHz
Operating Frequency Range (Triangle) 600 mHz – 1.0 MHz
Thermal Operating Range (ambient) 0 C – 70 C

Below is the schematic of the Function Generator board.

Pictures of the final product to be added at a later date.

Discrete Power Amplifier

For electronics design lab, every student was tasked with designing and building their own 10W power amplifier. The requirements for the amplifier were that it will drive an 8 Ohm load with constant gain across 500 Hz to 20  kHz. I chose to use a darlington pair (TIP102/TIP107) and a TL082 operational amplifier. Below is the circuit schematic and electrical data.

Specification: Value
Supply Voltage Maximum (Split Supply) +/- 18V
Supply Voltage Maximum (Differential) 30V
Supply Voltage Recommended (Split Supply) +/- 15V
Supply Voltage Minimum (Split Supply) +/- 5V
Maximum Output Power (on an 8 Ohm load) 11.2W
Maximum output voltage 27.2 V peak to peak (at +/- 15V Supply)
Minimum output voltage 1 V peak to peak (at +/- 15V Supply)
Operating Frequency Range (Square) 5 Hz – 60 kHz
Thermal Operating Range (ambient) - 10 C – 50 C

Below is the schematic of the 10 W power amplifier board.

Pictures of the final product to be added at a later date.

Variable DC Power Supply

This circuit uses a step-down transformer, full-wave rectifier, and a voltage regulator to deliver a variable DC voltage output. This power supply has a fuse holder, and comes with a 2 A fuse. The output has a 1M Ω discharge resistor (at 15V will completely discharge the circuit in 1 minute), which will discharge both the input and output capacitor banks. The 5k potentiometer can be used to set the power supply from 1.25V DC to 42V DC. The capacitor banks (input and output) provide very good ripple (5mV in most cases).

Specification: Value
Input Voltage Range 120Vrms +/- 15V
Output Voltage Range 1.25V to 42V DC
Ripple 15V @ 1.0 A ( 15 Ω resistive load) after 10 min 5mV (peak to peak)
Ripple 15V @ 1.5 A ( 10 Ω resistive load) after 5 min 5mV (peak to peak)
Ripple 15V @ 2.0 A ( 7.5 Ω resistive load) after 5 min 7mV (peak to peak)
Ripple 15V @ 2.5 A ( 6 Ω resistive load) after 5 min 30mV (peak to peak)
Rated Load @ 15V : > 6 Ω
Thermal Operating Range (ambient) 0 C – 50 C

Below is the schematic of the power supply.

Also, a photo of the internals:

Key: Common Component Name
1 Transformer
2 Heatsink for LM317
3 Output Capacitor Bank 3000µF
4 Input Capacitor Bank 4000µF
5 Resistor Matrix and Diode Rectifier
6 32 Vrms Transformer Output
7 120 Vrms Transformer Input and Fuse Holder

And finally, my BOM:

Part Quantity
Transformer 120Vrms 1
Terminal Block 2
Protoboard 3
65W CPU Heatsink 1
1000µF 50V Capacitor 7
5k Ω Potentiometer 1
240 Ω Resistor 1
1M Ω Resistor 1
LM317 1
10µF Capacitor 1
1N4001 1A Diode 4
Output Terminal Pair 1