Hallo zusammen, ich möchte gerne eine Anzeige an eine Signalquelle angleichen. Die Referenzwerte sollen in einer Tabelle angelegt werden, da der Pegel nicht linear ist. Anzeige Display: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ADC Werte dazu: 12,15,21,41,51,58,64,78,82,105 Nun würde ich gerne aus den ADC Werten diese Kurve nachahmen wollen und vlt. sogar Zwischenwerte anzeigen 1.3 z.B. Wie stellt man das nun an wenn man weiß das man am ADC den Wert 55 hat? Das Anzeige Ergebnis müsste was um 5.7 sein. Schöne Grüße AVRli...
AVRli schrieb: > Wie stellt man das nun an wenn man weiß das man am ADC den Wert 55 hat? > Das Anzeige Ergebnis müsste was um 5.7 sein. Entweder lässt du ihn das ausrechnen, das wird deinen AVR und auch dich in Ermangelung der Rechenfunktion aber überfordern oder du ermittelst die Werte experimentell und legst sie als Tabelle im Flash ab. Der ADC-Wert ist dann der Index für die Tabelle. Stichwort: Look-Up-Table. mfg.
AVRli schrieb: > Hallo zusammen, > > ich möchte gerne eine Anzeige an eine Signalquelle angleichen. Die > Referenzwerte sollen in einer Tabelle angelegt werden, da der Pegel > nicht linear ist. > > Anzeige Display: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 > ADC Werte dazu: 12,15,21,41,51,58,64,78,82,105 > > Nun würde ich gerne aus den ADC Werten diese Kurve nachahmen wollen und > vlt. sogar Zwischenwerte anzeigen 1.3 z.B. > > Wie stellt man das nun an wenn man weiß das man am ADC den Wert 55 hat? > Das Anzeige Ergebnis müsste was um 5.7 sein. Und wie ****genau**** hast du diesen Wert errechnet? Man kann nur dann etwas programmieren, wenn man es (zumindest) im Prinzip selber machen könnte, wenn man nur Papier und Bleistift hat. Also: Wenn du diese Werte hast 1 2 3 4 5 6 7 8 9 10 12 15 21 41 51 58 64 78 82 105 wie würdest du vorgehen, wenn du einen Eingangswert (zweite Zeile) von 55 hast und den zugehörigen Wert aus der obereb Zeile 'ermitteln' sollst. Also ich würde ja mal sagen: da 55 zwischen 51 und 58 liegt, wird wohl der Wert aus der oberen Zeile zwischen 5 und 6 liegen. (Ich hab also rausgesucht, in welchem Intervall der Wert 'unten' liegt) Und da zwischen 51(inklusive) und 58(exklusive) 7 Zahlen liegen und 55 die 5. te Zahl hinter 51 ist, ist 55 von 51 daher 5/7 der 'Distanz' zu 58. 5/7 der Disztanz bedeutet in der oberen Zeile aber 5/7 von 1.0 (der 'Distanz' der Zahlen in der oberen Zeile). Da die 5 (von den 51) schon feststanden und dann noch 5/7 aus dem 'Wert' dazwischen dazukommen, wäre also eine Schätzung für den Wert in der oberen Zeile 5.7 Das ist mein Rechengang. Und nachdem mir klar geworden ist, warum ich das so rechne und vor allen Dingen wie ich das rechne, kann ich genau diesen Rechengang dann auch programmieren. Welche Schritte habe ich gemacht? Und genau diese Schritte werden programmiert.
spline interpolation + LUT wenn ich mir die daten so in excel plotte, sieht das aber eher nach nem linearen zusammenhang aus. du brauchst viel mehr messpunkte und wir mehr informationen.
Was Du suchst ist vermutlich lineare Interpolation: http://de.wikipedia.org/wiki/Interpolation_%28Mathematik%29#Lineare_Interpolation Das lässt sich auch auf einem Mikrocontroller problemlos implementieren.
Danke für Eure Antworten! Es sind Beispielwerte. Es wird so sein das ich am ADC verschiedene Spannungen anlegen werde, die zwar immer ansteigend sind aber eben NICHT linear sind. Das ganze wird einmal "kalibriert". Es wird später so sein das ich diese Kurve einmal abgleiche und dann aus den ADC Wert dann diese Anzeige zu den Werten 1-10 brauche. Karl Heinz Buchegger schrieb: > Welche Schritte habe ich gemacht? Und genau diese Schritte werden > programmiert. Danke Dir! Mir war nicht klar wie man von 2 Unbekannte auf die Tabelle zugreift. Aber wenn man den Wert raus sucht bis der Wert in der Tabelle > Wert ADC ist. Hat man den Anzeige Wert und die Nachkommastelle dann über die Berechnung über die Werte wie Du es beschrieben hast. Cool! TNX AVRli....
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.