PAVA R7 Further Power Saving

Due to a cock up with the design (I’d left copper pour under the GPS antenna so no lock) I had to get some more PCB’s made. Given how many of these seem to be ending in the sea and how you can’t see design cockups on black PCB’s I decided to go with plain old boring green for PAVA R7b. However they look quite nice :

2012-12-27 14.25.18

Specs as before with the small addition of a 1.8V LED for status reporting as needed.

Testing last week with the 3.3V board under the following conditions : continuous TX @ 11dB , input voltage 1.58v with no power saving code saw a average draw of 254mA from the battery. This equates to about 12 hours run time from a single AA. Implementing power saving code, turning off the ADC and putting the GPS in 1 second cyclic mode brought this down to 148mA increasing run time to about 20 hours from an AA.

Now the 1.8V boards are here I ran the same power saving code under the same conditions. The result is an average draw, once lock has been attained, of 66mA from the battery. This equates to theoretical 45 hour + run time from a single AA. It may be more as it seems to use less power the more satellites it has, this maybe offset against the temperature however. Look ma no power :IMG_1380As noted by James Coxon you can’t implement power saving mode until you have a lock. I also found engaging it before you had more than 5 satellites was problematic.

I was unable to get anything other than the default 1 second cyclic mode working. In fact amending the cyclic to anything other than default seemed to cause issues, the clock stopped counting and the module started behaving erratically. However just turning cyclic mode on with no other changes seems to work.

void setGPS_PowerSaveMode() {
 // Power Save Mode
 uint8_t setPSM[] = {
 0xB5, 0x62, 0x06, 0x11, 0x02, 0x00, 0x08, 0x01, 0x22, 0x92 }; // Setup for Power Save Mode (Default Cyclic 1s)
 sendUBX(setPSM, sizeof(setPSM)/sizeof(uint8_t));

The following code may be useful as well :

void setGps_MaxPerformanceMode() {
 //Set GPS for Max Performance Mode
 uint8_t setMax[] = {
 0xB5, 0x62, 0x06, 0x11, 0x02, 0x00, 0x08, 0x00, 0x21, 0x91 }; // Setup for Max Power Mode
 sendUBX(setMax, sizeof(setMax)/sizeof(uint8_t));
void resetGPS() { // Cold Boot GPS
 uint8_t set_reset[] = {
 0xB5, 0x62, 0x06, 0x04, 0x04, 0x00, 0xFF, 0x87, 0x00, 0x00, 0x94, 0xF5 };
 sendUBX(set_reset, sizeof(set_reset)/sizeof(uint8_t));

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Human test : * Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.