Forum: Compiler & IDEs Temperatur einlesen in C


von Andre G. (bb21)


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

von Oliver (Gast)


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

von Patrick (Gast)


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-Tutorial#Analoge_Ein-_und_Ausgabe 
nachlesen. Dann kannst Du im Interrupt des ADC prüfen, ob der Wert 
erreicht wurde und dann die gewünschte Aktion ausführen lassen.

von Patrick (Gast)


Lesenswert?

z.B. so:
1
ISR (ADC_vect)
2
{
3
 value = ADCL;
4
 value += (ADCH<<8);                //read content in ADC data register
5
6
 if (value > MAXVAL)                //compare value with maximum
7
 {
8
    //do something
9
 }
10
 }

von Stefan E. (sternst)


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.

von Oliver (Gast)


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

von Gregor (Gast)


Lesenswert?

Hallo

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

von Andre G. (bb21)


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?

von Oliver (Gast)


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

von Triple XxX (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.