Winkelberechnung mit Arduino UNO

Moin moin aus HU.
ich habe nicht geglaubt, dass ich mich mit 68 Jahren noch mal mit Winkelberechnungen rum schlagen muss.
Konstellation:
Ich habe einen Scanner mit waagerechter variabler Entfernung des Scann Objekts.
Die Kamera sitzt auf dem senkrechten Balken mit variabler Höhe.
Problem:
Ich möchte, dass die Kamera automatisch in festen Höhen abhängig von der Höhe des Scann-Objekts und der Entfernung einen Bogen fährt, um das Objekt aus allen Richtungen zu scannen.
Dazu muss der Uno den Winkel für die Kamera berechnen.
Ich würde die Kamera waagerecht zum Start auf das Objekt ausrichten. Danach soll die Kamera nach unten fahren und nach oben fotografieren. Danach ein Stück höher, den Winkel einstellen und Fotos machen.

Irgendwie bin ich zu alt oder zu blöd, die entsprechende Winkelberechnung zu machen.
Es versteht sich von selbst, dass das Objekt sich beim Fotografieren um 360° dreht. Kann mir jemand die Formel für den Arduino erstellen. Das in Schritte um zu wandeln ist dann kein Problem.
Liebe Grüße an die Mathematiker hier im Forum.

Viel Hilfreicher als ein Photo des Bedienpanels wäre eine Skizze deines Aufbaus.
In welche Richtung fährt die Kamera? Wo ist das Objekt? Wo sind die Winkel, die berechnet werden müssen? Aus deiner Beschreibung wird nicht klar, wie die Kamera fährt. Zum einen soll sie einen 360° Bogen machen, zum anderen fährt sie Hoch und runter also auf einer Geraden. Was denn nun?

Das Objekt ist auf einem Schlitten in der Waagerechten montiert und kann da gedreht werden. Die Kamera sitzt auf einem senkrechten Schlitten mit Stepper verfahr bar. Die Kamerahalterung kann mit einem Stepper gekippt werden.
Nun soll die Kamera auf der Senkrechten stückweise nach oben fahren und so ausgerichtet werden, dass sie immer auf das Objekt zeigt, also um das Objekt einen senkrechten Bogen fährt. Es ist damit immer eine Berechnung eines rechtwinkligen Dreiecks.

Das da keine 360° möglich sind, erklärt sich von selbst. Das Objekt dreht sich beim Fotografieren um 360°.

Jetzt ist alles klarer. Mit Skizze ist das kein Problem. Die Lösung ist der Tangens s ist horizontaler Abstand zum Drehteller, h ist die Kamerahöhe, phi ist der Winkel um den, die Kamera nach unten gekippt werden muss.

Danke für die Antwort. Bei einer Höhe von 10 und einer Entfernung von 20 komme ich auf einen Wert von 0,5. Soweit war ich bisher auch schon. Wie komme ich jetzt auf den Winkel von 63,4°. Grafisch ermittelt.

Hallo,

du nimmst den tangens von h / s (Gegenkathete durch Ankathete) = 10 / 20 = 0,5 und davon den Tangens = 26,565°
Der gesuchte Winkel im Bild links oben ist gleich groß.

Doc_Arduino:
Hallo,

du nimmst den tangens von h / s (Gegenkathete durch Ankathete) = 10 / 20 = 0,5 und davon den Tangens = 26,565°

Arkustangens doch eher, oder?

Hallo,

wenn damit der Cotangens gemeint sein soll, bleibe ich bei nein. Außer du vertauscht die Gegenkathete mit der Ankathete, dann stimmt auch das wieder. Obiges Bild neu gezeichnet. Man hat 2 Möglichkeiten.
tangens (@) = b/a oder cotanges (@) = a /b
Auf Grund des rechtwinkliges Dreiecks und Höhe kleiner Abstand (10/20) muss der Winkel kleiner 45° sein.
Wäre Höhe und Abstand gleich groß, dann wäre der Winkel 45°.

Doc_Arduino:
wenn damit der Cotangens gemeint sein soll, bleibe ich bei nein.

Nein, meist meine ich das was ich schreibe nämlich genau den Arkustangens.

Du errechnest zwar den Wert des Tangens, willst aber den dazu gehörenden Winkel wissen.
Dazu benötigst du die eingeschränkte Umkehrfunktion von Tangens namens Arkustangens.

Hallo,

ja stimmt, Punkt für dich. :slight_smile:

Bei der Berechnung muss der Winkel größer 45° sein. Grafisch im CAD Programm 63,4°.
Arkustangens kann aber der Arduino nicht.
Ich bekomme aber bei der Berechnung mit dem WIN Rechner mit TAN nur Werte kleiner 1 raus.

fridi:
Arkustangens kann aber der Arduino nicht.

Woher beziehst du diese Fehlinformation?

void setup() {
  Serial.begin(250000);
  Serial.print(F("Arkustangens von 0.5 ist "));
  Serial.print(atan(.5));
  Serial.print(F(" das entspricht "));
  Serial.print(atan(.5) * 360 / (2 * PI));
  Serial.println(F(" Grad"));
}
void loop() {}
Arkustangens von 0.5 ist 0.46 das entspricht 26.57 Grad

Hallo,

gut, dann haben wir aneinander vorbei geredet, Du suchst den Winkel gegenüber von alpha. Wäre dann 90° abzüglich des berechneten Winkels. Sorry. arctan (@) = a/b = Abstand/Höhe, dann musste nichts von 90° abziehen.

Mich machen nur die unterschiedlichen Werte stutzig.
Mein Taschenrechner sagt mir von arctan () = 20/10 = 63,43°
Der Windows 10 Rechner sagt mir 70,48°.
Arduino ermittelt 26,57°, was im gleichen Kontext bezogen 90-26,57 = 63,43° entspricht.
Was zur Hölle macht der Windowsrechner? Oder bedien ich den falsch?
wissenschaftlich > 2 > Pfeil nach oben > tan^-1

Edit:
wegen Win Rechner, hatte ausversehen zwischen RAD und GRAD umgeschalten, dass Problem sitzt immer vorm Rechner :slight_smile:

Mein Windows 7 Calc hat keinen atan, dafür tanh.

Vielleicht hast du Deg/Rad/Grad (oder wie es bei dir heißt) unglücklich ausgewählt.

Hallo,

ja genau, da bin ich ausversehen draufgekommen. Wenn du in den wissenschaftlichen Modus gehst, sollte eine Taste mit Pfeil nach oben auf dem Tastenfeld sein. Die heißt invers Taste oder so ähnlich. Dann ändern sich die anderen Tastenbeschriftungen und es sollte tan-1 sichtbar sein. Probier mal ... wissenschaftlich > 2 > Pfeil nach oben > tan^-1

Edit:
nicht oben die HYP Funktion aktivieren!, dann wechselt es zwischen tan und tanh

Ich liebe meinen einfachen Schulrechner. :slight_smile:

Whandall:
Mein Windows 7 Calc hat keinen atan, dafür tanh.

Tanh ist der Tangens hyperbolicus. Das ist eine wenig benutzte Funktion. Du musst im Rechner auf drücken. Dann berechnet er die inversen Funktionen (=Umkehrfunktionen).

Ok, das unscheinbare Inv hatte ich bisher übersehen. :wink:

Danke, Leute. Ihr habt mir sehr weitergeholfen. Bin natürlich bei der Variable in die INT Falle gelaufen. Welche Variable soll ich nehmen. Habe jetzt eine float Variable generiert.

Hallo,

float ist schon richtig für Kommazahlen, alles andere sind Ganzzahldatentypen.

Hallo,

muss jetzt nochmal nachfragen. tan liefert den tangens und atan liefert den Winkel. Nur leider liefert die Funktionen nur das Bogenmaß von dem Winkel. Deswegen musste Whandall das Ergebnis nochmal weiter behandeln. Das irretiert mich jetzt. Liefern alle Winkelfunktionen auf einem µC nur das Bogenmaß des Winkels zurück? Ich meine das steht zwar im direkten Zusammenhang, nur ist eben ein Bogenmaß nicht der Winkel. Versteht ihr meine Frage?