- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 9 von 9

Thema: NTC Temperatursensor geht "in die falsche Richtung"

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2012
    Beiträge
    132

    NTC Temperatursensor geht "in die falsche Richtung"

    Hallo zusammen

    Ich versuche momentan eine Temperaturmessung mit einem NTC zu machen. Mein Sensor ist der folgende:
    Honeywell 135-104LAG-J01. Weitere Infos zum Sensor gibts hier: http://sensing.honeywell.com/index.p...=1&pr_id=53807

    Ich habe mir dazu folgende Tabelle erstellt: (Anhang 1). DIe sollte soweit ja eigentlich stimmen.
    Hier ist nun mein Code mit dem ich das Ganze auf dem AVR (Atmega ausprobiere:

    Code:
    /*
     * Test_AD.c
     *
     * Created: 20.10.2013 21:36:29
     *  Author: Marius
     */ 
    
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #define F_CPU 8000000
    #include <util/delay.h>
    #include <string.h>
    #include <stdio.h>
    #define BAUD 9600
    #define MYUBRR F_CPU/16/BAUD-1
    
    #define UART_MAXSTRLEN 10
    
    volatile uint8_t uart_str_complete = 0;     // 1 .. String komplett empfangen
    volatile uint8_t uart_str_count = 0;
     unsigned char uart_string[UART_MAXSTRLEN + 1] = ""; //volatile!!!
    
    int adctbl [33]  = { 1016, 1008, 994, 969, 928, 867, 783, 681, 568,	456, 355, 271, 204, 152, 114, 86, 65, 49, 38, 29, 23, 18, 14, 
    	12, 9, 8, 6, 5, 4, 4, 3, 2, 1};
    	
    uint16_t temptbl [33] = { -60, -50,-40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180,
    	190, 200, 210, 220, 230, 240, 270, 300 };
     
    void USART_Transmit(unsigned char data ){
    	/*
    	Wait for empty transmit buffer
    	*/
    	while
    	( !( UCSRA & (1<<UDRE)));
    	/*
    	Put data into buffer, sends the data
    	*/
    	UDR = data;
    }
    
    void USART_Init_Interrupt(unsigned int UBRR){
    	sei();
    	UBRRH = UBRR >> 8;
    	UBRRL = UBRR & 0xFF;
    	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
    	UCSRB |= (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);  // UART RX, TX und RX Interrupt einschalten
    }
    
    uint16_t convertADCtoTemp(uint16_t adc){
    	int i=0;
    	while(!(adc <= adctbl[i] && adc >= adctbl[i+1])){
    		i++;
    	}
    	USART_Transmit(i);
    	return temptbl[i];
    }
    
    int main(void){
    	
    	USART_Init_Interrupt(MYUBRR);
    	
    	ADMUX=0b01000101; //int ref, Ergebnis in ADCH, Pin PC5
    	ADCSRA=0b10000101;
    	
    	while(1){
    		//int sample=0;
    		ADCSRA = ADCSRA | (1<<ADSC);  // single conversion mode ein
    		while(ADSC == 1);  // warten bis konvertierung abgeschlosen
    		
    		uint8_t theLowADC = ADCL;
    		uint16_t adc = ADCH<<8 | theLowADC;
    		
    		USART_Transmit((ADCH));	
    		USART_Transmit(theLowADC);
    		USART_Transmit(13);
    		_delay_ms(1000);
    		
    	}
    	
    	
    }
    Die Schaltung ist wie folgt: Aus dem NTC und einem 100kOhm Widerstand ist ein Spannungsteiler aufgebaut dessen Ausgang an PC5 des ATmgea geht. Der NTC geht gegen +5V und der feste Widerstand gegen GND.

    Wenn ich nun den NTC auf dem Board habe dann bekomme ich über UART einen Wert von 00000001 1111'0100 übermittelt, dies entspricht 500(dez). Laut der Tabelle die ich hochgeladen hat ergibt dies nun eine Temperatur zwischen 20 und 30 Grad Celsius. Dies stimmt soweit für mein Arbeitszimmer.
    Wenn ich nun eine Feuerzeugflamme nebendrann halte (ca. 1cm vom NTC entfernt) bekomme ich: 00000011 1101'0000, dies ergibt 976(Dez) was laut Tabelle einer Temperatur zwischen -50 bis -40 Grad entspricht, das kann ja nicht sein xD

    Produziere ich etwa mit der hohen Temperatur irgendwo einen Overflow?

    Wäre froh wenn ihr mir helfen könntet=) (BTW: Ich bin erfahren im Programmieren mit Java, mit C noch nicht so)

    Liebe Grüsse

    Thor_
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. Nibo2 - "falsche" Werte der Abstanzsensoren
    Von RenzaPeter im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 12
    Letzter Beitrag: 14.03.2012, 14:19
  2. 74HC595-Bruder für "andere" Richtung
    Von Jaecko im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 15.09.2010, 14:58
  3. "Gehäuse" für DIP8 Temperatursensor DS1621
    Von Haveaniceday im Forum Sensoren / Sensorik
    Antworten: 9
    Letzter Beitrag: 15.02.2008, 12:54
  4. Motoren drehen in die falsche Richtung
    Von guest06 im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 21.03.2007, 08:19
  5. avrdude - wie geht das vergleichbar dem "WriteAll"
    Von vajk im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 08.10.2006, 22:41

Berechtigungen

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

Solar Speicher und Akkus Tests