Forum: Mikrocontroller und Digitale Elektronik Potenzen rechnen


von Jabber W. (jabber)


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

von Uhu U. (uhu)


Lesenswert?

Mach eine Lookup-Table.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von Karl H. (kbuchegg)


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)

von Micha (Gast)


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)

von Nitram L. (nitram)


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

von Uhu U. (uhu)


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.

von Jabber W. (jabber)


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

von 2921 (Gast)


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.

von Nitram L. (nitram)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.