GPS not updating coordinates?

Hey I recently purchased a pmb-688 gps. I used this website and code for a sample program, Arduino GPS Tutorial: Get Latitude and Longitude Coordinates From Receiver

It seemed very similar to my components. The GPS does send out correct lat and long when first powered up but does not update unless powered off and then on again. I've moved about 30 feet to test it. I've read many other post like this one, and most say you just need to move further because of inaccuracy. But if it was inaccuracy then why does powering it off and then on again change it?
"No it is probably Ok Even though 'Selective Availability is disabled and theoretically the accuracy should be 3 meters, 10 meters or 33" is about the minimum typical measurable distance. Try twice that far."

How do you turn on "selective availability"? And can buying a bigger antenna help?

Thanks,
Josiah

Hi,

Google a free program called SIRF-demo.
This shows you all the output from the GPS-unit, and also allows you to set the different parameters of the GPS module.
Look here for more info:

http://www.falcom.de/support/software-tools/sirf/

Succes.

Im sorry, Im completely lost. I downloaded the software from the link you game me and googled it to try and find some examples but I coudnt find any. Am I suppose to connect the gps directly to the computer? The program looked somewhat useful, but I have no idea what to do with it. Sorry I'm still very new to Arduino and electronics in general.

Hi,

yes, you first connect the GPS to the PC.
In the different PC windows you than can see what the GPS unit is giving as output.
There is a separated window where you can read the NMEA strings.

When you have that working, you can also select the working-mode of the GPS. (eg. NMEA or SIRF)
NMEA gives readable ascii strings, SIRF uses a binary protocol.

So, almost everybody uses the NMEA mode.

When I did my project I used the GPS output both in my PC as well as in my Arduino.
This way I could verify the different software-modules I was putting together for my Arduino.
Here is a link to my project. (I used the GPS for obtaining Time data.)
http://forum.arduino.cc/index.php?topic=238586.0

I hope this helps,

Satbeginner

This use a GPS data to provide time and altitude on an LCD Screen.

/* MarksGPS_Clock shows time on top row

  • Altitude and and number of Satelites on bottom row.
  • Finished Oct.9 2013, Mark R. Matthias
    */

#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#include <TinyGPS.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
TinyGPS gps;
SoftwareSerial a(0,1);
static void b(TinyGPS &gps);
static bool c();
static void d(TinyGPS &gps);
void setup()
{
Serial.begin(9600);
a.begin(4800);
Serial.println("Using MarksGPS_Clock 10/9/2013");
Serial.println("Go to line 55 to adjust for Time Zone and Daylight Savings");
}
/* Go to Line 55 to adjust for Timezone/Daylight Savings

  • The circuit:
  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD R/W pin to ground
  • 10K resistor: one end to +5V and one to ground and (mddle pin) wiper to LCD VO pin (pin 3)
  • add: pin 16 (LED-)to ground (last pin of LCD)
  • add pin 15 (Led+)with 220 Ohm resistor (next to last lcd pin)
  • add forst pin of LCD to ground
    */
    void loop()
    {
    bool newdata = false;
    unsigned long start = millis();
    // Every second we print an update
    while (millis() - start < 970)
    {
    if (c())
    newdata = true;
    }

b(gps);
}
static void b(TinyGPS &gps)
{
d(gps);
}
static void d(TinyGPS &gps)
{
int TimeZn (8);
float alt;
float flat, flon;
unsigned long ag;
gps.f_get_position(&flat, &flon, &ag);
Serial.print("Latitude:" );
Serial.print(flat);
Serial.print (" Longitude:") ;
Serial.print (flon);
Serial.print (" age = ");
Serial.println (ag);
alt=gps.f_altitude();
alt=alt*3.28084;
int atl (alt);
int sats;
sats=(gps.satellites());
int year;
int h;
byte month, day, hour, minute, second, hundredths;
unsigned long age;
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
lcd.begin(16,2);
lcd.setCursor(0,0);
if (ag >= 3000){
lcd.print("No Signal..... ");
lcd.setCursor(0,1);
lcd.print("Chk GPS connect ");
}
else
{
char lq[16];
if (hour >= TimeZn) hour=hour-TimeZn;
else hour=hour+12-TimeZn;
if (hour >12) hour=hour-12;

// Need to figure out how to toggle between night and day mode.
//This is Day Mode
sprintf(lq, "%02d:%02d:%02d ",
hour, minute, second);

lcd.setCursor(0,1);
lcd.print("Alt: ");
lcd.print(atl) ;
lcd.print("ft ");
lcd.print("S:");
lcd.print(sats);
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(lq);

}
c();

}
static bool c()
{
while (a.available())
{
if (gps.encode(a.read()))
return true;
}
return false;
}

int TimeZn (8);

I want to move to that time zone.

Hey ok, well this is long ovedue, the GPS does seem to update but its not nearly as precise as I need it, also SATbeginner you said that you connect the gps to the computer... how? Sorry I know this sounds absolutely terrible, but I really have no idea how to. The gps has 3 wires, no usb or anything that I know you could connect to the computer

but its not nearly as precise as I need it,

How precise is it? How precise do you (think you) need it to be?

Its about 60 feet precision, I would like to have it 5-10 feet max, some what wishful thinking, but my car GPS can do it so I thought it could do it aswell

GPS devices are designed to do that. It is intentional.

If they told you what they actually calculated each second, you would seem to be wandering around in a small area a few metres wide. That is perceived by some as annoying. So, they pretend you are standing still, and only update their position when they are sure you have really started actually moving again, and moved at least 30 or 40 feet. This is also annoying.

On some GPS devices, you have the ability to change settings which control this behaviour.

You need to distinguish between precision, resolution, and accuracy.

If you are outside with a good coverage of the sky, the calculated result of a gps device will be within a circle with a radius of 2.5 metres, about 50% of the time.