mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sinusberechnung mittels µC


Autor: ulrich strobel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey hallo, hat von euch einer ne ahnung wie man mit nem atmel ne sinus 
cosinus tangens und das gleiche rückirkend machen kann? hab den ganzen 
tag getüfftelt und fand keine lösung. wäre echt mal genial

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Ulrich

Entweder mit einer Taylorreihe das ist aber sehr rechenaufwendig
oder mit einer Tabelle(da kann man die Symetrien die bestehen)
ausnutzen
CU Wolfram

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wo ist dein Problem dabei?
3 Möglichkeiten:
1.Compiler benutzen, i.a. unterstützen die trig. Funktionen
2. Funktion z.B. von Excel berechnen lassen, die Ergebnisse in 
gewünschter Abstufung und Genauigkeit als Tabelle im Prozessor 
abspeichern
3. passende Assemblerroutinen suchen (selbst schreiben dürfte langwierig 
werden)

Variante 1 ist vorzuziehen, arbeitet auch genauer, allerdings ist ein 
Zugriff auf eine fertige Tabelle viel schneller, braucht aber viel 
Speicher (Beispiel 16bit Genauigkeit, Winkelauflösung 0,1° -> 1800 
byte).
Du brauchst allerdings nur einen Quadranten abzuspeicher, den Rest kann 
man einfach daraus ableiten.
Ich hatte mal so ein Beispiel bei einem Rundlaufmeßgerät, als 
Eingangsgrößen ein Winkelenkoder und ein berührungsloses 
Abstandsmesssystem, Ausgabemedium war ein xy-Schreiber, der ein 
Polardiagramm zeichnen sollte, und das in Echtzeit. Daß habe ich aus 
Zeitgründen mit einer Tabelle gemacht.

Autor: ulrich strobel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tya geht leider nicht, soll eine nc bohrmaschine werden die das 
excellon-format (Bohrdaten) in echtzeit auf zwei winkel um ememuliert, 
wo könnte man da passende assemblerroutinen finden? oder wie könnte sie 
selber erstellen? finde keine mathematische lösung?

Autor: Oliver K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn Dein Problem?

Die Tabellenlösung mit Ausnutzung der Symetrie ist das Schnellste, was 
man bekommen kann. Zwischenwerte (Xi), die nicht in der Tabelle 
aufgeführt sind, werden folgendermaßen ermittelt:
f(Xi) = (f(Xi-1) + f(Xi+1)) / 2
Da man in Assembler in der Regel nur mit Ganzzahlen arbeitet, muß man 
halt die Funktionswerte mit einem Faktor multiplizieren. So ist der 
sin(90) also nicht 1, sondern z.B. 100.

Technisch praktisch wird bei Compilernroutinen so eine Funktion immer 
durch ein Polynom n-ten Grades hinreichend approximiert. Der 
Funktionswert wird dann sehr schnell durch das Horner-Schema ermittelt.

Grüße
Oliver

Autor: Gerhard Humer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Ulrich

in Bascom gehts ganz einfach

Dim A as Single
Dim B as Single
Dim C as Single
A = 10          'Winkel
B = Deg2rad(a)  'Umrechnung ins Bogenmass
C = Sin(b)      'und das ist der Sinus von A


Gruss Gerhard

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Das geht auch mit dem sog. CORDIC - Algorithmus. Einfach mal danach 
googeln. Man kann damit iterativ trigonometrische Funktonen berechnen 
und braucht im Wesentlichen nur Additionen und Shift - Operationen.

Wurde früher in Kampf-Flugzeugen zur Navigation verwendet...

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.