mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Potenzen rechnen


Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich messe über einen NTC am AD und bekomme einen Wert (0-1023)
Um daraus die Temperatur zu errechnen habe ich in Excel aus dem 
Datenblatt eine Grafik gemacht und mir die Gleichung rechnen lassen. Das 
klappt auch in Excel sehr gut.

Nur wie kann ich in dem µC mit so "Wilden" zaheln rechnen?
Das Ganze sieht in etwa so aus:

Polynomisch

y= 4,89*10^-19 *ADWERT^6 - 6,57*10^5 * ADWERT + 3,44*10^4 * ADWERT....

Ist das zu heftig für den µC? Ist ein mega169.
Ich dachte eigentlich das es eine recht einfache Lösung wäre aber wohl 
eher doch nicht.

Achja, wie rechnent man denn x^y, WinAVR mag das ^ Zeichen nicht.

mfg
Jabber

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach eine Lookup-Table.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muß es so genau sein? Eine linear interpolierte Tabelle oder eine 
geknickte Gerade reicht doch aus.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jabber Wock wrote:
> Hi,

> Achja, wie rechnent man denn x^y, WinAVR mag das ^ Zeichen nicht.

Kein Wunder.
^ ist der XOR Operator. Und bei double wird das dann wohl eher
nicht gehen :-)

Was du suchst, ist die Funktion pow( a, b ), die in math.h
beheimatet ist.

> Das Ganze sieht in etwa so aus:
> Polynomisch
>
> y= 4,89*10^-19 *ADWERT^6 - 6,57*10^5 * ADWERT + 3,44*10^4 * ADWERT....
>
> Ist das zu heftig für den µC? Ist ein mega169.

Das ist allerdings schon etwas heftig.
Mach in Excel noch ein paar Versuche, welche Potenz du weglassen
kannst. 10^19 ist nun wirklich nicht viel. Wenn dieser Term also
wegfallen kann, und der Fehler für dich noch akzeptabel ist, dann
lass ihn weg.

Denk auch daran: Ausrechnen kann man viel. Allerdings, wenn dein
Sensor nicht genau genug für 1 Nachkommastelle ist, dann hat es auch
keinen Sinn, 1 Nachkommastelle auszurechnen.

Weiters würde ich dir noch die Horner Regel ans Herz legen:


  y = a * x^3 + b * x^2 + c * x

kann umgeformt werden zu

  y = ((( a * x ) + b ) * x + c ) * x

-> keine Potenzberechnung mehr. (das x wird einfach herausgehoben)

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du denn den NTC angeschlossen? Wahrscheinlich kannst Du da mit 
etwas mehr Aufwand (im einfachsten Fall 1 Widerstand) eine 
Linearisierung hinbekommmen! Schau mal hier in die Artikelsammlung unter 
Temperaturmessung und daraus folgender Link: 
http://www.sprut.de/electronic/temeratur/temp.htm

Wenn du es aber mit einer potenz machen willst: die funtion lautet 
pow(zahl, potenz) und findet sich in "math" (sollte sie jedenfalls)

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jabber Wock wrote:
> Um daraus die Temperatur zu errechnen habe ich in Excel aus dem
> Datenblatt eine Grafik gemacht und mir die Gleichung rechnen lassen. Das
> klappt auch in Excel sehr gut.

Wie kann man sich aus einer Grafik eine Gleichung errechnen lassen?
War immer der Meinung, das Excel das umgekehrt macht....

Bitte klär mich mal einer auf...

nitraM

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein sehr schönes Experimentierwerkzeug für solche Probleme ist Maxima. 
Das Ergebnis von Annäherungsfunktionen kann man sehr schön mit GNUplot 
besichtigen.

Autor: Jabber Wock (jabber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen Antworten...

Ich denke ich werde das doch mit einer tabelle mache. Das sah nur auf 
den ersten Blick nach viel mehr arbeit aus. Aber wird dann wohl doch um 
eniges schnelle sein. Auch wenn es weder auf die Zeit noch eine 
besondere genauigkeit an kommt. Danke auf jeden fall für die Hilfe.

@ Martin L

Einfach eine Grafik machen und dann auf die Linie Klicken und 
"Trendlinie hinzufügen" klicken. Dort hast du dann verschiedene 
Funktionen zu auswahl unter Optionen das Häkchen bei "Gleichung 
anzeigen" und  fertig.

mfg
Jabber

Autor: 2921 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wievielten Grades die Potenz sein muss ? Das haengt von der Genauigkeit 
ab. Du kannst nun einen Plot pro Grad machen, der den absolutwert der 
differenz( Exponential-Poly(GradN)) ueber den Temperaturbereich rechnet 
und dann auswaehlen welche Potenz du willst. Ja, ein polynon 6. Grades 
ist durchaus machbar, vielleicht nicht mehr millionen mal pro sekunde 
aber moeglicherweise genuegend oft.

Autor: Nitram L. (nitram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jabber Wock wrote:
> Einfach eine Grafik machen und dann auf die Linie Klicken und
> "Trendlinie hinzufügen" klicken. Dort hast du dann verschiedene
> Funktionen zu auswahl unter Optionen das Häkchen bei "Gleichung
> anzeigen" und  fertig.


Danke, wieder etwas gelernt...

nitraM

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.