www.mikrocontroller.net

Forum: Compiler & IDEs Temperatur einlesen in C


Autor: Andre G. (bb21)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schönen guten Tag.

Als erste wollte ich mal ein Kompliment an das Forum loswerden, denn ich 
habe jetzt schon einige Beträge gelesen und finde es gut das einem bis 
auf´s kleinste Problem immer geholfen wird.

Daher wollte ich mich meinem kleineren Problem auch mal auf euch 
zukommen und hoffe ihr könnt mir helfen.

Ich benutze den Microkontroller AT89C5131A-M und wollte eine Schaltung 
entwickeln, womit ich eine Temperatur von einem Widerstand einlese und 
falls diese zu hoch sein soll, soll ein 5V Schütz angesteuert werden und 
ein Lüfter soll anspringen, oder es soll einfach eine LED aufleuchten. 
Das eben nur zur Veranschaulichung der Übertemperatur. Also alles ganz 
simpel, das Problem habe ich nur bei der Programmierung in C.

Jetzt eben meine Frage, ist so was möglich und wenn wie?


Danke schonmal und freue mich auf ein paar Vorschläge.

Gruss Andre

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jetzt eben meine Frage, ist so was möglich und wenn wie?

Wenn du in C schonmal etwas programmiert hast, dann ist das AVR-Tutorial 
hier oben rechts ganz hilfreich. Da gibt es zu allen Funktionen des AVR 
eine gute Einführung.

Falls auch C für dich Neuland ist, ist es vielleicht ratsam, dessen 
Grundlagen zunächst auf einem PC o.ä. zu erforschen.

Oliver

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst am ADC-Eingang des Controllers die Spannung am Widerstand 
auswerten. Wie Du das machst, kannst Du unter 
http://www.mikrocontroller.net/articles/AVR-GCC-Tu... 
nachlesen. Dann kannst Du im Interrupt des ADC prüfen, ob der Wert 
erreicht wurde und dann die gewünschte Aktion ausführen lassen.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
z.B. so:
ISR (ADC_vect)
{
 value = ADCL;
 value += (ADCH<<8);                //read content in ADC data register

 if (value > MAXVAL)                //compare value with maximum
 {
    //do something
 }
 }

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ alle Vorposter:

Ein AT89C5131A ist kein AVR.

@ Andre G.:

Da der AT89C5131A keinen ADC hat, brauchst du erstmal einen 
Temperatursensor mit integrierten ADC, bei dem du die Temperatur digital 
auslesen kannst, z.B. den LM75.
Wenn der µC sonst weiter nichts machen soll, kannst du einfach in einer 
Endlosschleife laufend die Temperatur auslesen, mit dem Maximalwert 
vergleichen und bei Überschreitung die entsprechende Aktion auslösen. 
Mit dem LM75 hast du auch noch die Option, diesen so zu konfigurieren, 
dass er von sich aus beim Überschreiten einer bestimmten Temperatur 
einen Interrupt auslöst. Sehr praktisch, wenn der µC noch andere 
Aufgaben erledigen soll.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>@ alle Vorposter:

>Ein AT89C5131A ist kein AVR.

Hast Recht. Damit ist das hier aber auch das falsche Forum, denn einen 
gcc gibts m.E. dafür nicht.

Oliver

Autor: Gregor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Wenn nur ein Messwert verglichen werden soll kannst du das vielleicht 
auch mittels operationsverstärkerschaltung  (Komparator)

Autor: Andre G. (bb21)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Controller sitzt auf einer Platine und hat einen 
Analog-Digital-Wandler TLC549. Es ist ein Experimentiersystem.

Es besitzt eine SPI-Schnittstelle mit Analog-Digital-Umsetzer.



@ Oliver

Ja habe schonmal was mit C gemacht, das waren aber eher Spielerein mit 
Schleifen, aber so was wie einen Spannungs-Wert einlesen und dann 
umrechnen habe ich noch nie gemacht.



Bin ich trotzdem im falschen Forum?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bin ich trotzdem im falschen Forum?

>Forum: GCC
>Fragen zu den GNU-Toolchains für AVR-, ARM- und MSP430-Mikrocontroller, >AVR-GCC, 
MSPGCC, WinAVR, WinARM, ...

Aber der ein- oder andere wird hier auch was zu 8051 sagen könnnen.

Oliver

Autor: Triple XxX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andre

Habe zur Zeit auch eine Schaltung gebaut um eine Temperatur per ADC 
einzulesen
und diese zu vergleichen mit der Temperatur 10 Sekunden zuvor. Wenn sie 
sich ändert kommt ein Ausgang also bei mir eine LED.
Benutze auch selbigen Controller wie du. Hast du auch das Board von 
Elektor?

Wenn du die Schaltung und das Programm brauchst rühr dich.

MfG

Reinhard

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.