mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kleiner Erfahrungsbericht zu SIRF III GPS Empfänger / Trickle Power


Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich wollte euch hier ganz kurz meine "neuesten Erfahrungen" mit dem Sirf 
III GPS Empfänger vorstellen, die ich bei der Arbeit mit meinem 
derzeitigen Projekt - Ein Mini GPS Logger/Navi - gemacht habe.

Ich verwende den SysOn Blue Mini, dort ist ein Samsung SIRF III Modul 
mit der Softwareversion GSW 3.2.3 verbaut.

Das Modul steht nach Anschalten im NMEA Modus, kann aber problemlos in 
den Sirfmodus umgeschalten werden, welcher für die µC Kommunikation 
meiner Meinung nach auch sinnvoller ist. Achtung: Mein Modul hat eine 
eingebaute Sperre auf 38400 bps, egal was man dem Modul sendet. Dies 
dient wohl dazu, eine Fehlkonfiguration zu vermeiden, da das Bluetooth 
Modul ebenfalls fest mit 38400 bps auf seiner Uart kommuniziert. Dort 
ist es am PC übrigens egal, welche Geschwindigkeit man einstellt. Es 
funktioniert immer und zwar mit 38400 bps.

Der GPS Empfänger braucht rund 70-80 mA (Ohne Bluetooth versteht sich). 
Wer Strom sparen will, dem sei ein MTK Empfänger nahegelegt, die 
verbrauchen nachdem was ich so gelesen habe etwa die Hälfte.

Ein SatFix kommt bei sehr freier Sicht schnell zustande, gefühlte 30-60 
Sekunden (Almanach veraltet, Epiphmeriden geleert). Bei leicht gestörter 
Sicht (Terasse relativ dicht am Haus) dauert es allerdings auch mal 5 
Minuten. Ein "Hot Start" (nach ~5 Minuten On Time ein Abschalten von 
rund 30 Sekunden) führt bei sehr freier Sicht in 4-6 Sekunden zu einem 
3D Fix, etwa 1-2 Sekunden vorher hat er einen "least square" 2D fix, was 
das least square genau bedeutet weiß ich nicht, es ist jedenfalls 
schlechter :-)

Da ich ein Augenmerk aufs Energiesparen lege, ist das sogenannte 
TricklePower (SIRF Message 151) sehr interessant für mich. Damit kann 
man dem GPS Modul sagen, dass es regelmäßig schlafen gehen soll und nur 
kurze Zeit fürs Tracking aufwenden soll. Das heißt dann z.B. alle 10 
Sekunden für 300 ms tracken oder so.

Erste Probleme: Trotz gutem Fix (HDOP 2.0, 8 SVs) kommt er nach 1-2 
Trickle Zyklen wieder in den Continueos Mode (Er steht zwar auf Trickle 
Power, macht es jedoch nicht). Dem konnte ich nach einigem rumprobieren 
abhelfen, indem ich es einfach mal mit dem "simpelsten" Trickle Mode 
probiert habe, duty cycle 20% bei 200 ms On-Time, d.h. jede Sekunde 200 
ms on.

Nun fand ich es interessant, Genauigkeitsvergleiche anzustellen. Dabei 
beziehe ich mich jetzt nur auf den Platz auf meiner Terasse, welcher 
etwa 5 Meter vom Haus entfernt in einer Ecke ist, also schon 
verhältnismäßig gute Sicht liefert (geht man von einer Reallife 
Situation aus, in der z.B. auch mal ein Baum steht oder so). Continueos 
Mode liefert ein Positionssignal, welches laut Google Earth 5 Meter 
südlich und 50 cm westlich von der realen Position ist. HDOP 1.2-2.0 bei 
6-8 used satellites. Die Position befindet sich bei SirfDemo sehr gut im 
5-Meter Radius um den Ursprungspunkt, einen Großteil der Punkte würde 
ich sogar < 2m einstufen.

Schaltet man nun in den Trickle Power Mode, so hauen die Koordinaten 
langsam ab. Das dürfte mit dem TrackSmoothing zu tun haben, welches 
standardmäßig aktiviert ist (und ich eigentlich auch für sinnvoll 
erachte). Die "Endposition", welche sich nach etwa 15-20 Sekunden 
einstellt, liegt laut Google Earth rund 65 Meter von der realen Position 
entfernt, diesmal Nord-Östlich (jeweils etwa gleich), das wären rund 70 
Meter von der Continueos Mode Position. Dabei sind wir jetzt erst bei 
einem 200ms/20% Trickle Mode. Ich möchte garnicht wissen, wie das bei 
anderen Werten ist. 500/50 wäre vll nochmal interessant, aber ich war zu 
faul, weiter herumzuprobieren. Jedenfalls steht für mich nun fest: 
Trickle Power lohnt nicht. Was bringt mir eine Position, die so weit weg 
liegt? Okay, manch einem mag das reichen, aber wozu hab ich denn nen 
SIRF III :-)

Ich werde vermutlich ein manuelles Trickle Power benutzen. Wie ich schon 
schrieb geht ein "Kaltstart" (komplette Stromversorgung getrennt) einige 
Sekunden nach längerem Betrieb wunderbar. D.h. wenn ich nur 2 Punkte pro 
Minute brauche, dann trenne ich zwischendurch die Stromversorgung, warte 
nach dem Wiedereinschalten den Fix ab, verwerfe noch 2-3 Werte und nehme 
den danach.

Sooo, hoffentlich kann irgendjemand etwas mit meinem ganzen 
Geschriebenen anfangen. Es fasst in etwa das zusammen, was ich auch 
schon immer mal gesucht aber wenig/garnicht gefunden habe.

cu
Matze

Autor: Kai Franke (kai-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen Dank für den Bericht, spiele auch gerade mit einem GPS herum und 
hatte auch schon über Stromsparen nachgedacht. Nach deinem Bericht ist 
für mich klar: LiIon Akku mit 3,7V dran, der ist schön klein und hat 
über 1000mAh. Der hält dann über 10 Stunden und danach bekomme ich 
sowieso eine Frischluftvergiftung :P

Autor: Hugo Miller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt trickeln lieber gleich einen Empfaenger nehmen der von der 
Stromaufnahme besser ist. Einen Kaltstart zu machen hat nur dann Sinn 
wenn die Off-Zeit gross genug ist. Denn sonst wird der Stromspargewinn 
durch das Hochfahren des Empfaengers zunichte gemacht.
Der Skytraq ist da ganz ok, obwohl es dort auch eine Drift (oder hoehere 
Positionsungenauigkeit) gibt wenn der Empfang nicht gut ist. Ich glaube 
im Markt werden welche Angeboten.

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hugo Miller wrote:
> ...Einen Kaltstart zu machen hat nur dann Sinn
> wenn die Off-Zeit gross genug ist. Denn sonst wird der Stromspargewinn
> durch das Hochfahren des Empfaengers zunichte gemacht. ...

Die Erfahrung kann ich nicht bestätigen. Das Signal ist direkt nach dem 
Hochfahren zwar ungenauer, jedoch benötigt der Empfänger nicht bzw. 
höchstens kaum mehr Strom. Mein Sirf III ist eigentlich egal was er 
macht sehr konstant vom Stromverbrauch, schwankt vll um +/- 10 mA oder 
so.

Gleich nen Empfänger mit weniger Stromverbrauch nehmen ist leichter 
gesagt als getan :-) Fürs nächste Projekt ziemlich sicher, auch wenn ich 
ihn hier gebraucht hätte. Aber das ist alles so schön fertig auf ner 
Platine...

Autor: Hans Jelt (step_up_mosfet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
bei mir scheint Trickle Power zu funktionieren.

Wenn der Empfänger vorher kein Fix hatte bleibt er so lange im Continous 
Modus bis er das erste mal einen Fix bekommt, dann schaltet er sich in 
den Trickle Modus.

Das muss man nur ein mal einstellen und so lange er nicht aus geht 
(puffer-Akku) merkt er sich das auch.

Er würde eigentlich 142mA (ist konstant, egal wann und was man macht) 
ziehen, bei einem 1500mA Akku sind das 10,5 Stunden (0,44 Tage) 
Laufzeit.

Mit aktiviertem Trickle Power hält er ca. 150 Stunden (6,25 Tage) durch.
Er bekommt dann nicht mehr alle Satelliten die er im high-Power Modus 
empfängt, hier auf dem Fensterbrett sind das 4 anstatt 5 SV's.


Habt ihr irgend welche Hinweise für mich wie ich dem Empfänger mittels 
Sirf-Protokoll über einem Mikrocontroller sagen kann dass er in den 
Trickle Modus gehen soll?
Das mit dem Sirf-Protokoll bekomme ich irgendwie nicht richtig hin.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans Jelt schrieb:

> Er würde eigentlich 142mA (ist konstant, egal wann und was man macht)
> ziehen, bei einem 1500mA Akku sind das 10,5 Stunden (0,44 Tage)
> Laufzeit.

142mA kommt mir für einen Sirf3 relativ viel vor.
Mein SIRF3 (NL-302U aber ohne USB IC) zieht im Mittel etwa 60-70mA. Mit 
einem 1000mAh Akku komme ich damit etwa auf 14h.

> Habt ihr irgend welche Hinweise für mich wie ich dem Empfänger mittels
> Sirf-Protokoll über einem Mikrocontroller sagen kann dass er in den
> Trickle Modus gehen soll?
> Das mit dem Sirf-Protokoll bekomme ich irgendwie nicht richtig hin.

Message ID 151:
http://download.vincotech.com/positioning/document...

Autor: Hans Jelt (step_up_mosfet)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe 3 Stück dieser RGM2000 Module, also es ist kein sirf3 wie bei 
Matthias.
Es geht mir nur um die Verwendung dieser Trickle Power Option um die 
Akku Laufzeit zu verlängern.

Ich sende also
1. NMEA -> SIRF: ----------(als ASCII senden)------------------
$PSRF100,0,4800,8,1,0*0E

(alle Werte vorn sind hex-werte)
 ||
 \/
2. Trickle Power ON 10s/200ms: -----------(binär senden)----------------
A0A2 = Start-Zeichen
0009 = Länge des Payload (9 Byte)
97 = Message - Set Trickle Power (Payload)
0000 = kein Push to fix mode
0014 = 2% an bei 10sek Intervall
000000C8 = 200ms On-Time
0173 = Checksumme (97+14+C8)
B0B3 = Ende-Zeichen

0xA0A200099700000014000000C80173B0B3

Trickle Power OFF 1s/1000ms: -----------(binär senden)----------------
A0A2 = Start-Zeichen
0009 = Länge des Payload (9 Byte)
97 = Message - Set Trickle Power (Payload)
0000 = kein Push to fix mode
03E8 = 100% an bei 1sek Intervall
000003E8 = 1000ms On-Time
026D = Checksumme (97+3+E8+3+E8)
B0B3 = Ende-Zeichen

0xA0A2000997000003E8000003E8026DB0B3

3. SIRF -> NMEA: -------------(binär senden)---------------
A0A2 = Start-Zeichen
0018 = Länge des Payload (24 Byte)
81 = Message - Switch to NMEA
01 = disable NMEA Debug
01 = GGA Message jede 1s * 10(TriklePWR-UR) = 10s
01 = Sende Prüfsumme
00 = GLL Message
00 = keine Prüfsumme
00 = GSA Message
00 = keine Prüfsumme
00 = GSV Message
00 = keine Prüfsumme
00 = RMC Message
00 = keine Prüfsumme
00 = VTG Message
00 = keine Prüfsumme
00 = MSS Message
00 = keine Prüfsumme
00
00
00 = ZDA Message
00 = keine Prüfsumme
00
00
12C0 = 4800 Baud
0156 = Checksumme (81+1+1+1+12+C0)
B0B3 = Ende-Zeichen

0xA0A200188101010100000000000000000000000000000000000012C00156B0B3

Ist das so richtig?
Würde es so funktionieren?
Muss ich noch irgend etwas beachten?


@  Benedikt K.
Hast du den Trickle-Modus bei deinen NL-302U ausprobiert?
wie hoch ist der Stromverbrauch?


Meine Messungen:

Hab den Empfänger mit der SirfDemo ausprobiert, er braucht 142mA wenn er 
an (Continuos) ist. Wenn ich ihn aber in den TricklePower-Modus(alle 
10s, 200ms an) schicke braucht er nur 7mA und springt nach 10 Sekunden 
für 200ms(eingestellt) auf 142mA hoch.

142mA/(10000ms/200ms)=2.84mA (Integriert über den Zeitraum)
Das sind dann also ca. 3mA+7mA=10mA Stromverbrauch (durchschnittlich)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.