PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auswertung KTY81-210



stormracer
04.02.2007, 16:28
Moin,
ich habe ein KTY81-210 Temperatursensor. Mittlerweile kann ich den auch über den ADC auswerten, also den ADC Wert in einen Widerstandswert umrechnen, nur wie kommt man nun vom Widerstandswert auf die Temperatur. Im Datenblatt stehen zwar die Werte aber gibt es eine bessere Möglichkeit, als über eine Switch Verzweigung mit ca. 25 Case Anweisungen?

Leider gehen bei der Berechnung des Widerstandes auch die Kommazahlen verloren, wodurch der Widerstand leicht ungenau wird, d.h. kann ich die Werte nur schlecht mit Excel berechnen.

Mein Hauptprogramm:


int main (void)
{
uint32_t ADC_wert=0;

uint32_t Uref=21800; //2,18V
uint32_t ADC_max=1024;
uint32_t Rv=5470;
uint32_t U_adc=0;
uint32_t Rt=0;
uint32_t U=50000;
uint32_t Uv=0;

uart_init();

DDRC = (1<<PC7)|(1<<PC0);

ADCSRA = (1<<ADEN)|(0<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADMUX = (1<<REFS1)|(1<<REFS0);
ADMUX = 0x00;


ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));

while(1)
{
PORTC = (0<<PC7);
PORTC = (0<<PC0);
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
ADC_wert = ADC;
PORTC = (1<<PC0);

uart_puts("ADC: ");
uart_putv(ADC_wert);
delay_ms(500);

U_adc=((Uref/ADC_max)*ADC_wert);
U_adc=U_adc+100;
Uv=U-U_adc;
Rt=(U_adc*Rv)/(Uv);


uart_putc(' ');
uart_putc(' ');
uart_putv(U_adc);
uart_putc(' ');
uart_putv(Rt);
uart_putc('\n');
uart_putc('\r');
delay_ms(1000);

}
}

SIGINT
04.02.2007, 16:42
Hi stormracer,
wenn du die Temperatur nur auf ca. ein Grad genau brauchst dann kannst mit einem Widerstand die Kennlinie des KT81-210 etwas linearisieren.
Auf Sprut wird das ganz gut beschrieben:
http://www.sprut.de/electronic/temeratur/temp.htm#ptc

Gruß,
SIGINT

stormracer
04.02.2007, 18:24
Moin SIGNIT,
einen Vorwiderstand habe ich schon, bin nur noch am Versuchen den Widerstand in eine Temperatur umzurechnen.

Stormracer

EDIT:
Hab mein Problem nun gelöst, jetzt funktioniert alles.

smo-g
26.02.2007, 12:44
Die beste Möglichkeit ist die Interpolation:
http://de.wikipedia.org/wiki/Interpolation
(Die Interpolation mit einem Polynom ist bei 25 Werten aber nicht mehr besonders geeignet, da sie auch 25 nullstellen hat,
Da ist wahrscheinlich eine Spline-Interpolation die bessere Wahl)
Aus der Interpolation erhält man dann eine Fuktion, die der Temperatur einen Wiederstandswert zuordnet.