GPS Bogensekunden

Gast #2021144
Lesenswert?

Hallo,
ich sitze gerade vor folgendem Problem:
Ich möchte die Breite und Länge auf einem LCD Display anzeigen.
Soweit funktioniert das auch super. Nur die Werte für die Bogensekunde 
stimmen überhaupt nicht.
(empfange 12Satteliten davon 10 fix)
Wo mache ich da etwas falsch?
Gruß Dirk

Auszug Header
typedef struct{
  uint8_t    Grad;
  uint8_t    Bogenminuten;
  uint16_t           Bogensekunden;
  uint8_t    NS;
}TBreite;

Auszug Main
Font_SetPos(2,40); // Anzeige Position festlegen
printf("Breite   %02d.%02d.%02d.%c",
         GPS_Daten0.Breite.Grad,
  GPS_Daten0.Breite.Bogenminuten,
  GPS_Daten0.Breite.Bogensekunden,
  GPS_Daten0.Breite.NS);

Font_SetPos(2,50); // Anzeige Position festlegen
printf("Laenge %02d.%02d.%02d.%c",       GPS_Daten0.Laenge.Grad,
  GPS_Daten0.Laenge.Bogenminuten,
  GPS_Daten0.Laenge.Bogensekunden,
  GPS_Daten0.Laenge.WE);
Gast #2021156
Lesenswert?

>Soweit funktioniert das auch super. Nur die Werte für die Bogensekunde
>stimmen überhaupt nicht.

Woher weisst du das? Was erwartest du und was wird angezeigt?

>Wo mache ich da etwas falsch?

Beim einlesen der Bogensekunden?

Sorry, zu wenig Infos.
#2021164
Lesenswert?

Dirk schrieb:
> Hallo,
>
> der Code ist von Marc Seiffert.
> nähere Infos hier
>
> Beitrag "GPS-Parser für XMEGA"
>
> Gruß Dirk

Da kommen aber deine Variablen und Strukturen gar nicht vor!

So wirst du dir nicht viele Helfer finden, wenn sich die Helfer erst mal 
alles aus 25 Quellen zusammensuchen müssen, um dann die noch fehlenden 
Details zu erraten um daraus dann eine Hypothese abzuleiten, was du wohl 
alles falsch gemacht haben könntest.
Gast #2021172
Lesenswert?

>  Ziel->Breite.Bogensekunden     = (Quelle[18]-48)*1000;
>  Ziel->Breite.Bogensekunden    += (Quelle[19]-48)*100;
>  Ziel->Breite.Bogensekunden    += (Quelle[20]-48)*10;
>  Ziel->Breite.Bogensekunden    += (Quelle[21]-48);

Liefert dein GPS vier Stellen für die Bogensekunden?

Hast du mal einen Terminal Mitschnitt vom GPS?
Gast #2021180
Lesenswert?

Hi

>der Code ist von Marc Seiffert.
>nähere Infos hier

>Beitrag "GPS-Parser für XMEGA"

>Gruß Dirk

Das ist Müll. Die Stellen nach dem Komma müssen mit 60 Multipliziert 
werden. Der Intergerteil davon sind die Minuten. Der Nachkommateil davon 
x 60 ergibt die Sekunden.

MfG Spess
Gast #2021183
Lesenswert?

Denke mal ja

holger schrieb:
>>  Ziel->Breite.Bogensekunden     = (Quelle[18]-48)*1000;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[19]-48)*100;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[20]-48)*10;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[21]-48);
>
>
>
> Liefert dein GPS vier Stellen für die Bogensekunden?

$GPRMC,215359.000,V,0000.0000,N,00000.0000,E,000.0,000.0,170111,,,N*78
$GPVTG,000.0,T,,M,000.0,N,000.0,K,N*02
$GPGGA,215400.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*6F
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30
$GPGSV,1,1,02,15,00,000,31,24,00,000,33*7B

soeben Mitgeschnitten. Ist zwar null Empfang (Fenster zu Rollo runter)
aber das tut ja nichts zur Sache.

Dirk
Gast #2021184
Lesenswert?

>Angezeigt wird
>
>Breite xx.xx.6837.N
>
>richtig wäre aber
>
>Breite xx.xx.4926.N   (laut Google Earth)


Ach Mann, das ist doch wieder das Ding mit den
Nachkommastellen. Das sind keine Sekunden sondern
Bruchteile von Minuten. Umrechnung: bemühe die Forensuche.
Gast #2021188
Lesenswert?

>soeben Mitgeschnitten. Ist zwar null Empfang (Fenster zu Rollo runter)
>aber das tut ja nichts zur Sache.

Klaro, wenn mein Fernseher nicht an ist kann ich dir
sagen welches Programm eingeschaltet ist. Pappnase;)
#2021206
Lesenswert?

Dirk schrieb:
> @Holger
>
> der Mitschnitt war nur auf die Anzahl der Stellen für die Bogenkunde
> gedacht.
> Wie gesagt wenn der Empfänger draußen liegt empfange ich 12Satteliten
> davon 10 fix.

Dann mach draussen einen Mitschnitt und sieh dir an, was denn nun 
richtig ist.

Je nach verwendetem Erd und Kartenmodell können GPS Koordinaten 
nämlich durchaus von anderen veröffentlichten Daten abweichen.

D.h. wenn du vergleichen willst, dann Vergleich deinen Mitschnitt mit 
deiner Anzeige. Die müssen übreinstimmen. Aber Vergleich nicht mit einer 
Quelle, bei der du nicht weißt, wie die Daten aufbereitet wurden.
Gast #2021254
Lesenswert?

holger schrieb:
>>  Ziel->Breite.Bogensekunden     = (Quelle[18]-48)*1000;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[19]-48)*100;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[20]-48)*10;
>
>>  Ziel->Breite.Bogensekunden    += (Quelle[21]-48)*60;

Dann wäre es ja so oder stehe ich jetzt ganz auf dem Schlauch.

Dirk
Gast #2021273
Lesenswert?

>Breite xx.xx.6837.N
>richtig wäre aber
>Breite xx.xx.4926.N   (laut Google Earth)

Mal so als Hinweis:

Breitengrade:

1° = 111,1  Kilometer
1' =   1852 Meter
1" =  ~  31 Meter

Und jetzt kannst du mal die angebliche Differenz ausrechnen.
Gast #2021332
Lesenswert?

Dirk schrieb:
> holger schrieb:
>>>  Ziel->Breite.Bogensekunden     = (Quelle[18]-48)*1000;
>>
>>>  Ziel->Breite.Bogensekunden    += (Quelle[19]-48)*100;
>>
>>>  Ziel->Breite.Bogensekunden    += (Quelle[20]-48)*10;
>>
>>>  Ziel->Breite.Bogensekunden    += (Quelle[21]-48)*60;
>
> Dann wäre es ja so oder stehe ich jetzt ganz auf dem Schlauch.
>
> Dirk

Vorher wars richtig, entferne deine Verschlimmbesserung besser wieder.

Die Abweichung von der Googleposition hat nichts mit einem 
Umrechnungsfehler von Dezimalsekunden in Sekunden zu tun. Google benutzt 
wohl einfach ein anderes oder abgewandeltes geodätisches Referenzsystem 
und verursacht dadurch in deinem Fall eben eine Abweichung von 350 
Metern.

Habe grade mal nachgeschaut, Google werwendet eine einfache 
Zylinderprojektion mit dem WGS84 Referenzelipsoid, was die Unterschiede 
schon erklären könnte.

Das kannst du dir vereinfacht in etwa so vorstellen als das die Erde als 
Kugel (Elipsoid) angenommen wird und darauf eine Kartenhaut gespannt 
wird. Was dabei vernachlässigt wird ist die Tatsache das die Erde an 
manchen Stellen etwas höher, an anderen etwas tiefer ist. Durch diese 
Verzerrungen stimmt die Kartenhaut zwar an den meisten Stellen so 
ungefähr, sitzt aber manchmal doch etwas daneben.

Der Fehler kommt also nur daher das Google Earth die Luftbilder nicht 
exakt auf die Erde abbildet.
Als Beispiel hierfür kann man sich z.B. mal den 50. Breitengrad in der 
Mainzer Innenstadt in Google Earth anschauen ( 49°59'56.00"N, 
8°16'16.10"E ), der liegt auf den Bildern auch 4 Sekunden bzw. 120m 
daneben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren