www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F2012 Temperaturmessung mit externem NTC


Autor: m. S. (marek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute diesmal baue ich ein Thermometer das die Vorgegebenen Bereiche 
mittels einzelnen Segmenten der 7 Segmentanzeige anzeigt. Ich hab auch 
schon ein Programm fertig. Beim kompilieren werden auch keine Fehler 
angezeigt. Der NTC ist in reihe mit einem 10k Widerstand als 
Spannungsteiler geschaltet. Bei 25 °C solte der NTC einen 
Widerstandswert von 10k haben.
Mein Probelm ist nun folgendes es wird überhaupt nichts angezeigt 
deswegen wolte ich euch mal bitte mal nen Blick auf den code zu werfen 
vielleicht ist da ein Fehler drinne oder in meiner Aufgebauten 
schaltung. Danke schon mal für eure Hilfe.

mfg

#include <msp430x20x2.h>

unsigned int temp;

int main (void){

  WDTCTL = WDTPW + WDTHOLD; //Watchdog aus
  ADC10CTL0 = SREF_1 + REFON + ADC10ON +ADC10SHT_0 + REFOUT + MSC; // 
Initialisierung ADC10 Control Register 0
  ADC10CTL1 = INCH_0 + ADC10SSEL_3 + CONSEQ_0;// Initialisierung ADC10 
Control Register 1

  ADC10CTL0 &= ~REF2_5V; // Vref = 1,5V
  ADC10CTL0 &= ~ENC; //ADC aus

  ADC10AE0 |= 0x11; //analog enable A4 Vref an ausgang p1.4 ??? und A0 = 
P1.0 "Messeingang"

  P1SEL &= 0x1F; //I/O funktion der 3 Ausgänge
  P1DIR |= 0xE0; //P1.5 & P1.6 & P1.7 Ausgänge auf LEDs

  P2DIR |= 0x80; //Transistor "scharf" schalten damit 7 segment anzeige 
an geht

  while (1){
    ADC10CTL0 |= ENC + ADC10SC; // ADC anschalten Umwandlung starten
      temp = ADC10MEM;  // Übergabe des wertes vom ADC an Variable temp

    if (temp < 0x22F){  // T > 30°C
      P1OUT = 0x40;
    }
    if ((temp == 0x22F) && (temp > 0x204)){ // 25,5°C bis 30°C
      P1OUT = 0xC0;
    }
    if ((temp < 0x204) && (temp > 0x1FB)){ // 24,5°C bis 25,5°C
      P1OUT = 0x80;
    }
    if ((temp < 0x1FB) && (temp == 0x1CE)){ // 20°C bis 24,5°C
      P1OUT = 0xA0;
    }
    if (temp < 0x1CE){ // T < 20°C
      P1OUT = 0x20;
    }
  }
}

Autor: m. S. (marek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marek S. schrieb:
> if (temp < 0x22F){  // T > 30°C // da muß > hin

Da ist erst mal ein fehler hab ich selber ent deckt. Dann habe ich noch 
vergessen P2SEL &= 0x00; einzufügen. Jetzt leuchtet es auch aber zeigt 
an das es wenigher als 20 °C hat was nicht stimmen kann.

mfg

Autor: m. S. (marek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo hat sich geklärt hab die Fehler alle selber ausgemertzt die if 
abfrgen waren bischen schlecht geschrieben mit fehlern in > & < 
vertauscht. Aber danke an alle die sich mit beteiligt hätten.

mfg

Autor: S. Z. (szimmi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du jetzt noch ein bisschen bei der Rechtschreibung und Grammatik 
zulegst, sind wir ganz stolz auf Dich :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.