Forum: Mikrocontroller und Digitale Elektronik GPS Bogensekunden


von Dirk (Gast)


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);

von holger (Gast)


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.

von Spess53 (Gast)


Lesenswert?

Hi

Eigentlich wäre die Berechnung interessant.

MfG Spess

von Dirk (Gast)


Lesenswert?

Hallo,

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

Beitrag "GPS-Parser für XMEGA"

Gruß Dirk

von Karl H. (kbuchegg)


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.

von Dirk (Gast)


Lesenswert?

Angezeigt wird

Breite xx.xx.6837.N

richtig wäre aber

Breite xx.xx.4926.N   (laut Google Earth)

Gruß Dirk

von holger (Gast)


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?

von Spess53 (Gast)


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

von Dirk (Gast)


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

von holger (Gast)


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.

von holger (Gast)


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;)

von Spess53 (Gast)


Lesenswert?

Hi

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

Richtig.

MfG Spess

von Dirk (Gast)


Lesenswert?

@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.

Dirk

von Spess53 (Gast)


Lesenswert?

Hi

Das ändert nichts daran, das die Berechnung in deiner Vorlage falsch 
ist.

MfG Spess

von Karl H. (kbuchegg)


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.

von Dirk (Gast)


Lesenswert?

Hallo

ist ca. 30km daneben. Die Berechnung ist also nicht ganz richtig 
(falsch)

Danke für Eure Hilfe.

Dirk

von holger (Gast)


Lesenswert?

0.6837 * 60 = 41 Sekunden

Gib das mal als Sekunden ein.

von Spess53 (Gast)


Lesenswert?

Hi

>0.6837 * 60 = 41 Sekunden
>Gib das mal als Sekunden ein.

0.6837 x 60 = 41.022 Minuten

0.022 x 60 = 1,32 Sekunden

MfG Spess

von Spess53 (Gast)


Lesenswert?

Hi

Holger hast Recht: Nur Nachkommastellen x 60 = Sekunden

MfG Spess

von Dirk (Gast)


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

von Matthias L. (Gast)


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.

von Mir ist eh langweilig und ich kann nicht schlafen (Gast)


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.

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.