- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: HowTo: Messwerttabelle in Formel umrechen

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    16.12.2005
    Ort
    Oberschwaben
    Beiträge
    84
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von Gock
    Wenn Du von einem Wasserstand ausgehend versuchst, die zugehörige Spannung auszurechnen wohl kaum. Das bringt Dir aber leider nicht viel... Du brauchst nämlich die Umkehrfunktion!!!
    Dann würde ich halt die beiden Spalten in der Tabelle vertauschen. Du bekommst dann einen Graphen, der im Vergleich zum vorigen an einer imaginären 45°-Achse gespiegelt ist. Auch daraus kann man z.B. eine Funktion 2. Ordnung ermitteln lassen. Damit hat man dann auch keine Wurzeln mehr.

    Markus

  2. #12
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Zitat Zitat von Markus4004
    Braucht man wirklich ein Programm, um aus

    y = 0,0119x² - 0,0166x + 1,1007

    die Programmzeile

    y = 0.0119*x*x - 0.0166*x + 1.1007;

    zu machen? (Bzw. aufgesplittet für Bascom)
    Nu so einfach gehts nicht. Das Tool soll ja aus Messwerten erstmal ne Formel generieren und daraus dann ein fertig compilierbares Rumpfprogramm. Dabei sollte der Code natürlich kompakte sein, was auch bedeutet das man auf Fließkommazahlen möglichst verzichtet. Sowas hätte schon seinen Sinn.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.07.2004
    Beiträge
    138
    Einige Anmerkungen

    - In zwei Schritten könnte man so vorgehen: Tabelle erfassen, Excel berechnet das Umkehrpolynom (oben schon erwähnt), dann Koeffizienten im Controller speichern.

    - Güte der Anpassung steigt mit dem Grad des Polynoms! Excel macht das schnell. Die Güte der Anpassung wird mit dem Bestimmtheitsmaß R angegeben: R=1 ist vollständige Anpassung, sonst R<1 .

    - Berechnung von Funktionswerten für ein Polynom geht durch fortgesetztes Multiplizieren und Addieren mit dem HORNER-SCHEMA
    (Das war vor 35 Jahren meine erste Programmieraufgabe in numerischer Mathematik auf einer Maschine, die mit Lochstreifen gefüttert wurde). Ist ideal für AVR geeignet! Das Problem Fließkommazahlen läßt sich bei bekanntem Werteumfang ggf. durch geeignete Zehnerfaktoren ausschalten ..

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Der letzte Punkt ist unter Umständen sehr wichtig. Bei zu geringer Genauigkeit der Gleitkommadarstellung, schlecht konditionierten Gleichungen und ähnlichem kann es schon sehr hässliche Fehler geben. Auch wenn ich mir die Mühe im aktuellen Projekt nicht hätte machen müssen, weil eh mit floats in rauhen Mengen operiert wird, habe ich neulich gerade eine sinnvolle Berechung für das Tuningwort eines DDS-Chips geschrieben. Das 32-bit-Wort n ergibt sich als n=fsoll/freferenz*2^32. Hätte ich fsoll im Bereich von 10^4 bis 10^8 erst durch die Referenz von 416MHz geteilt und dann mal 2^32 genommen, hätte ich eine unnötige float-Division gebraucht. fsoll zu einem 64bit-int gecastet, 32 mal nach links geschoben und dann ganzzahlig durch 4.16*10^8 geteilt ist schneller und kleiner. Schöner Synthesizer übrigens, dieser AD9959. 4 hochagile DDS-Kanäle mit 32 bit Frequenz- und 14 bit Phasenwort, bis 500MHz Systemtakt, eingebaute PLL für Leute, die keine Lust auf einen selbstgebauten 400MHz-VCO haben, digitale Abschwächer an den Ausgängen. Nur doof zu löten, 56 pin TQFN.

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    16.12.2005
    Ort
    Oberschwaben
    Beiträge
    84
    Zitat Zitat von Frank
    Zitat Zitat von Markus4004
    Braucht man wirklich ein Programm, um aus

    y = 0,0119x² - 0,0166x + 1,1007

    die Programmzeile

    y = 0.0119*x*x - 0.0166*x + 1.1007;

    zu machen? (Bzw. aufgesplittet für Bascom)
    Nu so einfach gehts nicht. Das Tool soll ja aus Messwerten erstmal ne Formel generieren
    Für Leute die kein Excel haben? Wobei ich mir gut vorstellen könnte, dass es da genug Freeware-Programme gibt, die das auch können.

    und daraus dann ein fertig compilierbares Rumpfprogramm.
    Was für ein Rumpfprogramm?

    Der Code für Floating Point in C sieht z.B. so aus:
    y = 0.0119*x*x - 0.0166*x + 1.1007;

    Eine einzige Zeile. Mehr ist da nicht.

    Dabei sollte der Code natürlich kompakte sein, was auch bedeutet das man auf Fließkommazahlen möglichst verzichtet. Sowas hätte schon seinen Sinn.
    Für Fixkommaarithmetik kommen da noch ein paar Shifts hinzu, das passt bei C aber immer noch in eine Zeile.

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    Dann würde ich halt die beiden Spalten in der Tabelle vertauschen. Du bekommst dann einen Graphen, der im Vergleich zum vorigen an einer imaginären 45°-Achse gespiegelt ist. Auch daraus kann man z.B. eine Funktion 2. Ordnung ermitteln lassen. Damit hat man dann auch keine Wurzeln mehr.
    Eine Wurzelfunktion mit einem Polynom 2.Grades anzunähern ist nicht sehr elegant (siehe Anhang). Dann kannst Du es auch linear annähern und sparst Rechenzeit.

    @Netbird
    Hornerschema, damit hab ich doch auch schon mal gerechnet, hat Dinge auf jeden Fall vereinfacht, in Linearer Algebra... Hilf' mir doch bitte mal auf die Sprünge... Wie lässt sich damit die Polynomrechnung vereinfachen?
    Gruß Gock
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken ann_herung.jpg  

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    16.12.2005
    Ort
    Oberschwaben
    Beiträge
    84
    Zitat Zitat von Gock
    Dann würde ich halt die beiden Spalten in der Tabelle vertauschen. Du bekommst dann einen Graphen, der im Vergleich zum vorigen an einer imaginären 45°-Achse gespiegelt ist. Auch daraus kann man z.B. eine Funktion 2. Ordnung ermitteln lassen. Damit hat man dann auch keine Wurzeln mehr.
    Eine Wurzelfunktion mit einem Polynom 2.Grades anzunähern ist nicht sehr elegant (siehe Anhang). Dann kannst Du es auch linear annähern und sparst Rechenzeit.
    Dann nimmt man halt 3. oder 4. Ordnung. Das sollte immer noch schneller als die Wurzelfunktion sein.

    Meistens weiß ich eh nicht, was für eine Funktion ich da eigentlich nachbilden will. Deswegen mache ich das so, dass ich die verschiedenen Ordnungen ausprobiere und mich dann für eine entscheide. Allerdings macht der eingesetzte Mikrocontroller ein fmul in einem Takt, was die Entscheidung für höhere Ordnungen doch sehr erleichtert.

    Markus

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.07.2004
    Beiträge
    138
    Beispiel: Berchnet werden soll f(3) für f(x) = 2x^3 -5x^2 +x +6

    Ausklammern liefert: f(x) = (2*x -5) *x + 1) *x +6

    Also f(3) = 2*3=6 -5= 1 *3 = 3 +1 =4 *3 = 12 +6 = 18

    Das ist ein Paradebeispiel für eine FOR - NEXT SChleife und Koeffizienten in einem Array.

    Auf dem Blatt Papier schreibt man das so auf:
    Koeffizienten 2 -5 1 6
    x= 3 6 3 12
    Start: 2 1 4 18

    Vom Startkoeffizienten schräg nach oben multiplizieren, untereinanderstehende Werte addieren, am Schluss steht f(3) = 18

    Wird auch zur Polynomzerlegung genommen, wenn man von einem Polynom n-ter Ordnung eine Nullstelle hat und dann zerlegt in ein Polynom n-1 ter Ordnung und einem Linearfaktor.

    Viel Vergnügen ..

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.07.2004
    Beiträge
    138
    Sehe eben, dass die Formatierung verrutscht ist! Schema schön untereinander schreiben, dann wird's übersichtlich ...

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.07.2004
    Beiträge
    138
    Habe eben gegoogelt: Ist prima erklärt in Wikipedia!
    Mit Beispielen aller Art... Sehr zu empfehlen.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test