www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Winkelberechnung mit PIC


Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!!!
Ich will mit meinen PIC (18f448) und dem CCS Compiler den Winkel Alpha 
eines Rechtwinkligen dreiecks zu berechnen!!
Die formel: tan^-1(Gk/Ak)
Das Problem:
Wie machen ich das mit dem CCS Compiler der hat doch nur sin, cos, tan 
funktionen, aber wie binde ich das Tangens hoch minus eins ein???

Bitte um Hilfe
MFG

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was du brauchst ist die arctan Funktion. Wenn die nicht in deiner LIB 
ist must du sie dir per Tailorreihen entwicklung selber berechnen.

Hier zu der passende Link:
http://de.wikipedia.org/wiki/Arkustangens_und_Arkuskotangens

Gruss Helmi

Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe diese funktion hier:
atan - returns the arc tangent value in the range [-pi/2,+pi/2] radians

Is das das richtige???
mfg

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja wenn dir der Argumentbereich der Funktion reicht. Sonst suche mal ob 
du eine atan2 Funktion findest die geht dann ueber den vollen Bereich.
Bedenke auch das diese Funktionen nicht Grad sondern RADIANT ausgeben.

Gruss Helmi

Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was heist das den wider??
Und warum sollte der Bereich nicht ausreichen??
Und ja so ne funktion hab ich auch:
atan2  -- returns the arc tangent of y/x in the range [-pi,+pi] radians

mfg

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was heist das den wider??
>Und warum sollte der Bereich nicht ausreichen??
>Und ja so ne funktion hab ich auch:


Die atan funktion ist nur fuer den 1. Quadranten die atan2 Funktion fuer 
alle 4 Quadranten. Deshalb braucht die atan2 Funktion ja auch den x und 
denn y Wert um sich den Quadranten ausrechnen zu koennen. Bei der atan 
funktion uebergibst du ja nur 1 wert und dann ist der quadrant wo das 
ergebnis liegt unbestimmt.

Gruss Helmi

Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut das heist wenn bei meim Dreieck die Gk 4cm und die Ak 2cm lang sind 
gebe ich das folgendermasen ein:

Winkel = atan2(4,2);

Stimmt das so??

Autor: jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann hast du bestelfalls den Winkel im Bogenmaß (rad)

Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung das ich mich hier so blöd anstelle, aber was ist ein 
bogenmaß?
Und wie rechne ich das in nen Winkel um??

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
* 180/pi

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ipirk wrote:
> Entschuldigung das ich mich hier so blöd anstelle, aber was ist ein
> bogenmaß?
> Und wie rechne ich das in nen Winkel um??

Bogenmass ist auch ein Winkel, nur eben in Radian ausgedrückt und nicht 
in Grad.

Bogenmass geht von 0 bis 2*Pi
Grad von 0° bis 360°

Folglich: Grad = Bogenmass*180/Pi

Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
teile das Ergebnis der Atan oder Atan2 Berechnung durch PI und nimms 
dann mit 180 mal. Dann hast du's in Grad.

{
   float Winkel_in_grad;
   const PI = 3.1415926;
   Winkel_in_grad = 180.0 * ATAN2(Ankathete,Gegenkathete) / PI;

//   Winkel_in_grad = 180.0 * ATAN(Ankathete / Gegenkathete) / PI;



}

Bogenmass ist (Winkel_in_grad * PI / 180.0)

Autor: Helmi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gut das heist wenn bei meim Dreieck die Gk 4cm und die Ak 2cm lang sind
>gebe ich das folgendermasen ein:

>Winkel = atan2(4,2);

>Stimmt das so??

Ja

Gruss Helmi

Autor: ipirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Asoooooo!!! --- Eh so einfach :-)

Die richtig schreibt man das also so (um als Ergebnis das:

Winkel =((atan2(4,2))*180/3);

3 steht probeweise für PI

Danke an alle die geholfen haben!!!!
mfg

Autor: Severino R. (severino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter X. wrote:

>    Winkel_in_grad = 180.0 * ATAN2(Ankathete,Gegenkathete) / PI;
>
> //   Winkel_in_grad = 180.0 * ATAN(Ankathete / Gegenkathete) / PI;

Hast Du nicht Ankathete und Gegenkathete vertauscht?

Autor: Peter X. (vielfrass)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
UPS...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.