GPS-RTK2 Hookup Guide

Pages
Contributors: Nate
Favorited Favorite 11

Can I Really Use NMEA with a High Precision GPS Receiver?

Yes! Except that NMEA sentences are right on the edge of enough precision. NMEA sentences look something like this:

$GNGGA,012911.00,4003.19080,N,10416.95542,W,1,12,0.75,1647.1,M,-21.3,M,,*4F

NMEA outputs coordinates in the ddmm.mmmmm format. So what is the weight of the least significant digit? Said differently, what is the impact of one digit change?

104 16.95542

vs

104 16.95543

If we know 1 degree of latitude is 111.3km at the equator, we can glean the change of a fraction of a minute:

  • 1 degree = 60 minutes
  • 1 minute = 1 degree/60 = 111.32km / 60 = 1.855km
  • 1 minute = 1855m
  • 0.1min = 185.5m
  • 0.01min = 18.55m
  • 0.001min = 1.855m
  • 0.0001min = .1855m = 185.5mm
  • 0.00001min = 0.0185m = 18.55mm = 1.855cm

Thankfully u-blox has thought about this and offers a setting to increase the NMEA precision from 5 decimal places to 7.

Enable high precision mode in u-center

High precision NMEA increases the number of decimal places from 5 to 7. If 0.1855mm is not enough precision you're on your own!

$GNGLL,4005.42027,N,10511.08674,W,180753.00,A,D*63

$GNGLL,4005.4202248,N,10511.0867652,W,180817.00,A,D*60

Correctly parsing and loading a float variable with 7 digits of significance can be tricky. Consider using the UBX protocol which can output up to 8 digits of precision in dd.dddddddd format. Be sure to checkout the examples in the SparkFun u-blox Arduino Library. We have various examples outputting the full 8 digits of precision over I2C without the burden of parsing NMEA sentences.