mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Multiplizieren, Potenzieren und Wurzel ziehen


Autor: Wolfram Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie gross in etwa ist der Codeaufwand in C für die folgenden
Rechenoperationen bei den AVRs:

Multiplizieren bei den AVRs, die nicht multiplizieren können
Potenzieren
Wurzel ziehen

Andersrum gefragt: Wie wandelt man die analoge Größe eines
Temperaturfühlers mit E-Funktion-Kennlinie in digitale Werte um?

MfG

Wolfram Hubert

Autor: Gralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da es speziell um diesen Fühler geht, würde ich einmal die Kennlinie
aufnehmen, die Werte extern errechnen und dann eine Look-up-Tabelle
benutzen. Das ist zum einen weniger Codeaufwand und benötigt auch
weniger Rechenkapazität.
Beispiele für Multiplikationsroutinen gibt es in den App-Notes von
Atmel. Sind zwar in Assembler, aber die kann man bestimmt in C
einbinden (kenne mich mit C nicht aus).

Wurzelziehen allgemein ist schon der Hammer. Denn ein diskretes
Wurzelziehen wird auf Divisionen zurückgeführt (wenn mich meine
Mathekenntnisse nicht im Stich lassen). Wenn der µC auch keine
Divisionen kann, so muß auch das in Subtraktionen umgewandelt werden.
Wer da bei 10bit-Werten (ADC) noch den Durchblick behält... Hut ab!

Wenns dann doch allgemein bleiben soll, würde ich einfach mal
betreffend Mathegrundlagen googlen. Irgend ne Uni bietet da bestimmt
fertige Gleichungen, die man nur auf C konvertieren muß.

Viel Spaß
Gralf

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wurzelziehen kann man mit einer Iteration. Hatte ich vor zig Jahren mal
im EDV-Unterricht, kann mich aber nur Bruchstückhaft erinnern.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
typisches Beispiel für eine Hochsprache :-)
Geht aber auch in Assembler, wenn man irgendwo die Routinen dafür
findet. Selber schreiben ist relativ zeitaufwändig und fehleranfällig.
Habs gerade mal in C probiert, die Wurzel aus einer float-Zahl braucht
6400 Takte.

Für Kennlinienlinearisierung ist i.a. eine Tabelle besser geeignet. Muß
nicht für jedes Argument einen Funktionswert enthalten (will man z.B.
den kompletten A/D-Bereich in einer Tabelle abbilden, sind das eben mal
ca. 2kB nur für die Tabelle).
Besser wirds, wenn man sich sich in gewissen Abständen Stützpunkte
abspeichert, dazwischen linear interpoliert. Je mehr Stützpunkte, je
genauer.

Autor: Wolfram Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gralf,

die Variante mit einer Tabelle kann mein Problem lösen. Mir kommt
bezüglich der Tabellengröße sehr entgegen, dass ich einen
Temperaturumfang von 50 Grad Kelvin (0 Grad Celsius bis 50 Grad
Celsius) nur erfassen muß, mit 0,5 Grad Kelvin Auflösung. Ergibt 99
Elemente. Das Element ist vom Datentyp Byte.

Danke für die Antwort.

MfG

Wolfram Hubert

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Wolfram!

Und warum nimmst du nicht einen Temperaturfühler, der die Werte digital
sendet. Dann sparst du dir den ganzen Aufwand.

Der DS1621 kann von -55°C bis +125°C messen und das in 0,5°C -
Schritten. Nimmt man die angegebene Formel zu Hilfe, so kommt man sogar
unter 0,1°C.

Tolle Sache dieser Fühler.

Martin

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.