Forum: Mikrocontroller und Digitale Elektronik ADC Werte aus Tabelle berechnen, "interpolieren" ?


von AVRli (Gast)


Lesenswert?

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...

von Thomas E. (thomase)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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.

von Frank M. (aktenasche)


Lesenswert?

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.

von xfr (Gast)


Lesenswert?

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.

von AVRli (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.