Difference between revisions of "PG31 GPS USB Dev Board"

From OpenCircuits
Jump to navigation Jump to search
 
Line 17: Line 17:
 
[[Image:PG31-USB-Connection.jpg|PG31 USB Connection]]
 
[[Image:PG31-USB-Connection.jpg|PG31 USB Connection]]
  
Please note this is a relatively compact SMD version of the power supply. This can easily be obtained with through-hole components using a breadboard. Here is the schematic:
+
The USB connector has four pins : Vcc (*around* 5V), GND, D+, D-. Tying these four connections to the CP2102 is easy enough.
  
 
[[Image:PG31-USB-Connection-Schematic.jpg]]
 
[[Image:PG31-USB-Connection-Schematic.jpg]]
  
Now let's discuss what's going on here. The barrel jack (J1) is a basic 5.5mm OD 2.1mm ID type jack. We get an unregulated 9-13V out of the wall wart.  
+
There are a couple things to note. In this setup, we do not have any ESD protection or surge supression. We are quite possibly violating some USB standards. But does it work? Yep.
  
The D3 large diode MBRA140 is for reverse protection. It can handle up to 1A and prevents damage to the board if a center-negative wallwart is attached. This diode will cause a ~0.5V drop from whatever the wall-wart is outputting.
+
When you configure the CP2102 this way, it can source up to 100mA at 3.3V using its internal voltage regulator. This is perfect for our application as the PG31 needs ~40mA at 3.3V.  
  
C2 ([[10uF Tantalum Capacitor]] in this case) is a basic decoupling cap. 10-100uF is adequate but should be rated for 15-25V.
+
Note the TX pin on the CP2102 is an output and needs to be connected to the RX pin on the PG31. This screwed me up a few times.  
  
U1 is the LM317 (or LM1117 in SMD form) adjustable voltage regulator. It will take in some larger voltage and output a set voltage. The output voltage is set with two external resistors. R1 is historically 240 and value for R2 is different for different required output voltages. In our case, we want 3.3V out of the regulator, so R2 is set to 715. The LM317 is good because it is variable, the SOT-223 package is nice becuase it can take a relatively large voltage on the input (25V max I believe?) and has decent heat dissapation.
+
The CP2102 has built-in cystal and eeprom. These means you need very few external components to get it working. You can even program in your own ID string so when you plug it onto your computer, it comes up with the name of your widget!
  
C1 and C3 are decoupling caps that help clean up the output transcients and noise.  
+
When the CP210x is attached to a computer (and it's soldered correctly) you will see windows hardware wizard request drivers. These drivers can be downloaded from SI Labs. You can also create ''your own signature drivers'' using some SI Labs software.  
  
J2 is just a two pin polarized header so that you can either 'steal' 3.3V from the board to power other boards, or have other boards power this board without the need for the external wall wart.
+
You can also program the internal EEPROM to reflect your own product ID and serial strings. This software is from SI Labs as well but I forget were - when someone finds it, post it here.
  
----
+
Once the drivers are installed, the CP210x will turn into a serial com port! Yes! It's weird to think about until you see it happen. So this USB dev board now acts like a com port on my computer. All I have to do is pass characters in and out COM 5 (for example) and I can do things over USB! No messy drivers, no protocols to think about, it's all done in the IC. All right!
===RS232 Interface===
 
So we've got a nice clean output of 3.3V from the regulator, let's look at the RS232 connection:
 
  
[[Image:PG31-SerialConnection.jpg|PG31 Serial Connection]]
+
One thing to note when you are using the CP210x ICs, the Linux community may scoff. SI Labs did a great job with the windows support, but a piss-poor job of opening the drivers for the open-source community. I'm not really a Linux person so it didn't effect me. But if your app needs linux connectivity, you may want to take a quick look for other potential ICs. Last I heard, there was good Linux support for the CP2102, but there was nothing for the CP2103 GPIO control...
  
This shows the DB9 connector (also known as a D-Sub 9-pin connector), serial cable, and MAX3232 IC and charge pump caps (all SMD, again, can be done with PTH components). Here is the schematic:
+
One last con : The ICs come in QFN leadless package only. YES it can be soldered by hand, but you'll need some experience and/or some good hot-air soldering tools. I taught myself how to rework stuff using this IC. You really can't destroy it, but you can certainly delaminate (kill) the PCB if you heat it for excessive amounts of time. Don't 'not' create a PCB or a design because of silly SMD parts. They're not that hard to solder!
  
[[Image:PG31-SerialConnection-Schematic.jpg]]
+
----
 
+
===Battery Backup===
Now read-up on the MAX232 IC. It could be the most common IC out there, at least for the embdded world. This IC will have many different model names (ICL232 for example) but all do the same thing, and will most likely have identical pin-outs. This IC is used to take low voltage signals from your micro or PIC or ARM or whatever, and converts those low-voltage signals to higher-voltage signals that the computer can understand. The voltage levels on TTL are also inverted for RS232 so the MAX232 takes care of that as well!
 
 
 
The MAX232 takes in TTL signals and sends out RS232 signals. It also takes the RS232 signals from the computer and outputs TTL signals to whatever microcontroller you are using. How does it do this magic? With charge pump capacitors. You'll notice four 0.1uF caps attached to the MAX3232. If you're reading closely, you'll also notice we have a MAX3232 not the MAX232. Difference:
 
*MAX232 must be powered with 5V and converts 5V TTL<->RS232
 
*MAX3232 can be powered from 3V to 5V and converts it to RS232
 
 
 
So in this application, the GPS unit is running at 3.3V. If we were to send 5V TTL to it, it would be damaged! So we must use the lower voltage MAX3232 part. No big deal, it's functionally identical to the MAX232. From here on out, I will only refer to the MAX232.
 
 
 
When you first view the MAX232 component, it can be a bit confusing. The pins label T1/T2 are the transmit channels (MAX232 has 2 TX channels and 2 RX channels). T1In/T2In will take *in* TTL and send *out* RS232 out T1Out/T2Out. So for our purposes, we need to connect the GPS unit's serial TX pin to the T1In pin of the MAX232. So when the GPS unit outputs some 3.3V TTL signals, these signals will be converted into RS232 and sent to the computer (TX1Out is connected to pin 2 on the DB9 connector).
 
  
Finally, when the computer needs to send info to the GPS unit, it will send RS232 signals down the serial cable, on pin 3 of the serial cable/DB9 connector to R1In of the MAX232. This RS232 signal will be converter to TTL and sent out the R1Out pin. This TTL signal is connected to the RX pin on the GPS unit. Viola.
+
[[Image:12mm-Holder.jpg|12mm coin cell holder]]
  
I can't tell you how many times I've crossed TX and RX on different projects. Sit down, think about it, and once you've got it wired correctly, cut and paste into future projects.
+
If you're playing with GPS, you've ''got to have a battery backup''. The 12mm coin cell lithium allows the PG31 (and many other GPS receivers) to retain the alamanac data. This small battery provides just enough juice for 3-5 years. By having alamanac data at power on, the GPS receiver will be able to do a warm lock instead of a cold lock. Cold locks take 1-2 minutes, warm locks, as little as 30 seconds. The alamanac data, in effect, allows the GPS receiver to 'guess' where it is in the world ("Last time I was on I was in Ohio, therefor, I will assume I'm near there").
  
 
----
 
----
Line 65: Line 54:
 
----
 
----
 
===Final Layout===
 
===Final Layout===
[[Image:PG31-Layout.jpg|300px]]
+
[[Image:PG31-USB-Layout.jpg|300px]]
  
You can see the PCB layout is pretty straight forward. The 'solder jumpers' are a feature that SFE came up with to minimize our manufacturing time while allowing end users to populate the physical jumpers if they needed the ability to connect/disconnect a feature often and quickly. Most users just plug the PG31 onto their computer for quick evaluation. At some point, the MAX232 may need to be disconnected from the circuit so that an external micro or embedded system could be attached. If this is done back and forth often, the end user can clear the solder jumper with a swipe of the soldering iron, install a 2-pin header and a black plastic jumper. This now allows them to jumper/dejumper quickly and keeps us from having to solder the 2-pin headers into a board that may not need them.
+
You can see the PCB layout is pretty straight forward. The 'solder jumpers' are a feature that SFE came up with to minimize our manufacturing time while allowing end users to populate the physical jumpers if they needed the ability to connect/disconnect a feature often and quickly. Most users just plug the PG31 onto their computer for quick evaluation. At some point, the CP2102 IC may need to be disconnected from the circuit so that an external micro or embedded system could be attached. If this is done back and forth often, the end user can clear the solder jumper with a swipe of the soldering iron, install a 2-pin header and a black plastic jumper. This now allows them to jumper/dejumper quickly and keeps us from having to solder the 2-pin headers into a board that may not need them.
  
 
----
 
----
Line 74: Line 63:
 
So that's pretty much it. The board works well, and assuming Laipac doesn't change their parts again, we will produce the board for some time.
 
So that's pretty much it. The board works well, and assuming Laipac doesn't change their parts again, we will produce the board for some time.
  
 +
We may consider migrating to a different USB IC someday but the CP2102 continues to be a really simple to use USB to UART IC.
 
----
 
----
 
===Documents===
 
===Documents===
[[Media:PG31-RS232 Schematic.pdf|PG31-RS232 Schematic]]
+
[[Media:PG31 USB Schematic.pdf|PG31 USB Schematic]]
  
[[Media:PG31 RS232 Carrier - Protel.zip|PG31-RS232 Protel File]]
+
[[Media:PG31 USB Carrier - Protel.zip|PG31-USB Protel File]]
  
[[Media:PG31 RS232 Carrier - Gerbers.zip|PG31-RS232 Gerber Files]]
+
[[Media:PG31 USB Carrier - Gerbers.zip|PG31-USB Gerber Files]]
  
 
<b>Footprints:</b><br>
 
<b>Footprints:</b><br>
Line 88: Line 78:
  
 
<b>Supplier Info:</b><br>
 
<b>Supplier Info:</b><br>
Spark Fun Electronics part # : Eval-PG31-RS232<br>
+
Spark Fun Electronics part # : Eval-PG31-USB<br>
 
Single Piece Price : $29.95
 
Single Piece Price : $29.95
  
 
<b>Related Items:</b><br>
 
<b>Related Items:</b><br>

Revision as of 16:12, 31 January 2006

PG31 USB Dev Board

Description:
You've probably heard about the CP210x USB ICs from Silicon Labs, now here's an application that uses it. The CP2102 gives us 3V TTL to a VCP (virtual comm port) over USB as well as generating the 3.3V needed for the board.

In this project we demonstrate how to:

  • Setup a USB to Serial link
  • Use the CP2102 for 3.3V
  • Use a SMD 12mm battery holder

USB Connection

The CP2102 USB IC is fairly easy to use once you've plugged it down a couple times.

PG31 USB Connection

The USB connector has four pins : Vcc (*around* 5V), GND, D+, D-. Tying these four connections to the CP2102 is easy enough.

PG31-USB-Connection-Schematic.jpg

There are a couple things to note. In this setup, we do not have any ESD protection or surge supression. We are quite possibly violating some USB standards. But does it work? Yep.

When you configure the CP2102 this way, it can source up to 100mA at 3.3V using its internal voltage regulator. This is perfect for our application as the PG31 needs ~40mA at 3.3V.

Note the TX pin on the CP2102 is an output and needs to be connected to the RX pin on the PG31. This screwed me up a few times.

The CP2102 has built-in cystal and eeprom. These means you need very few external components to get it working. You can even program in your own ID string so when you plug it onto your computer, it comes up with the name of your widget!

When the CP210x is attached to a computer (and it's soldered correctly) you will see windows hardware wizard request drivers. These drivers can be downloaded from SI Labs. You can also create your own signature drivers using some SI Labs software.

You can also program the internal EEPROM to reflect your own product ID and serial strings. This software is from SI Labs as well but I forget were - when someone finds it, post it here.

Once the drivers are installed, the CP210x will turn into a serial com port! Yes! It's weird to think about until you see it happen. So this USB dev board now acts like a com port on my computer. All I have to do is pass characters in and out COM 5 (for example) and I can do things over USB! No messy drivers, no protocols to think about, it's all done in the IC. All right!

One thing to note when you are using the CP210x ICs, the Linux community may scoff. SI Labs did a great job with the windows support, but a piss-poor job of opening the drivers for the open-source community. I'm not really a Linux person so it didn't effect me. But if your app needs linux connectivity, you may want to take a quick look for other potential ICs. Last I heard, there was good Linux support for the CP2102, but there was nothing for the CP2103 GPIO control...

One last con : The ICs come in QFN leadless package only. YES it can be soldered by hand, but you'll need some experience and/or some good hot-air soldering tools. I taught myself how to rework stuff using this IC. You really can't destroy it, but you can certainly delaminate (kill) the PCB if you heat it for excessive amounts of time. Don't 'not' create a PCB or a design because of silly SMD parts. They're not that hard to solder!


Battery Backup

12mm coin cell holder

If you're playing with GPS, you've got to have a battery backup. The 12mm coin cell lithium allows the PG31 (and many other GPS receivers) to retain the alamanac data. This small battery provides just enough juice for 3-5 years. By having alamanac data at power on, the GPS receiver will be able to do a warm lock instead of a cold lock. Cold locks take 1-2 minutes, warm locks, as little as 30 seconds. The alamanac data, in effect, allows the GPS receiver to 'guess' where it is in the world ("Last time I was on I was in Ohio, therefor, I will assume I'm near there").


PG31 Footprint

PG31-Footprint.jpg

Now about the footprint for the PG31. Unless the manufacturer hands you a foorprint file or a simple, recommended FP in the datasheet, you're going to have to go it on your own. We took the PG31 and a pair of calipers and went at it. It can be extremely difficult the first time. This PG31 FP took me twice to get correct. Do the best you can and try to account for things like the antenna connector. The second rev FP, I forgot to account for the MMCX connector, I put the DB9 connector right up against the PG31, and Viola - useless PCB! a.k.a another coaster for my coffee cup. But once you've got the FP, you're good for all future projects using that device. Now you know when engs hate to change parts...


Final Layout

PG31-USB-Layout.jpg

You can see the PCB layout is pretty straight forward. The 'solder jumpers' are a feature that SFE came up with to minimize our manufacturing time while allowing end users to populate the physical jumpers if they needed the ability to connect/disconnect a feature often and quickly. Most users just plug the PG31 onto their computer for quick evaluation. At some point, the CP2102 IC may need to be disconnected from the circuit so that an external micro or embedded system could be attached. If this is done back and forth often, the end user can clear the solder jumper with a swipe of the soldering iron, install a 2-pin header and a black plastic jumper. This now allows them to jumper/dejumper quickly and keeps us from having to solder the 2-pin headers into a board that may not need them.


Things to Improve

So that's pretty much it. The board works well, and assuming Laipac doesn't change their parts again, we will produce the board for some time.

We may consider migrating to a different USB IC someday but the CP2102 continues to be a really simple to use USB to UART IC.


Documents

PG31 USB Schematic

PG31-USB Protel File

PG31-USB Gerber Files

Footprints:
SFE Footprint Library

FP Name: PG31

Supplier Info:
Spark Fun Electronics part # : Eval-PG31-USB
Single Piece Price : $29.95

Related Items: