Forum: Mikrocontroller und Digitale Elektronik GPS: TricklePower Mode


von Philipp S. (philipp-s)


Lesenswert?

Hallo,

Ich baue zur Zeit an einem mobilen GPS-Datenlogger. Die Stromversorgung 
(3,3V) erfolgt per Step-Up DC/DC-converter aus zwei Zellen.
Das GPS-Modul ist ein GlobalSat EM-402 (SirfStar-Xtrac; 3,3V). Im 
kontinuierlichen Modus des Daten-Loggers fließen 250mA (ohne GPS nur 
20mA). Das ist zu viel!

Ich möchte so alle 10s (oder noch länger -> am besten variabel 
einstellbar) ein gültiges GPS-Signal. Zur Zeit kommen die Daten alle 1s 
über die RS232.

Ich habe gelesen, dass die Stromversorgung des Moduls über den 
TricklePower-Mode (Sirf Message-ID 151) einstellbar ist. Was ist das?
Im Datenblatt steht etwas von einem Tastverhältnis (duty cycle) der 
CPU-Rechenleistung. Geht da die Genauigkeit verlohren?
Meine Frage: Wer hat Erfahrungen mit dem TricklePower Mode, oder wie man 
effektiv per Software das Modul an-/ausschaltet (ohne Kaltstart)?

Wenn ich die Rechenleistung beeinflussen kann, stellt sich mir die 
Frage, warum die nicht gleich geringer gewählt wurde... Ich meine, den 
"Turbo-Knopf" am 386SX-PC hat auch niemand ausgeschaltet!

Danke!

Mfg,
Philipp

von botnec (Gast)


Lesenswert?

Phillip,

ich habe vor mehreren Jahren mit u-Blox GPS Empfängern mit SIRF-II
Chipsatz gearbeitet. Es gibt eine AN von u_blox dazu und eine Excel
Sheet zur Berechnung der Stromersparnis in TPM. Man kann es aber
leider nicht mehr im WEB finden und von u-blox gibt es das nicht mehr.

Wenn du mir eine mail schickst, kann dir die AN und das XLS Sheet
zukommen lassen.

von botnec (Gast)


Lesenswert?

sri botnec at gmx dot de

von Philipp S. (philipp-s)


Lesenswert?

Hallo botnec,

Danke für den Tipp! Ich habe das Application Note im Web gefunden.
http://www.dpwolfer.ch/wintrack/tpmappnote.pdf
So wie ich das verstehe, kann ich das Tastverhältnis 
(Track-Mode+CPU-Mode / Sleep-Mode) und die Dauer des Tracking frei 
wählen. Es werden jedoch "Vorzugswerte" angegeben... Was ist denn 
sinnvoll als max. Dauer des Track-Mode ?

Weiterhin steht da, dass man nur während des "On"-Zustandes mit dem 
Modul kommunizieren kann. Zur Zeit habe ich einen UART-Interrupt laufen. 
Kann ich da einfach am Ende der Kommunikation vom Modul meine Befehle 
hinschicken oder ist das Modul dann bereits im "Off"-Zustand.

Philipp

von botnec (Gast)


Lesenswert?

Ich meine das

GPS.G2-X-02003.pdf

und das

GPS.G2-X-02004.xls

Da steht eigentlich alles drin.

von Philipp S. (philipp-s)


Angehängte Dateien:

Lesenswert?

Danke an botnec für die Hilfe!!

Leider bin ich dem Energiesparmodus nicht sehr viel weiter gekommen.

Erfolgreich implementiert sind:
- ein Umschalten auf 19,2kBaud
- bei Gerätestart wartet mein Controller (ATmega32) auf eine
Kommunikation bei 4,8 oder 19,2 kBaud (sowohl NMEA als auch Sirf Binary)
und schaltet dann auf NMEA (19,2 kBaud) um
- GPS-Fixes werden aus NMEA "decodiert" [GGA, GSV, RMC]
- weiterhin warte ich auf die OkToSend-Message "PSRF150" um den
TricklePower-Modus zu erkennen

Energiesparmodus:
-----------------
Sowie ich ein richtiges NMEA-Protokoll empfangen habe, versuche ich in
den TricklePower-Modus zu gelangen. Dazu muss ich nach Sirf-Binary
umschalten, den Modus aktivieren und wieder nach NMEA zurück:
1. nach Sirf-Binary: "$PSRF100,0,19200,8,1,0*39\r\n"
2. TricklePower einstellen (siehe unten)
3. wieder NMEA: 0xA0,0xA2,0x00,0x18, 0x81,2,
1,1,0,1,1,1,5,1,1,1,0,1,0,1,0,0,0,1,0,0,0x4B,0, 0x00,0xDE, 0xB0,0xB3

Das Hin- und Herschalten scheint zu funktionieren, da ich anschließend
wieder NMEA empfange.
Als Energiesparbefehle habe ich folgendes versucht:
- Set TricklePower Parameters - Message ID 151 []
- Advanced Power Management - Message ID 53
- Set Low Power Acquisition Parameters - Message ID 167
und Kombinationen dieser.

Leider funktioniert das nicht, der Stromverbrauch liegt weiterhin bei
180mA (gesamt) - [ohne GPS: 20mA].

Ich habe gelesen, dass der Sirf star II X-trac eigentlich alle diese
Befehle versteht (unter anderem im SiRF Binary Protocol Reference Manual
[Tabelle 2-3]). An einer anderen Stelle im Internet allerdings, dass er
nur ID 53 kann.
Weiterhin habe ich beim Hersteller (GlobalSat) des Moduls (EM-402)
nachgefragt, was für Modi unterstützt werden. Die Antwort lässt aber
noch auf sich warten.

Fragen:
-------
- Muss man eine Reihenfolge der Befehle einhalten?
- Welche Befehle müssen gesendet werden?
- Wie erkenne ich, dass der Sirf-Chip meine Befehle nicht versteht?
- Welcher Quelle kann ich trauen - welche Befehle kann die X-trac
Software im SirfII?

Vielen Dank für eine Antwort!

PS: Anbei auch ein Code-Ausschnitt

von jjk (Gast)


Lesenswert?

>Im
>kontinuierlichen Modus des Daten-Loggers fließen 250mA (ohne GPS nur
>20mA).
>Das ist zu viel!

Allerdings.
Lt. Datenblatt braucht das Teil 70-80 mA, je nachdem welches Datenblatt 
man zu Rate zieht ;)

Jetzt schreibst Du:

>....Leider funktioniert das nicht, der Stromverbrauch liegt weiterhin bei
>180mA (gesamt) - [ohne GPS: 20mA].

Was stimmt denn nun? 250 mA oder 180 mA Gesamtverbrauch?

Der Stromverbrauch des Boards alleine laege ja nach Deinen Angaben 
zwischen 230 und 160 mA. Das kommt hin wenn es zum Beispiel einen 
Kurzschluss der Antennenversorgung gibt ;)

Es ist in jedem Fall zu viel.
Hast Du mal den Stromverbrauch vom GPS Board alleine ohne 
angeschlossenen Controller gemessen? Mit Antenne und ohne Antenne?

>- Wie erkenne ich, dass der Sirf-Chip meine Befehle nicht versteht?

Na z.B. daran:

>- weiterhin warte ich auf die OkToSend-Message "PSRF150" um den
>TricklePower-Modus zu erkennen

This message is sent when the receiver is in a power-saving mode. One 
message is sent just before the receiver’s power is turned off (with 
Send Indicator set to 0), and one is sent once the power has been 
restored (with Send Indicator set to 1).

Bekommst Du diese Message mit Send Indicator 0 bzw. 1?

juergen

von Philipp S. (philipp-s)


Angehängte Dateien:

Lesenswert?

Hallo,

Die zwei verschiedenen Stromangaben kommen von den zwei verschiedenen 
Messbereichen meines Multimeters. :-)
>Was stimmt denn nun? 250 mA oder 180 mA
180mA

Es ist ein DC/DC-Wandler auf meiner Platine der aus den 3V 
Batteriespannung die 3,3V für alle Komponenten macht. Dessen 
Wirkungsgrad wird wohl so bei 70-80% liegen, sodass die 180mA nicht so 
sehr falsch sind.
Messen könnte ich das schon genauer...

Ein Kurzschluss ist auszuschließen, da ich ja meine Position richtig aus 
dem NMEA ermittle.

>Bekommst Du diese Message mit Send Indicator 0 bzw. 1?
Diese Message erhalte ich nicht, daher schlussfolgere ich ja, dass ich 
mich nicht im TricklePower-Modus befinde.

Zur Erkennung, ob der Befehl richtig empfangen wurde, machen sich die 
Sirf-Binary-Output-Messages ID 11 & ID 12 gut. Leider erhalte ich keine 
der beiden nachdem ich Befehle an das Modul gesendet habe.
Wann werden diese "Bestätigungen" denn gesendet? Sofort nach Erhalt des 
Commandos?

In welcher Reihenfolge müssen welche Befehle gesendet werden?

Anbei das Datenblatt des Moduls.

Danke
Philipp

von botnec (Gast)


Lesenswert?

Phillip,

wie ich schon geschrieben habe, benutze doch zunächst mal SIRFDEMO um
die Kommunikation zwischen PC und dem RX zu testen. Das Tool kann alles 
protokollieren, sodass du hier mal grundsätzlich die Kommandos und
eventuelle Antworten deines Rx in Ruhe anschauen kannst , ohne deinen
eigene HW und SW. (habe ich aus so gemacht).

von jjk (Gast)


Lesenswert?

Hallo.

>Die zwei verschiedenen Stromangaben kommen von den zwei verschiedenen
>Messbereichen meines Multimeters. :-)

:)

>>Was stimmt denn nun? 250 mA oder 180 mA

>180mA

>Es ist ein DC/DC-Wandler auf meiner Platine der aus den 3V
>Batteriespannung die 3,3V für alle Komponenten macht. Dessen
>Wirkungsgrad wird wohl so bei 70-80% liegen, sodass die 180mA nicht so
>sehr falsch sind.

Aehem... das heisst also dass Du die Stromentnahme aus der Batterie 
misst ??? Also vor dem Wandler?

Dann kommt das durchaus hin wenn die Batteriespannung niedrig, die 
Batterien also fast leer sind.
Das liegt aber dann sicher nicht am Wirkungsgrad des Wandlers. Selbst 
wenn der nur 70% hat und die Batterien voll sind sollte es deutlich 
weniger sein.

>Messen könnte ich das schon genauer...

Mach das mal ;)
Mit vollen/neuen Batterien!
Und zwar nach dem Wandler, nicht davor.
Dass die Stromaufnahme aus der Batterie immer hoeher wird je leerer sie 
wird ist ja wohl logisch.
Sie entspricht nur dann der Stromaufnahme von Board und Controller 
wenn sie exakt 3.3 Volt betraegt. Probier es mal mit einem Netzgeraet 
aus, dann kannst Du das gut sehen.

>>Bekommst Du diese Message mit Send Indicator 0 bzw. 1?

>Diese Message erhalte ich nicht, daher schlussfolgere ich ja, dass ich
>mich nicht im TricklePower-Modus befinde.

Kann IMO auch gar nicht so funktionieren.
s.u.

>Zur Erkennung, ob der Befehl richtig empfangen wurde, machen sich die
>Sirf-Binary-Output-Messages ID 11 & ID 12 gut. Leider erhalte ich keine
>der beiden nachdem ich Befehle an das Modul gesendet habe.

Die bekommst Du aber auch nur nach Request, das heisst Du musst sie fuer 
die jeweilige Aktion anfordern. Ob das auch fuer Trickle Power 
funktioniert wage ich zu bezweifeln. Dafuer gibt es ja extra die ID 18 
die das automatisch macht ohne Request und zwar als SiRF Message.

Ich vermute aber mal dass das bei Deinem Modul ohnehin nicht so 
funktionieren kann da Du nur einen Ausgangsport hast.

Von NMEA auf SiRF zurueckschalten bringt da nix.
Das Teil hat ja nur einen Port. Input nur SiRF und Output NMEA oder 
SiRF.

>Wann werden diese "Bestätigungen" denn gesendet? Sofort nach Erhalt des
>Commandos?

Ja, wenn Du ID 18 meinst und einen 2. SiRF Output Port haettest.

>In welcher Reihenfolge müssen welche Befehle gesendet werden?

So wie ich das Datenblatt verstehe stellst Du zuerst auf NMEA um (sollte 
eigentlich per default ohnehin NMEA sein) und sendest lediglich das 
Trickle Power Command. Fertig.
Du muesstest dann eine Aenderung der Stromaufnahme messen koennen.

Kannst Du das Teil eigentlich auf NMEA und 19.2 umstellen oder laeuft 
NMEA immer nur mit 4800?

juergen

von Philipp S. (philipp-s)


Lesenswert?

Hallo,

Die Batterien sind noch recht frisch. Der Messwert 180mA kommt aus dem 
Messbereich 10A - also stark fehlerbehaftet! Der andere Messbereich 
scheint eine Macke zu haben...

Die Hardware, die mir zur Zeit zur Verfügung steht ist eben nicht so 
toll. Auch kann ich kaum Änderungen an der Hardware vornehmen, da ich 
mich auswärts befinde...

> Also vor dem Wandler?
Ja!

> Die bekommst Du aber auch nur nach Request, das heisst Du musst sie fuer
> die jeweilige Aktion anfordern.
Wie stelle ich das ein? Welche Sirf-Binary-Message ist das denn?

> ... kann da Du nur einen Ausgangsport hast.
Das hat damit nichts zu tun, da man ohne Probleme zwischen den 
Protokollen wechseln kann.

NMEA -> SiRF: $PSRF100
SiRF -> NMEA: ID 129

Bei beiden Kommandos kann man die Baud-Rate frei einstellen.

Im TricklePower Modus kann man nur mit dem Modul sprechen, wenn es wach 
ist. Daher gibt es die OkToSend-Messages:
NMEA: $PSRF150,1*3F
SiRF: ID 18

> ... nach NMEA um ... und sendest lediglich das Trickle Power Command.
Gibt es denn einen NMEA - Standard-Befehl für das Umstellen? Im NMEA 
Reference Manual steht da nichts!
uBlox hat einen eigenen "NMEA-Befehl" (PSRF107). Ich habe aber ein 
GlobalSat-Modul !!

Philipp

von jjk (Gast)


Lesenswert?

Hallo Philipp.

Wir reden von 2 verschiedenen Dingen, Stromverbrauch bzw. Stromaufnahme 
Deines Geraetes und Trickle Power Mode des Moduls:

>Die Batterien sind noch recht frisch. Der Messwert 180mA kommt aus dem
>Messbereich 10A - also stark fehlerbehaftet! Der andere Messbereich
>scheint eine Macke zu haben...

Na gut, so kannst Du natuerlich kaum richtig messen.

>> Also vor dem Wandler?
>Ja!

Zum Stromverbrauch bzw. zur Stromaufnahme:

Loes Dich mal zunaechst vom Stromverbrauchsdenken und betrachte 
stattdessen mal die Leistungsaufnahme bzw. die Leistungsbilanz der 
Batterien, dann wird es klarer:

Mal angenommen das Modul braeuchte 80mA und der Rest 20 mA, also in 
Summe 100mA.
Dann betraegt die Leistungsaufnahme bei 3.3 Volt genau 330mW.

Wenn Deine Batterie auf 2 Volt abgesunken ist dann muesstest Du aus der 
Batterie  fuer diese Leistung 330/2 = 165 mA ziehen, bei einem *idealen 
100%* Step Up Wandler.

2 neue Batterien (AA Alkaline) in Serie liegen zwar bei 3 bis 3.2 Volt, 
fallen aber unter Belastung extrem schnell ab: Der Strom steigt an... 
Kurzum, die gespeicherte Energie bei Alkaline kannst Du nie voellig 
ausschoepfen da diese Teile bei zunehmendem Entnahmestrom immer staerker 
abfallen.
Und fuer groessere Entladestroeme sind sie schlicht ungeeignet. Da 
waeren Akkus besser.

Nimmst Du dagegen z.B. Lithium Batterien sieht es anders aus:
Anfangsspannung um 1.6 Volt pro Zelle.
Unter Last faellt die Spannung auf etwa 1.4 Volt im Mittel bis kurz vor 
Ende. Mit anderen Worten, das Spannungsniveau bleibt relativ 
stabil/hoch, ergo ist auch der Entnahmestrom halbwegs stabil und 
vergleichsweise niedrig, man kann deshalb auch die gespeicherte Energie 
fast komplett ausreizen.
Eine Energizer L2 hat rund 3000 mAh.
Bei obigem Rechenbeispiel wuerden 2 Zellen mit relativ konstant 2.8 Volt 
fuer rund 9 Stunden reichen, abzueglich Wandlerverluste.
Mit AA Alkaline wirst Du kaum die Haelfte der Zeit schaffen, aber eine 
Menge Restkapazitaet haben die Du nicht nutzen kannst.

Umso wichtiger ist IMO ein moeglichst effektiver Step Up Wandler. Sowas 
gibt es mit Wirkungsgrad deutlich besser als 70-80 %. Ich verwende 
dafuer einen Max 756 EPA.



Zum Trickle Power Mode:

Sorry, da hab ich etwas Unsinn geschrieben, es ist halt lange her dass 
ich mich mit SiRF befasst habe ;)
Ich hab mir jetzt noch mal die SiRF Binary und SiRF NMEA Messages 
genauer angesehen:

Deine Vorgansweise ist korrekt.
Du musst zuerst auf SiRF Binary umschalten, dann den Trickle Power Mode 
aktivieren und danach auf NMEA zurueckschalten.

Beachte dabei dies hier:

Note - In TricklePower mode, update rate is specified by the user. When 
switching to NMEA protocol, the message update rate is also required. 
The resulting update rate is the product of the TricklePower Update rate 
and the NMEA update rate (i.e., TricklePower update rate = 2 seconds, 
NMEA update rate = 5 seconds, resulting update rate is every 10 seconds, 
(2 X 5 = 10)).

Mit NMEA Input Command 103 kannst Du aber dann im NMEA Mode die update 
rate wieder veraendern ohne auf SiRF Binary zurueckzugehen.


>..im TricklePower Modus kann man nur mit dem Modul sprechen, wenn es wach
>ist. Daher gibt es die OkToSend-Messages:

Yep, so verstehe ich das Manual auch.
Du musst lt. Manual auf OkToSend warten bevor Du wieder auf NMEA 
umschaltest.

>> ... nach NMEA um ... und sendest lediglich das Trickle Power Command.
>Gibt es denn einen NMEA - Standard-Befehl für das Umstellen? Im NMEA
>Reference Manual steht da nichts!

S.o.
Ich hab mich da geirrt.

Also noch mal in Kurzfassung:

Bring das Teil in den SiRF Binary Mode.
Stell den gewuenschten Trickle Power Mode ein.
Warte auf OkToSend.
Dann stell auf NMEA um und lass es so.
Eine andere update rate kannst Du dann ja immer noch unter NMEA mit 103 
vornehmen.

Wenn Du im Trickle Power Mode die Stromaufnahme des Modules auf die 
Haelfte senken kannst wuerdest Du die Laufzeit von Lithium Batterien 
erreichen ;)

Und falls Du mit SiRF Demo arbeiten willst koennte das hier hilfreich 
sein:
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=25575

juergen

von Philipp S. (philipp-s)


Lesenswert?

Vielen Dank an botnec und Jürgen!

Da ich zur Zeit keine Möglichkeit habe mit dem PC und einem Programm wie 
SirfDemo mit dem GPS-Modul zu kommunizieren, habe ich mir etwas eigenes 
für meinen Controller geschrieben.

Und siehe da:
-------------
Der Sirf-Befehl ID 151 "Set TricklePower Parameters" wird von meinem 
Modul NICHT erkannt. Auch der Befehl ID 167 "Set Low Power Acquisition 
Parameters" wird mit ID 12 "Command Not Acknowledgement" beantwortet.

Das ist offenbar eine Besonderheit der XTrac(2)-Software!

Nur der Befehl ID 53 "Advanced Power Management" wird angenommen und ist 
offenbar die EINZIGE Möglichkeit den Energieverbrauch dieses Moduls zu 
senken. [Dies konnte ich auch in einem anderen Forum lesen - allerdings 
ohne jede Quellenangabe.]
Erst dann erhalte ich die "OkToSend"-Messages als Zeichen, dass ich mich 
in einem Energiesparmodus befinde.

Bei dem Befehl ID 53 gibt es zwei Modi:
---------------------------------------
1. der Power-Duty-Cyle wird "geregelt" --> unregelmäßige Ausgabe der 
Fixes
2. die Ausgabe der Fixes erfolgt regelmäßig --> im Extremfall (bei 
schlechter Sicht) ist das Modul im kontinuierlichen Modus.

Der Duty-Cyle lässt sich im Bereich 5% .. 95% einstellen.
Die Fixes können im Bereich 10s .. 255s ausgegeben werden.


Leider ist mein Messgerät wirklich nur ein Schätzeisen...
Anzeige (ohne GPS-Modul) = 0.02A
Anzeige (GPS full power) = 0.20A
Anzeige (GPS "trickle")  = 0.15A

Ich habe hier bewusst "Anzeige" geschrieben! Mir kommt der Unterschied 
zwischen "trickle" und "full power" etwas wenig vor!
Im GPS-Datenblatt steht etwas von 80mA - da ist doch die Antenne mit 
dabei oder? [Ich kann das nicht überprüfen, da Antenne und Modul FEST 
verbunden sind.]

@ jürgen:
Als DC/DC-Wandler verwende ich einen MAX1709 (zugegeben: etwas 
überdimensioniert) - Wirkungsgrad: (nach Datenblatt) @ 200mA bei >80%

Philipp

von jjk (Gast)


Lesenswert?

Hallo Philipp.

>Und siehe da:

>Der Sirf-Befehl ID 151 "Set TricklePower Parameters" wird von meinem
>Modul NICHT erkannt. Auch der Befehl ID 167 "Set Low Power Acquisition
>Parameters" wird mit ID 12 "Command Not Acknowledgement" beantwortet.


Hmm. Laut Tab. 2-3 (supported input messages) sollte das aber gehen.

>Das ist offenbar eine Besonderheit der XTrac(2)-Software!

Jeder SiRF-Grosskunde hat die Moeglichkeit die Software zu aendern bzw. 
auch begrenzt eigene Features zu implementieren. Vielleicht hat da 
GlobalSat was veraendert. Frag die doch mal.
Hinzu kommt dass SiRF seine Software auch recht zuegig aendert.

Das waren fuer mich auch u.A. die Gruende eben nicht mit SiRF Chips zu 
arbeiten.

Immerhin geht ja wenigstens ID 53.

>Bei dem Befehl ID 53 gibt es zwei Modi:

Kommt drauf an wie man zaehlt ;)


>Der Duty-Cyle lässt sich im Bereich 5% .. 95% einstellen.
>Die Fixes können im Bereich 10s .. 255s ausgegeben werden.

Und zusaetlich kannst Du die Fix-Qualitaet (Horizontal-Vertical Error) 
festlegen ;)

SNIP

>Leider ist mein Messgerät wirklich nur ein Schätzeisen...
>Anzeige (ohne GPS-Modul) = 0.02A
>Anzeige (GPS full power) = 0.20A
>Anzeige (GPS "trickle")  = 0.15A

>Ich habe hier bewusst "Anzeige" geschrieben! Mir kommt der Unterschied
>zwischen "trickle" und "full power" etwas wenig vor!

Wirklich umwerfend ist das noch nicht, aber ein Anfang.
Es haengt natuerlich auch davon ab welchen der Modi mit welchen 
Parametern Du verwendet hast. Versuch es mal interessehalber mit den 
Maximalwerten.

>Im GPS-Datenblatt steht etwas von 80mA - da ist doch die Antenne mit
>dabei oder?

Zumindest sagt das Datenblatt nix Anderes.

>@ jürgen:
>Als DC/DC-Wandler verwende ich einen MAX1709 (zugegeben: etwas
>überdimensioniert) - Wirkungsgrad: (nach Datenblatt) @ 200mA bei >80%

Ja, das ist minimalst ueberdimensioniert ;)

juergen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.