[solved] Kompassausrichtung mit Tara-Funktion

Folgende Problemstellung:

Ich habe einen Kompasswert der von 0-359° geht. Angesteuert werden soll damit ein Servo der von 0-359° geht.
Wäre ja bis dahin kein Problem, aber ich hätte auch gerne eine Tara Taste.

Gedacht war das ganze hinterher so:
(In BLAU ist der derzeitige Beispielmesswert markiert)

  1. Kompasswert= 0.....................................300.........359
  2. Tara Taste wurde aktiviert
  3. Kompasswert= -180..................0......................+180

Irgendwie steh ich gerade auf dem Schlauch und weiß nicht so recht wie ich es angehen soll. Für Tipps wäre ich sehr Dankbar.

Aus einem Wert 0 .. 359 einen zwischen -180 und +180 zu machen, ist wohl nicht dein Problem
x-180 :wink:

Erkläre bitte genauer, evtl. bin ich nicht der einzige, der's nicht versteht.

Woher und wie kommt der Kompasswert?

Der Servo wird wie angesteuert ?

Was soll sich genau ändern?

Willst du bei einem Steuerruder zwischen KompassKurs und relativer Richtung (0 = gradeaus) umschalten?

Welchen Servo 0-359° verwendest Du? Das frage ich aus Interesse für mich.

Meinst Du das so?
120 ... 300 ... 480(360+120)
-180 ... 0 ... +180

(mit einer Genauigkeit von +-1, da muß man nochmal drüber nachdenken)

@agmue
Es ist ein Hitec Digital Servo, der auf 360° umprogrammiert wurde.

Außerdem hängt er an einem Getriebe, wobei der ServoPoti (welcher für den momentanen Ist Wert zuständig ist) an der Lastachse befestigt.

Also wenn ich dem Servo mitteile er soll auf 90° fahren, so muss er viele Umdrehungen leisten (wegen dem Getriebe) bevor er von seinem Poti mitgeteilt bekommen hat das er auf 90° ist.

Ich habe 3 unterschiedliche Digitalservos verbaut, die alle mit Getrieb und rausgeführtem Istwert Poti laufen.

So back to topic....

Die Kompass Werte kommen via bluetooth vom Smartphone. Angesteuert werden soll damit ein 3-Achsen Kamera-Motorstativ welches aus der Startstellung 180° nach links oder rechts fahren kann.

(Bisher läuft, das wenn ich das Handy nach vorne oder hinten kippe, die Kamera dem Winkel folgt.
Auch wenn ich das Handy drehe (Hoch/Quer), folgt die Kamera diesem Winkelspiel.)

Nun würde ich es noch gerne darum erweitern das es auch meiner Drehung folgt.
Wenn ich nun die Tara Taste drücke soll meine aktuelle Himmelsrichtung als Mitte festlegt werden, von der ich mich 180° nach links und 180° nach rechts drehen kann.

Der Servo wird mit einer Servo Libary angesteuert. Dieser erwartet einen Wert zwischen 0-360°, wobei 180° mein Mittelpunkt sind.

Ich hoffe es ist jetzt verständlicher worauf ich raus will.

PS: Demovideo des Stativs.

michael_x:
Aus einem Wert 0 .. 359 einen zwischen -180 und +180 zu machen, ist wohl nicht dein Problem
x-180 :wink:

Bisher sieht es ungefähr so aus:

wenn Tara gedrückt DANN {korrekturwert = kompasswert;}
gewünschterwert = kompasswert - korrekturwert;
wenn gewünschterwert < 0 Dann {gewünschterwert = gewünschterwert + 360}

Ist aber auch nicht passend, da ich so nach dem Tara einen Wert von 0 habe der ich eine Richtung hoch läuft, aber in die andere Richtung gleich als nächsten Schritt 359...358...etc.

Ich hätte aber lieber 180° als Wert nach dem Tara, und von diesem +- 180° - je nach Drehrichtung...

Du speicherst den Nullwert ab und subtrahierst ihn vom Meßwert. Dann ziehst Du 180 ab. Ist der Wert dann kleiner als -180 addierst Du 260 360.
Grüße Uwe

Olvo:
@agmue
Es ist ein Hitec Digital Servo, der auf 360° umprogrammiert wurde. ...

Danke!

So eine ungetestete Idee, den Überlauf einer Integer-Variablen zu nutzen:
int Kompasswert = (aktWert - taraWert) * 182 / 182
32768/180=182

Bei Rechenungenauigkeiten nimm lieber Uwes Vorschlag, der wohl 360 anstelle 260 meint.

Vielen Dank für eure Hilfe. Es ist uwefed´s Vorschlag geworden, mit einer leichten Modifizierung. Läuft damit fast einwandfrei. Hier und da ist noch etwas feinschliff zuerledigen, aber es läuft.

Dankeschön.