I had this idea to make a very small development board for the Parallax Propeller for a while now. The idea is that you can have it on your keychain or something and just plug the entire unit into a USB port without the need of a cable or an external power source. The device is USB powered and there would be female headers that allow you to plug other things into it much like the Arduino Uno and Propeller Gadget Gangster boards. This is a continuation of my previously produced Prop Dev Board. Taking what I learned from that project and from using other development boards and micro controllers I designed the Propeller Development Stick or PDS for short.
When it came down to design choices, I chose a small USB based form factor as opposed to over incumbering the board with unneeded features. The form factor came from TI’s line of MSP430 development boards. This form factor encourages a quick idea to working prototype phase. The Propellers native SPIN language also encourages this. SPIN is a very easy to learn language (I mainly do C programming). The Propeller gives up interrupts for having multiple cores (cogs as they are called). All this makes getting a working prototype easy to do. Instead of having to mess around with the programming and debugging you can get past that quickly and on to the hardware interface. No one really cares that you have fancy code but if you can blink a LED people will go crazy.
The main goals to strive for was size and cost. Keeping these to a minimal took over as I was laying out the PCB. To keep the cost and size down I first made sure all parts where SMD. The only though-hole parts are the headers. I could have used SMD mounted headers but they actually have a wider footprint and are not as strong as the through-hole variant. Since this board would be carried in someones pocket I wanted to make sure that anything that hanged off the board was strong. This was also the reasoning in choosing female headers over male headers. Male headers have a tendency to bend and poke you when stored in a pocket.
Next was making sure all the parts where on one side of the board. PCB companies charge more per PCB when you have SMD parts on both sides of the board. This increased the footprint ever so slightly but not enough to change the cost of the board. Without realizing it this made the final product thinner as the overall height of the PDS is determined by the headers. No parts on the back decreased the thickness.
I wanted the headers to be in true 100mil layout so add-on boards (shields to Arduino people) could be made easily with perf board (unlike the Arduino). To facilitate add-on boards I added a 4-pin header for ground, 3.3V, and 5V connections. I wanted to add a 5V regulator to the board but did not have room for it. This would make it so the user could input +6V into the board which would be more convenient for breadboard use and battery powered applications. Size and form factor was the deciding factor here.
Parallax makes a QFN package which is there smallest variant of the Propeller. I chose the slightly larger QFP package just for ease of soldering. The FT232, which handles the USB to Propeller Communication, was a bit tiny on the pitch as it is a SSOP-28. With some solder wick it is not to bad. The FT232 was chosen as it is really simple to use USB to Serial UART chip and is used on the official Parallax Propeller boards so I would know it would work. An I2C compatible 64K EEPROM handles the program data and can be used as on board storage.
Check Page 5 and 6 for the schematic of the board. I didn’t really change how everything is hooked up. This was mainly an exercise in how small the PDS could be made.
Bill of Materials – Mouser Part Numbers
LED: 638-1921GHCYR1S23T :Green power LED
U4: 511-LD29150DT33R :3.3V LDO Voltage Regulator
C4: 810-C1608C0G1H220J :22pF Ceramic Cap
C1,C2,C3,C5: 810-C1608Y5V1E104Z :10uF Ceramic Cap
R1,R2: 652-CR0603-JW-103ELF :10K Resistor
R3: 652-CR0603-JW-472GLF :4.7K Resistor
U5: 512-MMBT2222A :NPN Transistor
J4: 517-974-01-04-RK :4-Pin Header
J2,J3: 517-929850-01-16-RA :16-Pin Header
U3: 579-24LC512-I/SM :64K EEPROM
J1: 538-48037-2200 :USB Male Plug
X1: 815-ABLS-5-B2 :5Mhz Crystal
U1: 619-P8X32A-Q44 :Parallax Propeller
U2: 895-FT232RL :FT232RL
All parts where chosen to make sure they would be around for awhile. Not much worse for a design then it using a part that goes obsolete. When designing a new project always try to use “commodity” parts. Using hard to find parts only increases cost and may hurt you in 1-2 years.
PDS V1.1 PCB File.
To get the prototypes made I decided to use Seeed Studios Fusion PCB service. For $13 (that is with shipping) you get 10 PCBs if they are under 5cm x 5cm in size. You can pay a bit more and make larger boards. I received 12 boards. This is probably due to the PCB Fab panelizing my design. My only real complaint about the system is it took a really long time for my PCBs to finally show up. I placed my order on August 28th and received the boards on September 21st. However, for the price it is impossible to beat.
Once I received the boards I checked them for quality and made sure all the traces where connected where they where supposed to go. One reason the Fusion PCB service is so inexpensive is there is only a 50% E-test done on the batch. Everything looked good so I soldered one together. This is the first time I did a 100% SMD board (sans headers) but the board worked first time. I was able to program the propeller straight from the Propeller Tool. The Serial Terminal test also worked the first time.
I am missing a 10uF ceramic cap and the LED. Seems I misplaced it while waiting for the PCBs to arrive.
So here is the fully working board plugged into my laptop. The overall size is only slightly larger then your normal USB thumb drive at 47mm x 28mm x 12mm (excluding the USB port). The only problem I have run into so far with V1.1 is that the power header is slightly off its spot. Looking at the PCB file it looks like it is just a tad bit off. This will be fixed in V1.2 before this goes into production.
Here is some analysis of the power lines and noise on the board. These measurements are taken with no load on the I/O besides what is built in on the board. Pins 29 and 28 run the EEPROM in I2C mode on boot to load the program into the Propeller.
With the Propeller doing nothing the board takes 7mA on the 5V line. Flipping all the ports as fast as the Propeller can do it at takes 20mA at 5V. Turning on all the cogs (8) and flipping the pins takes 94mA which is almost 1/5th the power budget of the USB spec (5V 500mA). This is roughly what the specification document says it should be. During these measurements the board was powered with a dedicated lab power supply.
Here is the worst case noise analysis of the board. This is when all cogs are on and flipping all the I/O on and off to surge the power lines. Power is from my laptop USB port.
The top line is the 5V line from the USB port. This is expected to be fairly clean. The scope showed that it was relatively flat with with very little peak to peak action. This shows my laptops 5V line is a relatively good power source for the PDS.
The bottom line is the 3.3V line that is produced from the regulator on the PDS. As you can tell it is not level and oscillates a bit. The peak to peak is at 1.44V which is a very dirty power line. To fix this I added a 1uF capacitor to the 3.3V line which generated the following power signals.
The 3.3V line now has a peak to peak of 160mV which is pretty good. I tried a 10uF capacitor to see if this could be improved but I received the same results. The PDS V1.2 will need to have a 1uF capacitor added to the board before production. This will be added via dead bug technique to the PDS V1.1 boards.