Forum: Mikrocontroller und Digitale Elektronik Differenz zwischen zwei Kursen


von Jan Gnublin (Gast)


Lesenswert?

Hallo ich programmiere gerade ein GPS-Navi, eine kleine Spielerei die 
ich im Flugzeug ausprobieren möchte. Es soll mir anzeigen, wie weit ich 
(Winkel) vom Sollkurs abweiche. Also positive Differenz für weiter 
"rechts" (größer) und negativ für weiter "links".

Kurs ist 0° für Norden, 90° für Osten, 180° für Süden, 270° für Westen 
und dann geht es über 359° wieder über die Null.

Wenn ich jetzt zwei Winkel von 0° bis 359° habe, also Sollkurs und 
Istkurs (Track über Grund), wie rechne ich dann die Differenz aus?

Einfach abziehen geht nicht. Das kleinere vom größeren Abziehen bringts 
auch nicht. Differenz nehmen und wenn größer als 180° 180° abziehen 
bringt auch keine richtigen Ergebnisse. Irgendwie steh ich auf dem 
Schlauch, auch wenn es wahrscheinlich ganz einfach ist. Der Engländer 
würde sagen, ich kann da gerade meinen Kopf nicht drumwickeln.

von Markus D. (mowlwurf)


Lesenswert?

Ich würd sagen, du musst prüfen, welche Weg auf dem Kompass von Soll- 
nach Ist-Winkel der kürzeste ist: mit oder gegen den Uhrzeigersinn. 
Dementsprechend ergibt sich dann das Vorzeichen.

von Karl H. (kbuchegg)


Lesenswert?

Jan Gnublin schrieb:

> Einfach abziehen geht nicht.

Doch.
Das ist dein erster Schritt.

Dann allerdings gehts noch weiter. Denn deine Abweichung kann nich 
größer als +180 bzw. kleiner als -180 sein. Kriegst du ein Ergebnis das 
ausserhalb dieses Bereichs ist, dann musst du es aufbereiten.

Dazu machst du die klar, dass es in einem Kreis bei 2 beliebigen Radien 
immer 2 Winkel gibt. Den einen, der zb im Uhrezeiger verläuft und den 
anderen, der entegegen dem Uhrezeiger verläuft. Aber egal wie die beiden 
Winkel auch sind, sie sind immer im Bereich 0 bis 360° und die Summe der 
beiden muss 360° ergeben (oder auf Deutsch: die beiden Winkel 
zusammengenommen bilden immer einen Vollkreis).

Mit diesem Wissen ausgerüstet, kannst du jetzt Ergebnisse größßer als 
180° bis kleiner als -180° entsprechend bewerten.

Bsp.
Dein Sollwinkel sei 359°. Du stellst aber einen Winkel von 5° fest. Wie 
groß ist die Abweichung (im mathematisch positiven Sinne).

Wie immer rechnen wir Abweichung als Ist-Soll. 5-359. Das macht -354. 
Die Abweichung kann aber nicht kleiner als -180 sein. Also rechnest du 
den Cowinkel aus: 360-354 = 6.   Ein positives Ergebnis, du bist also 
(von oben gesehen) zu weit 'im Uhrzeigersinn' und zwar um 6° daneben.

Dein Sollwinkel sei 5°. Du misst aber 358°. Wie gross ist die 
Abweichung?
358-5=353. Die Abweichung kann aber nicht größer al +180 sein. Also 
kommt wieder der Cowinkel zum Zug (der allerdings anders berechnet wird, 
weil das vorläufige Ergebnis positiv war): 353-360 = -7.  Die Abweichung 
ist -7°
1
   diff = ist - soll;
2
3
   if( diff < -180.0 )
4
     diff += 360.0;
5
6
   if( diff > 180.0 )
7
     diff -= 360.0;

: Bearbeitet durch User
von Kai S. (zigzeg)


Lesenswert?

Jan Gnublin schrieb:
> 180° abziehen

Immer Vielfache von 360 Grad abziehen / draufrechnen um in den 
gewuenschten Wertebereich zu kommen ! +/- 180 Grad gibt den Gegenkurs.

von Jan Gnublin (Gast)


Lesenswert?

Hallo Karl Heinz,

vielen Dank für diese sehr gute Erklärung, jetzt funktioniert es bei 
mir!

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.