GPS NMEA Information    
[
GPS Main Page |
Cable
Connection |
GPS-Protocol
| NMEA Info
]
Part of Magellan Information
The Trailblazer can be configured to emit one of three different
sets of sentences.
Set "A" is comprised of APA, GLL, BWC, VTG. Set "B"
is RMC and RMB. Set "C" is GLL, APB, GGA, VTG and BWC.
Those sentences are:
APA - Autopilot A Format. "Not recommended in new designs."
APB - Autopilot B Format.
BWC - Bearing and Distance to Waypoint
GGA - Global Positioning System Fix Data
GLL - Geographic Position in Latitude/Longitude
RMB - Recommended Minimum Navigation Information
RMC - Recommended Minimum Specific GPS Data
VTG - Track Made Good and Ground Speed
For my purposes, set C is going to be the preferred one. Set B (the
recommended minimums) is the NMEA's attempt to force a common ground
between different manufacturers, and has some useful information such as
both the origin and destination waypoints. But it is mutually exclusive
to set C, which has a lot more information. Set A seems mostly for
support of older boat steering equipment.
--------
The data interface to the Magellan consists of a 6-pin molded connector
that mates with the socket on the back of the unit. A six foot cable
runs from the connector to a plastic module. From the other side of the
module (which is glued shut) is a one foot pigtail with six wires.
The six wires are designated external power (red/black), NMEA data out
(brown/orange) and "reserved for future use" (yellow/white).
They are very proud of this interface; list price is $46. I'm tempted
to try to break into the plastic module to see how hard it would be to
build my own. I'd like to have a permanent interface in both my car and
my airplane. Do you suppose anyone would like to chip in to buy a
sacrificial lamb?
There is no direct electrical path through the module on any of the
pins; there's at least a semiconductor junction (or more) drop on all of
them. That didn't surprise me on the power leads; I expected some
voltage regulation if nothing else. Input voltage is allowed to be from
9 to 16 VDC. I don't know what else is done on the data leads. The
NMEA specifies the interface to compatible with RS-422 differential with
a minimum voltage swing of 2.0 volts. A listener shall not take more
than 2.0 mA from the line. I would think that could all be done in the
Trailblazer. The module must be providing some isolation or protection
functions. According to my 'scope, the data leads swing 4.5v between
mark and space. This makes sense, given the 3 AA cells in the battery
pack. However, that voltage swing doesn't change at all when the unit
is connected to external power.
In order to connect this to an RS-232 (read "laptop computer") interface
correctly will require additional circuitry. RS-232 wants a swing of at
least 6 volts, plus/minus 3 volts around the reference ground. Further,
a signal transiting into that 6 volt "undefined" region without exiting
the other side is deemed to have not changed.
I will probably build a small box that has a DB-25 connector on it,
takes a coaxial power plug so any Radio Shack power adaptor and/or
cigarette lighter cord can power the Trailblazer and the new interface
circuit and clamp it with strain relief onto the pigtail. Dallas
Electronics makes a chip that has CMOS compatible inputs and
incorporates a charge pump so it can provide legal RS-232 output from a
positive-only power supply. One of those puppies (and maybe a fuse)
ought to do it.
But if you're willing to fudge on the "correctly" part... The 0183
specifies the data format to be 4800 baud, 8 bits, no parity, one stop
bit per character. All data will be ASCII characters with a zero in the
high order bit position. I connected the NMEA "B" (brown) lead to the
signal ground pin and the "A" lead (orange) to the received data lead on
my laptop. I fired up Procomm at 4800/8/1/N and got error-free data.
I'd guess the Toshiba laptop RS-232 receiver may have the neutral zone
biased at zero volts instead of surrounding it. This would definately
be a "your milage may vary" situation. I think I can live with it until
I get the little box built.
The Trailblazer only transmits if it has a valid lock. That is, instead
of sending sentences with the "valid data" flags off, it just sends
nothing. That will make it a little harder to decide if you're not
getting good logging because the Trailblazer has lost signal, or you've
just managed to pull the cable loose. Oh, well.
An external power quirk: If external power is present when the unit is
turned on, it shows "EXTERNAL POWER" on the display. If it is not, the
display shows "BATTERY POWER". If external power is presented after the
unit is turned on it transitions to the external source, but if external
power is removed while the unit is running it does not transition to
battery but instead shuts down.
--------
As mentioned in the earlier post the Magellan Trailblazer did
successfully drive the COM1 port on my Toshiba T1000SE laptop, but only
because of tolerance on the part of the Toshiba. The output of the
Trailblazer isn't close to RS-232. It isn't RS-422 either, although
that's what is called for in the NMEA 0183 specification. Quoting:
The drive circuit used to provide the signal "A" and
the return "B" shall meet, at a minimum, the requirements
of EIA-422-A (December 1978).
And:
The idle, marking, logical "1", OFF or stop bit state is
defined by a negative voltage on line "A" with respect to
line "B".
The active, spacing, logical "0", ON or start bit stat is
defined by a positive voltage on line "A" with respect to
line "B".
What my 'scope shows is 0v for mark, and +4.5v for space. That doesn't
get the plus/minus swing needed for a computer, either RS-232 for a PC
or RS-422 for a Mac. I received e-mail from someone who tried to
connect a Magellan Meridian (a close relative to the Trailblazer) to his
Mac, figuring RS-422 is RS-422; he failed and that is why.
The Magellan folks have an out, however. Quoting again from NMEA 0183:
For reasons of compatability with equipment designed to
earlier versions of this standard, it is noted that the
'idle, marking logical "1", OFF or stop bit state' had
previously been defined to be in the range of -15 to +0.5
volts. The 'active, spacing, logical "0", ON or start bit
state' was defined to be in the range +4.0 to +15 volts while
sourcing not less than 15 mA.
So as long as they have sufficient current drive, they can claim have
built against an older version of the standard.
Be that as it may. I'm gonna build an box to interface their interface
to "real" RS-232. Modern electronic parts should make this pretty
simple. Maxim makes a part (the MAX233) which is takes a +5v (only)
supply and eats TTL or CMOS logic input levels, and outputs valid RS-232
complete with plus/minus 10v levels. It pays attention to all the other
RS-232 specs with regard to voltage slew rates and loads presented by
powered off equipment and the like. They have two inverting
transmitters. They have two inverting receivers (RS-232 in, TTL out) as
well, and they're under $8 here in Phoenix in onesies over the counter.
A note on the receivers: They have +0.8v as the switching threshold,
ostensibly so unconnected leads will be forced high (useful for things
like DSR or DCD). This means, however, that they will also eat the
Trailblazer's output perfectly. Cool, because we need a non-inverting
driver to keep the mark/space sense correct.
So, I connect the Trailblazer to one of the MAX233 receivers, the output
of that receiver to one of the transmitters, and the output of that
transmitter to the Received Data pin on a DB-25. Add a 7805 regulator
to get the +5v for the VCC on the chip, a fuse, a cigarette lighter
plug, some wires, connectors and a box with strain-relief on the wires
and we're in business.
Time for a parts run. I'll let you know how it works out.
--------
Here's an excerpt from a log of the output of my Magellan Trailblazer:
$GPGLL,3337.190,N,11158.430,W,104432.686,A
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,,
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001
$GPGLL,3337.190,N,11158.430,W,104435.122,A
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T
$GPGGA,104435.12,3337.19,N,11158.43,W,1,06,4.5,,,,,,
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K
$GPBWC,104435.12,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001
The "C" set of messages was selected from the AUX screen. As you can
see, there are five sentences in the C set, and they are emitted
approximately every two and a half seconds.
How about a breakdown? I thought you'd never ask.
First, the general format of the sentences is that they will contain
only ASCII printable charcters, they start with a '$' and end with a
CR/LF pair. NMEA 0183 specifies some optional fields, such as a
checksum; Magellan did not implement them and we will not discuss them
further. Each field is delimited by a comma. Fields should be located
by counting the delimiters. Null fields are represented by nothing,
that is, a ",," means no data for that field.
After the '$' are two characters identifying the talker type. In our
case, that is GP for Global Positioning System (GPS or NAVSTAR). There
are 36 other talkers defined in the standard, such as LC for Loran C and
OM for OMEGA. But this is a Magellan, so GP it is. Then there are
three characters which identify the sentence format, and after that are
data fields dependent on the sentence type. The standard also discusses
the format of types of fields, such as leading zeroes and number of
decimals. Again, we will ignore the optional and just describe the
Trailblazer's format. And, finally, there are 54 sentence formats in
the current standard plus 64 more that are defined but "not recommended
for new designs". We're only going to cover the 5 in the Magellan "C"
set, but you'll get the style.
Ok, in the order we see them:
$GPGLL,3337.190,N,11158.430,W,104432.686,A ++- Global Positioning System talker
$GPGLL,3337.190,N,11158.430,W,104432.686,A +++- Geographic Position - Latitude/Longitude
$GPGLL,3337.190,N,11158.430,W,104432.686,A ++++++++- Latitude in form DDMM.MMM, that is Degrees, Minutes
and hundredths of minutes.
$GPGLL,3337.190,N,11158.430,W,104432.686,A +- North Latitude ('S' for south)
$GPGLL,3337.190,N,11158.430,W,104432.686,A +++++++++-+- Longitude E/W
$GPGLL,3337.190,N,11158.430,W,104432.686,A ++++++++++- Universal Time Coordinated (UTC)
of position as hhmmss.sss
$GPGLL,3337.190,N,11158.430,W,104432.686,A +- Status (A = valid data, V = invalid data)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +++- Autopilot format "B"
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- Status (A = OK, V = fix is not available)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- Always A for GPS, shows cycle lock status for Loran-C
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +++- Magnitude of cross track error
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- Direction to steer (L/R)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- cross track error units (Nautical Miles)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- Status (A = arrival circle entered)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- Status (A = perpendicular passed at waypoint)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T ++++- Bearing, origin to destination
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +- M or T (Magnetic or True for bearing)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T +++- Destination waypoint ID
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T ++++-+- Bearing, present position to destination (M/T)
$GPAPB,A,A,0.0,R,N,V,V,86.8,T,001,86.9,T,86.9,T ++++-+- Heading-to-steer to destination (M/T)
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, +++- Global Positioning System Fix Data
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, +++++++++- UTC of position
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, +++++++-+- Latitude - N/S
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, ++++++++-+- Longitude - E/W
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, +- GPS quality indicator
0 = fix not available or invalid
1 = GPS fix
2 = Differential GPS fix
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, ++- Number of satellites in use
$GPGGA,104432.69,3337.19,N,11158.43,W,1,06,5.1,,,,,, +++- Horizontal dilution of precision (HOP)
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K +++- Track Made Good and Ground Speed
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K +++-+- Track in degrees true
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K +++++-+- Track in degrees magnetic
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K +++-+- Speed in Knots
$GPVTG,0.0,T,347.6,M,0.0,N,0.0,K +++-+- Speed in Kilometers/hour
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 +++- Bearing and Distance to Waypoint
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 +++++++++- UTC of observation
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 +++++++-+- Waypoint Latitude - N/S
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 ++++++++-+- Waypoint Longitude - E/W
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 ++++-+- Bearing to waypoint, true
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 ++++-+- Bearing to waypoint, magnetic
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 +++-+- distance, nautical miles
$GPBWC,104432.69,3337.36,N,11154.54,W,86.9,T,74.6,M,3.2,N,001 +++- Waypoint ID
If you made it this far, you'll have noticed a serious set of redundancy
in the sentence formats. For example, given the GGA sentence the GLL
sentence is completely unneeded. I'm sure this is to accomodate as many
different listeners as possible, each listening for whatever they
understand.
Also of interest: the Magallen doesn't emit the BWC sentence if there is
no route currently active. The two fields following the HOP in the GGA
sentence are supposed to contain the Antenna altitude above/below the
geoid (mean-sea-level). I've not seen the Trailblazer fill in those
fields, even when an altitude was being reported on its screen. Bug?
The other trailing null fields in the GGA sentence would contain things
like the age of differential data and differential station id, if the
Trailblazer knew about such things as differential GPS.
The difference between bearing to waypoint and heading to steer in the
APB sentence is supposed to allow the receiver to factor out the effect
of drift due to air/water flow. I guess I'll have to wait until I get
this whole sheebang into my airplane to find out if the Trailblazer ever
puts anything different in those two fields.
[
GPS Main Page |
Cable
Connection |
GPS-Protocol
| NMEA Info
]