Temperatursensor MCP9700 und messen negativer Temperaturen

OP #3299758
Lesenswert?
• ▲
▼
Hallo,

ich messe mit einem ATMEGA88 und einem Temperatursensor MCP9700 die 
Umgebungstemperatur.
Für positive Temperaturen funktioniert das auch ganz gut.
1
while(1)
2
{
3
  ADCSRA |= (1<<ADSC);             // Start ADC-Wandlung
4
  while (ADCSRA &(1<<ADSC));       // Auf Abschluss der Konvertierung warten
5
  y = ADC;                         // 16-bit ADC-Wert in y speichern      
6
  y = y >> 6;                      // Einen 10-bit Wert in y speichern
7
  temperatur = ((y-102)*100)/204;  // Anpassung an die Temperaturkennlinie
8
                                   // y=kx+d
9
  PORTD = temperatur;              // Ausgabe der Temperatur auf PORTD
10
}

Wie mache ich es aber für negative Temperaturen?

Hier sollte eine LED z.B. am Portpin PB0 leuchten und sozusagen als 
negatives Vorzeichen dienen.
#3300523
Lesenswert?
• ▲
▼
Hallo,

deine Berechnung von Temperatur funktioniert auch für negative 
Temperaturen (wenn du für 'temperatur' & 'y' nicht gerade 
unsigned-Datentypen verwendest).
Wenn du den Wert auf ein Port ausgibts, erhälst du das Ergebnis als 
Zweierkomplement. Willst du das Vorzeichen auf ein extra Port ausgeben 
dann mach einfach folgendes.
1
...
2
if (temperatur<0) {
3
 PORTB|=(1<<0);
4
 temperatur = -temperatur;
5
} else {
6
 PORTB&=~(1<<0);
7
}
8
PORTD = temperatur;

Sascha

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.