Temperatursensor AVR Butterfly auswerten

OP (Firma: Student) #1496467
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.