-         

Ergebnis 1 bis 4 von 4

Thema: Auswertung KTY81-210

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    10.07.2006
    Ort
    Winsen
    Alter
    28
    Beiträge
    30

    Auswertung KTY81-210

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    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:
    Code:
    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);
    		
    	}
    }

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    10.07.2006
    Ort
    Winsen
    Alter
    28
    Beiträge
    30
    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.

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •