Forum: Mikrocontroller und Digitale Elektronik Temperaturmessung mit Atmega328


von Robert K. (chrysler001)


Angehängte Dateien:

Lesenswert?

Hallo,

ich muss echt sagen, super tolles Forum! Man kann hier super viel lernen 
und bekommt immer Hilfe und neue Ideen!

Kommen wir zu meinem Problem. Ich bin gerade dabei ein Projekt zu 
machen, welches unteranderem eine Temperaturmessung eines Fluides 
beinhaltet.
Diese Temperaturmessung sollte wenn es geht auf 0,1 Grad genau sein, 
wenn es 0,5 Gradschritte sind wäre es auch noch ok. Der 
Temperaturbereich sollte zwischen 0 Grad - 100 Grad liegen.
Ich habe einen Temperatursensor von Conrad (Temperatur-Sensor 2000 ? 
ST-20M -50 - +150 °C). Das datenblatt habe ich mal mit angehangen.
Die Messung wird an einer bestimmten Stelle im Programm und nur einmal 
durchgeführt(single conversion mit polling).
Bin mir aber noch unschlüssig ob ich die ganzen 10bit nehme oder ob 8bit 
für den Wert der Wandlung reichen, da die zwei
letzten Bits doch sehr schwanken.
Aber um auf meine eigentlich Frage oder mein eigentliches Problem zu 
kommen, ich habe nach der Messung / AD-Wandlung in einer Variable meinen 
Wert zwischen 0-1024 stehen.
Wie bekomme ich aus diesem Wert meine Grad Zahl also mein float, welche 
ich dann über meine UART senden kann?
Habe da iregndwie ein denk Problem, weil ich nicht weis wie ich daran 
gehen soll um den digitalwn Wert in den tatsächlichen Temperaturwert 
umzurechnen.

Schönen Abend noch

Lg Robert

von Tuxi (Gast)


Lesenswert?

Auf der ersten Seite steht doch die Formel ... wo ist da das Problem?

von Sascha (Gast)


Lesenswert?

Arduino, Conrad...passt alles wieder wie Arsch auf Eimer.

von Wolfgang (Gast)


Lesenswert?

Robert K. schrieb:
> ich muss echt sagen, super tolles Forum! Man kann hier super viel lernen
> und bekommt immer Hilfe und neue Ideen!

Genug des süßen Honigs ...

> Diese Temperaturmessung sollte wenn es geht auf 0,1 Grad genau sein,
> wenn es 0,5 Gradschritte sind wäre es auch noch ok.

Lies mal ein paar Grundlagen über den Unterschied zwischen Genauigkeit 
und Auflösung.

> Bin mir aber noch unschlüssig ob ich die ganzen 10bit nehme oder ob 8bit
> für den Wert der Wandlung reichen, da die zwei letzten Bits doch sehr
> schwanken.

Trotz der Schwankungen enthalten auch die unteren Bits ein Stückchen 
Wahrheit. Mittelwertbildung ist das Geheimnis vieler Messungen, um das 
allgegenwärtige Rauschen der Welt ausreichend stark abzuschwächen.

von Wolfgang (Gast)


Lesenswert?

Robert K. schrieb:
> datenblatt1.jpg

Warum verlinkst du statt irgenwelchem JPEG Pixelgeschmiere im 
Photoformat nicht das Datenblatt des ST-20M/Z
http://www.sensorpro.com/images/Dsht-ST20f.pdf

von Anja (Gast)


Lesenswert?

Wolfgang schrieb:
> Trotz der Schwankungen enthalten auch die unteren Bits ein Stückchen
> Wahrheit. Mittelwertbildung ist das Geheimnis vieler Messungen, um das
> allgegenwärtige Rauschen der Welt ausreichend stark abzuschwächen.

Hallo,

wenn da etwas schon bei 10 Bit um 2 Bits schwankt ist irgendwas mit der 
Schaltung faul. Ich habe selbst bei 12 Bit Temperaturmessungen maximal 
an den Stellen zwischen 2 Messwerten ein hin und herspringen.

Robert K. schrieb:
> Bin mir aber noch unschlüssig ob ich die ganzen 10bit nehme oder ob 8bit
> für den Wert der Wandlung reichen, da die zwei
> letzten Bits doch sehr schwanken.

Robert K. schrieb:
> Diese Temperaturmessung sollte wenn es geht auf 0,1 Grad genau sein,
> wenn es 0,5 Gradschritte sind wäre es auch noch ok.

Bei 0..100 Grad Messbereich mit 0.1 Grad Auflösung brauchst du 
mindestens 10 Bit. In der Realität gelingt dies nur wenn du einen 
entsprechenden Meßverstärker hast, der den Temperaturbereich exakt an 
den Messbereich des ADCs anpassen kann.

Robert K. schrieb:
> Wie bekomme ich aus diesem Wert meine Grad Zahl also mein float, welche
> ich dann über meine UART senden kann?

Im einfachsten Fall über lineare Interpolation.
Wobei ich vermute daß du kein float (binär) sondern eine ASCII 
Zeichenkette mit einer Dezimalzahl an den UART schicken willst.

Gruß Anja

von Wolfgang (Gast)


Lesenswert?

Anja schrieb:
> wenn da etwas schon bei 10 Bit um 2 Bits schwankt ist irgendwas mit der
> Schaltung faul.

Wer weiß schon, wie in dem Aufbau von Robert die Referenzspannung 
abgeblockt ist, wie stabil sie ist, was sonst noch in die Schaltung rein 
streut oder was die Verdrahtung des Sensors so einfängt. Da sind auch 
bei nur 10Bit schnell mal zwei Bit mit Rauschen vermüllt.

von Steven M. (8023)


Lesenswert?

Nimm doch der einfachheit halber gleich einen ds18b20... Die libs 
funktionieren, und geben dir den wert in °C zurück... Und vor allem, 
hält sich der hardwareaufwand in grenzen...

von Wolfgang (Gast)


Lesenswert?

Steven M. schrieb:
> Und vor allem, hält sich der hardwareaufwand in grenzen...

Wenn du eine Quelle für einen DS18B20 im passenden Einschraubgehäuse 
hast, mag das richtig sein. Aber bis der DS18B20 so verpackt ist, muss 
man einigen Hardwareaufwand treiben.

von Steven M. (8023)


Lesenswert?

man muss ja keinen zum einschrauben nehmen... es gibt auch lösungen die 
bestehen nur aus einer hülse, die ins rohr eingeschweißt oder geschraubt 
ist, in die ein standardfühler, ggf mit etwas wärmeleitpaste, 
eingeschoben wird (aka tauchhülse). hat den vorteil, dass man das system 
ansich nicht öffnen muss, wenn man den fühler wechseln will...

: Bearbeitet durch User
von google (Gast)


Lesenswert?

Die 18b20 gibt es fertig verpackt:

www.ebay.de/itm/like/161742442239

von Wolfgang (Gast)


Lesenswert?

google schrieb:
> Die 18b20 gibt es fertig verpackt:
>
> www.ebay.de/itm/like/161742442239

Die entsprechen wahrscheinlich nicht den Qualitäts- und 
Preisvorstellungen des TO ;-)

Für den Hausgebrauch reicht es meist, den DS18B20 in seinem TO-92 
Gehäuse mit etwas Wärmeleiter als Anlegefühler zu verwenden und mit 
Kabelbinder zu haltern.

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.