Forum: Mikrocontroller und Digitale Elektronik Temperaturmessung


von Marko (Gast)


Lesenswert?

Seit kurzem beschäftige ich mich mit Programmierung von ATMEL - 
Prozessoren und habe mir für erste Experimente das STK 500 gekauft. Nun 
habe ich auch schon ein ehrgeiziges Projekt vor Augen und kann dabei 
etwas konstruktive Hilfe gebrauchen.

Es folgt nun eine kurze Projektbeschreibung:
Es sind ca. 29 oder auch weniger Temperatursensoren vom Typ SMT 160-30 
die ich nacheinander (Schleife) mit Hilfe eines Microcontrollers über 
den jeweiligen Temperaturstatus abfragen möchte. Die Messwerte sollen in 
einen Textfile geschrieben werden, in dem sie zur weiteren Verarbeitung 
zur Verfügung stehen.

Noch kurz etwas zum SMT 160-30 von Smartec.
Im "Smartec-Sensor" wird die Temperatur von einem Halbleiterelement 
(PTAT-Proportional To Absolute Temperature) aufgenommen. Nach der 
Verstärkung und Linearisierung wird die Ausgangsspannung mittels 
A/D-Wandler in ein Signal umgesetzt, dessen Tastverhältnis direkt 
proportional zur Temperatur T ist (Pulsbreitenmodulation). Das digitale 
Ausgangssignal des Sensors kann zur Weiterverarbeitung direkt an einen 
Mikrokontroller angeschlossen werden und belegt dort nur einen digitalen 
Eingang. Die Frequenz 1/tp des Rechtecksignals bewegt sich über dem 
Temperaturbereich und der Exemplarstreuung zwischen 1kHz und 4kHz. 
Dieser Effekt beeinflußt die Auswertung jedoch in keiner Weise, da der 
Tastgrad (td/tp) den relativen Bezug zwischen Periodendauer tp und 
Einschaltzeit td des Rechtecksignals darstellt.

Mir geht es jetzt darum, wer kann mir interessante und konstruktive 
Tipps geben, wie ich ein solches Projekt realisieren kann.

Vielen Dank

von crazy horse (Gast)


Lesenswert?

Geht eigentlich nur mit Hilfe eines Multiplexers, dessen Ausgang dann am 
besten auf den ICP geht. Also Meßstelle auswählen, Periodendauer messen, 
nächste Meßstelle usw. Die Abtastfrequenz geht natürlich umso weiter in 
den Keller, je mehr Meßstellen du vorsiehst. ICP stellst du meinentwegen 
zuerst auf fallende Flanke. In der ISR schaltest du auf steigende 
Flanke, den ICP-Wert speichern, das ist dann dein Startwert (t1). Als 
nächstes kommt wieder eine steigende Flanke, Wert (t2)speichern, wieder 
auf fallende Flanke umschalten. Bei der nächsten fallenden Flanke hast 
du dein Meßergebnis komplett (t3). Der Timer kann durchlaufen, um einen 
Überlauf brauchst du dich nicht zu kümmern (kann aber für ein timeout 
benutz werden, falls nämlich ein Sensor kein Signal liefert, bleibt die 
ganze Sache sonst stehen)
Ein Beispiel: Quarz 8MHz, Timertakt 8MHz = 125µs, der Timer kann also 
ca. 8ms zählen, lang genug, um bei deiner min. Frequenz von 1kHz nicht 
zweimal überzulaufen, dann wirds nämlich falsch.
t1 0x4000
t2 0x5000
t3 0x7000
Peiodendauer ist t3-t1=0x3000, Impulsbreite t2-t1=0x1000.
Wenn der Timer während der Messung überläuft, ist es auch kein Problem, 
wenn du die Berechnung mit unsigned int durchführst.
t1 0xf000
t2 0x0000
t3 0x2000
kommt zum selben Ergebnis.
Der Vorteil dieser Methode: die Zeiten werden unabhängig von 
Softwarelaufzeiten mit der max. möglichen Genauigkeit gemessen.

von Peter D. (peda)


Lesenswert?

Also wenn Du 29 Sensoren brauchst, kommen eigentlich nur die DS18B20 in 
Frage.

Die kannst Du nämlich alle parallel schalten, weil jeder eine weltweit 
einmalige 48-Bit-Adresse hat.

D.h. es reicht ein Portpin für alle zusammen.

Die Temperatur wird direkt als Digitalwert in °C ausgegeben. Die 
Auflösung ist bis herab zu 0,0625° Schritten auswählbar.

Einfacher gehts wirklich nicht.


Peter

von mikki merten (Gast)


Lesenswert?

@marko
Der von die gewählte Sensor eignet sich nicht für ein Bussystem (3 
Draht). Dafür wären dannn die von Peter vorgeschlagenen DS18B20 
geeignet.

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.