Temperatursensor AVR Butterfly auswerten

OP (Firma: Student) #1496467
Lesenswert?

N'Abend Leute,

ich versuche gerade verzweifelt den im AVR Butterfly integrierten 
Temperatursensor für eine Temperaturmessung zu benutzen. Hat das 
schonmal jemand gemacht? Tu mich da sehr sehr schwer.
Nach meinem Code berrechnet er mir, dass in meiner Wohnung -52 °C sind. 
Habe die Temperaturgleichung aus dem Butterfly User Guide verwendet. 
Kann mir jmd helfen, so dass ich die richtige Temperatur angezeigt 
bekomme??
1
//---------------------------------------------------Temperaturerfassung Innen / Tempsensor Butterfly-------------------------------------------------------//
2

3
cli();
4

5
TempIn = 0;
6
PORTF = 0x11;  //Pull-up-Widerstände deaktiviert
7

8
ADCW=0;
9
ADMUX  |= (1<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (0<<MUX4) | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0); //ReferenzTempOutLCD
10
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (0<<ADATE) | (0<<ADIF)| (0<<ADIE) | (1<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); // Teilungsfaktor = 16
11

12

13
ADCSRA |= (1<<ADSC);
14
while(ADCSRA & (1<<ADSC)){          // Dummy Readout, um AD Wandlung "warm laufen zu lassen
15
                      
16
            }
17
ADwert = ADCW;                // ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten Wandlung nicht übernommen.
18
Delay(1);
19
y=0;
20
ADwert=0;
21
while (y<=4){                // Eigentliche Messung ist Mittelwert aus 5 aufeinanderfolgenden
22
  y++;
23
  ADCSRA |= (1<<ADSC);          //Auslösen einer ADC-Wandlung
24
  while(ADCSRA & (1<<ADSC)){
25
                      //Auf Ergebnis warten
26
               }
27
  ADwert = ADwert + ADCW;          //Auslesen des ADC-Wertes
28
            
29
      }
30

31
Digital = ADwert/5;
32
LN = log(Digital/(1024-Digital))/log(2.7182);  // Logarithmus Naturales
33
Fahrenheit = (4250/(LN+14.261)) - 273;      // Temperaturgleichung siehe Butterfly User Guide S.22    
34
TempIn = (Fahrenheit-32)/1.8;
35
itoa(TempIn,TempInLCD,10);          // ADCW in String wandeln
36
Delay(5);
37

38
ADwert =0;                  //Rücksetzen der Auslesevariable
39
ADCSRA = 0x00;                //Rücksetzen des ADC
40
ADMUX = 0x00;                //Rücksetzen des ADC
41

42
sei();

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren