Gast
#401092
Hallo!
Ich möchte den ADC-Wert umrechnen und als String ausgeben (UART).
Der ADC-Wert stammt von einem NTC und ist der Mittelwert aus 100
Messungen.
Ich habe den Temperaturen und dem Spannungsteilerwiderstand
entsprechend eine Tabelle angelegt. (88 entspricht -30°C, 1013 ent.
45°C, daszwischen
5°C Schritte).
[C]
uint16_t reftemp [16] =
{88,117,153,196,247,306,372,444,520,598,677,754,827,895,957,1013};
[\C]
Als erstes Suche ich mir aus dem Array den Wert der unmittelbar kleiner
ist als der ADC-Wert.(Temperatur ist der ADC-Wert)
[C]
for (uint8_t i=0; i<16; i++)
{
if (temperatur >= reftemp[i] && temperatur < reftemp[i+1])
{
count = i;
}
}
[\C]
In "count" steht dann der Wert der Arrayposition.
[C]
double tem;
tem =
reftemp[count]-reftemp[count])*(temperatur-reftemp[count]))+((count*5)-3
0);
[\C]
Hieraus wird dann der Temperaturwert berechnet. (Temperatur ist der
ADC-Wert).
[C]
char string[4];
dtostrf(tem,4,1,string);
for (uint8_t i=0; i<4; i++)
{
loop_until_bit_is_set(UCSRA, UDRE);
UDR = string[i];
}
[\C]
Danach wird double in string umgewandelt und an den PC geschickt (zu
Testzwecken).
Leider bekomme ich immer. Folgendes Ergebnis: 30.0???
Irgendwo muss da ein Fehler in der Berechnung sein.
Ich versuche scho den ganzen Tag ihn zu lokalisieren, aber ich glaube
ich seh den Wald vor lauter Bäume nicht mehr.
Ihr seid bestimmt nicht so blind.
Danke
Hias