Forum: Mikrocontroller und Digitale Elektronik GPS Distanz und Richtung mit AVR berechnen


von Axel R. (Gast)


Lesenswert?

Hi Leute,
nach dem sich mein Sohn mit der ganzen Schulklasse beim Wandertag im
Wald verlaufen hatte (sind aber doch noch alle heil zu Hause
angekommen) möchte ich ihm einen "Wegnachhausefinder" basteln.
NMEA Daten parsen ist ja kein Problem.
ABER:
Distanz und Richtung zum Abgespeicherten Wegpunkt berechnen...
Ich habe etwas gegurgelt udn das hier gefunden.
http://www.herrmann-w.de/Geocaching/Downloads/Richt.XLS
=SIN(G3*PI()/180)*SIN(G6*PI()/180)+COS(G3*PI()/180)*COS(G6*PI()/180)*COS 
((G4-G7)*PI()/180)
wird ua als Formel angegeben.
Was ein Polardreieck ist und das man "mal PI durch 180" rechnen muss,
habe ich auch verstanden.
Aber das ganze Sinus und Cosinus geraffel kann ich doch mitm Mega88
knicken, oder?
Also die Portierung der Excel Datei nach ASM oder besser nach C passt
doch im Leben nie nicht in 8K Flash.

Mein FastAVR Basic kann sogar die ganzen Winkelfunktionen - ob das
schnell genug geht?
Na - vielleicht hat ja jemand schonmal eine ähnlich Idee verfolgt und
kann was dazu sagen.
Sinuns und Cosinus kann man evtl. als Tabelle ablegen, Pi entsprechend
auf 4Byte skalieren. Mal sehn, wie schnell das ganze wird.
N4TXI wird sicher nichts dagegen haben, wenn ich mir die NMEA Parserei
aus seinem "WhereAVR" Projekt mal ausborge:-)

Viele Grüße
73 DG1RTO
AxelR.

von romanua (Gast)


Lesenswert?

Hallo,

>Pi entsprechend auf 4kByte skalieren.

Pi/2 reichen aus. Zwischen zwei Punkten kann man dazu linear
interpolieren. Welche Werte nehmen Gx an?

Gruss

von Axel R. (Gast)


Lesenswert?

Hi,

in der Spalte "G" sind die Breiten und Längengrade als Dezimalzahl
hochgerechnet. Aus zB.
A3 |B3 |C3
---+---+---
51°|14'|4,2"
---+---+---
 wird dann in Zelle "G3"
via A3+B3/60+C3/3600
 51,2345
Länengrade ebenso - nur das wir uns hier nicht um 50 rum bewegen,
sondern "nur" um 12-13-14 Grad (glaube ich).
Das ist aber nur die Entfernungsberechnung, der Kurs ist dann doch noch
ein Zacken schärfer :-))
Ich würde das schon gern in WinAVR machen, schon damit auch mal ein
anderer draufsehen kann. Leider habe ich da noch keine Erfahrungen.
WinAVR ist zwar eingerichtet und comiliert auch alles ordentlich. Was
ein Makefile ist, weiss ich auch. Aber sonst muss ich mich erstmal
belesen. PI(), SIN() usw. wird es ja in C geben, denke ich.
Muss halt nur schauen, welche *.h ich da einbinden muss.
Na, wird schon werden; N4TXI hat ja gezeigt, wie - und das - es geht.

mny tnks an dieser Stelle gg

Sonst muss ich es mit FastAVR machen grusel .

Gruss zurück

AxelR.

von Bernhard S. (bernhard)


Lesenswert?

Hallo Axel,

zu diesem Thema habe ich mir auch schon Gedanken gemacht und ein
einfaches Rechenverfahren genutzt, um die Entfernung zw. zweich
Punkten hinreichend genau zu bestimmen.

http://www.mikrocontroller.net/forum/read-4-354990.html

Ein ATmega8 mit 8k Flash erfüllt die Aufgabe ganz ordentlich.

Bernhard

von Axel R. (Gast)


Lesenswert?

Heftig!

!!RESPEKT!!

und vor allen Dingen: fertig geworden!

Vielen herzlichen Dank, werde ich mir mal genauer ansehen...

Gruß
AxelR.

von Bernhard S. (bernhard)


Lesenswert?

@AxelR

>Vielen herzlichen Dank, werde ich mir mal genauer ansehen...

Dieses Projekt wurde zwar in Assembler geschrieben, aber ich habe
versucht, den Rechenweg vernünftig und nachvollziehbar zu
dokumentieren.

Bernhard

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.