Arduino GPS shield giving incorrect altitude readings

arduinogps

I've been playing around with an Arduino and the SparkFun GPS shield. For about a week, it was working well, but it has now developed an interesting error.

While my latitude, longitude, date, time and course are correct, the GPS is telling me that it is 10 000 000 m above sea level. Previously, it was giving readings between 90 and 110 m, which would be correct for my local area.

I have tried everything I can think of to fix the problem; reinstalling the libraries and using a couple of different sketches off the internet, but they all have the same problem.

I'm not sure if the GPS module has gone bad because all other outputs are working, but this being my first GPS project I'm not 100% on how it determines altitude figures. I am willing to pay another $80 to get a new module but I'd rather not if it's not the problem.

Best Answer

I doubt that you somehow only damaged the logic that determines altitude in your GPS module.

My best guess would be that your software is looking at the wrong part of the NMEA sentence the module is transmitting to your Arduino. I'm not sure how the GPS shield is wired (there are seemingly a couple variants on SparkFun, but I'd attach a separate TTL converter (e.g. board with an FTDI chip) and look at what the GPS is actually sending.

You don't have to use the TTL converter, just get a glimpse somehow of the raw NMEA data. The reason I suggest that is because I think the GPS uses the serial port that you'd normally use to talk with your PC.

The fact it worked before makes me think that either your software was modified initially then all the stock versions you've tried don't have that tweak in them, or you may have reconfigured the GPS module somehow to change the fields it transmits.