Forum: Compiler & IDEs const rom char TEMP_M_TABLE[]


von Hiko F. (cerberus)


Lesenswert?

1
const rom char TEMP_M_TABLE[] = {127,126,126,126,126,126,124,119,114,109,106,102,99,96,93,91,88,86,84,82,80,78,76,75,73,71,70,68,67,66,64,63,62,60,  59,58,57,56,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,  20,19,18,16,15,14,13,12,10,9,8,6,5,3,1,0,-2,-4,-6,-8,-11,-14,-17,-21,-25,-32,-42,-127};

Was ist das?
Wozu dient es?
Wie bewertet man das?
Wie benutzt man das?

von Timmo H. (masterfx)


Lesenswert?

Sieht aus wie eine Wertetabelle die im Flash abgelegt ist (daher nicht 
erst in den RAM geladen wird. Könnte für PWM oder eine 
Ausgleichskennline für einen Sensor sein. Kommt halt drauf an wo du das 
her hast.

von Christian R. (supachris)


Lesenswert?

Hiko Fairbanks wrote:

> Was ist das?
> Wozu dient es?
> Wie bewertet man das?
> Wie benutzt man das?

http://de.wikipedia.org/wiki/Lookup-Tabelle

von Hiko F. (cerberus)


Lesenswert?

sie gehört zu einem NTC, aber ich verstehe nicht wie ich daraus ein 
Temperatur einem Widerstandswert oder einem ADC-Wert zuordnen kann.

Und wie spricht man so einen Teufel überhaupt an?

von Christian R. (supachris)


Lesenswert?

Ganz einfach:

Pseudocode:

ReellerWert = TEMP_M_TABLE[Messwert];

Wobei Messwert das digitalisierte Sensorsignal. Zu jedem Binärwert, den 
der ADC für den NTC liefert, passt genau ein reeller Temperatur-Wert aus 
der Tabelle.

von Hiko F. (cerberus)


Lesenswert?

... gut.
Woher weiss die Tabelle, da sie ja nur einen Wert kennt welcher Wert 
dazu passt?
Der ADC liefert also z.B. 673, was einer Temperatur von 11°C entspricht.
663 ist der Wert für 12°
674 der Wert für 13°
usw

von Timmo H. (masterfx)


Lesenswert?

Die Tabelle weiß das nicht. Jemand hat sich vorher die Kennline des NTCs 
angeguckt oder eben selbst aufgenommen und dann eine Ausgleichskennline 
erstellt (eben die Tabelle)

von Hiko F. (cerberus)


Lesenswert?

Eben, der Tabelle fehlen die Vergleichswerte. Einziger 
Informationsgehalt ist also allenfalls die Position in der Tabelle. Für 
eine 10 Bit-Wandlung müsste die Tabelle dann doch aber 1024 Werte haben?
Gibt es irgend wo ein leicht_ _verständliches Beispiel, wie man an die 
Werte in der Tabelle dann wieder rankommt?

von Johannes M. (johnny-m)


Lesenswert?

Hiko Fairbanks wrote:
> Eben, der Tabelle fehlen die Vergleichswerte. Einziger
> Informationsgehalt ist also allenfalls die Position in der Tabelle.
Das genügt ja auch!

> Für eine 10 Bit-Wandlung müsste die Tabelle dann doch aber 1024 Werte
> haben?
Richtig.

> Gibt es irgend wo ein leicht_ _verständliches Beispiel, wie man an die
> Werte in der Tabelle dann wieder rankommt?
Das ist ein ganz einfaches Array, bei dem der benötigte Wert über den 
Index ausgelesen wird.

Für eine 10-Bit-Wandlung müsste ein Array mit 1024 Elementen angelegt 
werden. Der dem Wandlungsergebnis entsprechende Wert ist dann ganz 
einfach
1
Wert = Tabelle[ADC_Ergebnis];
Wenn ADC_Ergebnis z.B. 472 ist, dann wird der Wert mit dem Index 472 
(also der 473. Wert in dem Array, der erste ist der mit Index 0) 
zurückgegeben. Ist alles ganz einfach, ohne schwarze Magie oder so.

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.