Forum: Mikrocontroller und Digitale Elektronik LM35 richtig anschließen


von Martin S. (sirnails)


Lesenswert?

Hallo miteinander,

ich habe mal eine Frage betreffend dem LM35 Temperatursensor. Der 
reguläre Temperaturbereich geht von 2°C bis 150°C. Laut Datenblatt wird 
der Messbereich durch eine negative Versorgungsspannung von -250mV auf 
-25°C bis 125°C verschoben. Wo bleibt dann aber der Offset von 2°C? 
Eigentlich dürfte er doch dann erst bei -23°C anfangen, oder?

Und gibt es ein IC, dass mir die -250mV aus einer unsymmetrischen 
Versorgungsspannung bereitstellt? Ich möchte ungern einen Trafo mit 
Mittelanzapfung und Spannungsteiler einsetzen, zumal laut Datenblatt nur 
50µA benötigt werden. Der Umweg über einen Max232 erscheint mir auch ein 
wenig umständlich.

Eine andere Beschaltung, die ich noch gesehen hatte, war über zwei 
verschaltete 7805 und 7905. Mir stehen aber nur 5V zur Verfügung, sodass 
ich damit wohl kaum hinkommen dürfte.

Vielen Dank für jeden Ratschlag

Grüße

M. Schwaikert.

von Oliver J. (skriptkiddy)


Lesenswert?

Wie wäre es mit einem LM75?

von hinz (Gast)


Lesenswert?

Martin Schwaikert schrieb:
> ich habe mal eine Frage betreffend dem LM35 Temperatursensor. Der
> reguläre Temperaturbereich geht von 2°C bis 150°C. Laut Datenblatt wird
> der Messbereich durch eine negative Versorgungsspannung von -250mV auf
> -25°C bis 125°C verschoben. Wo bleibt dann aber der Offset von 2°C?
> Eigentlich dürfte er doch dann erst bei -23°C anfangen, oder?

Datenblatt nochmal lesen, du hast da einiges falsch verstanden.

von MaWin (Gast)


Lesenswert?

Es gab nie einen Offset, er kam nur ohne negative Spannung
nicht ganz an 0V/0GradC ran.

von Martin S. (sirnails)


Lesenswert?

MaWin schrieb:
> Es gab nie einen Offset, er kam nur ohne negative Spannung
> nicht ganz an 0V/0GradC ran.

D.h. mit negativer Versorgungsspannung erreicht er dann auch tatsächlich 
die -25°C?

Dann bleibt nur noch die Frage, woher die 250mV- nehmen, wenn nicht 
stehlen?

von Raphael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Martin

So wie ich das verstehe, liefert der LM35 genau 10mV pro Grad Celsius, 
wobei bei 0 Grad auch 0mV ausgegeben werden. Wenn ich ihn mit Vs=+5V 
versorge, misst er nur im Bereich von 0 (oder 2)  bis 150 Grad. Für 
Temperaturen unter Null müsste er eine negative Spannung ausgeben, was 
mit +5V wohl nicht geht. Also muss man den Ausgang mit einem Widerstand 
gegen -Vs ziehen, damit negative Temperaturen angezeigt werden können. 
Im Datenblatt steht:

R1 = -Vs/50uA, im Bsp. also 100k

Ich probiers morgen mal aus...

von Martin S. (sirnails)


Lesenswert?

Hallo Ralph,

nett, dass Du mir antwortest, aber das ist jetzt schon über ein Jahr her 
:)

von Bernie (Gast)


Lesenswert?

Für Temperaturen unter 0°C ist der LM35 genau die falsche
Wahl.

Der LM335 gibt Kelvin aus, also sind 2,7316 V = 273,16 K = 0° C.

Billig zu kriegen, einfach anzuwenden - wozu also dem LM35,
wenn es auch mal frostig werden kann???

von Stefan H. (hoelsch)


Lesenswert?

Hallo,

ich kämpfe nun schon seit drei Tagen mit dem LM35. Er zeigt mir im 
seriellen Monitor meist um die 35 Grad Celsius an. Ich halte es aber 
gefühlt für angenehme Wohnzimmertemperatur - also etwa 10 Grad Celsius 
weniger. Bekannte, die zugegen waren, haben mir das bestätigt.

Ich habe den LM35 ganz normal (ohne Widerstände o.ä.) - und ich bin mir 
ziemlich sicher, auch richtig - an einen Arduino angeschlossen und die 
Berechnung per analogRead in der Form (value/1024*5000/10) durchgeführt. 
Diese Berechnungsweise habe ich an zwei verschiedenen Stellen (O'Rei... 
Kochbuch und Internet) gefunden, so dass ich davon ausgehe dass sie 
stimmt.

Da der LM35 nicht kalibriert werden muss, sollte die Temperatur doch 
eigentlich stimmen, oder?

Ich habe dann angenommen, dass der Sensor kaputt ist und mir einen neuen 
LM35 (diesmal CZ anstatt DZ) bestellt. Dieser zeigt fast die selbe 
Temperatur an. Dann wären ja beide auf die selbe Art und Weise kaputt. 
Äußerst unwahrscheinlich, nicht wahr?

Das Datenblatt habe ich mir auch durchgelesen. Jetzt weiß ich nicht mehr 
weiter.

Ach ja ... meine Ausstattung:
- Arduino Due
- Arduino Entwicklungsumgebung 1.5.2

Vielleicht hat jemand eine Idee? Ich bin übrigens Anfänger. Also bitte 
nur heimlich lachen, falls ich einen sehr dummen Fehler gemacht haben 
sollte :)

von praktikant (Gast)


Lesenswert?

>Er zeigt mir im seriellen Monitor meist um die 35 Grad Celsius an
Den Wert kannste mit einem Spannungsmesser(Multimeter) an den
LM35-pins nachmessen und damit die Genauigkeit deines Arduinos
verifizieren.

von Martin S. (sirnails)


Lesenswert?

Stefan Hölscher schrieb:
> Berechnung per analogRead in der Form (value/1024*5000/10) durchgeführt.

Hmm... der LM35 gibt 10mV/°C aus, sollte also bei 250mV liegen. Miss 
das, wie schon erwähnt, mit einem Multimeter direkt am Pin nach. Welche 
Konfiguration hast Du gewählt? Wahrscheinlich Single-Supply ohne 
negative Spannung am Ausgang? Nicht dass Du hier einen falschen Wert 
hast.

Mit 2,56V Referenz hast Du eine Auflösung von 2,5mV, also 0,25°C. Da der 
LM35 im mittleren Temperaturbereich (um die 15-25°C) maximal +-0,25°C 
Genauigkeit besitzt, ist das kein Problem (darunter und darüber liegt er 
bei +-0,75°C).

> (value/1024*5000/10)

Irgendwie verstehe ich die Rechnung nicht so ganz. In welcher 
Reihenfolge haut der Compiler das durch? ((value/1024)*5000)/10 oder 
(value/(1024*5000))/10 oder .... ?

Also wenn man das der Reihe nach durchhackt:

Value = 25°C = 250mV = 100 (=Wert)

100 / 1024 = 0,09775 * 5000 = 488,28 / 10 = 48,8°C??

Rechne ich den von Dir genannten Weg mit der Formel rückwärts, dann 
würde ich auf 18°C kommen. Wohlfühltemperatur ist das aber auch nicht.

von Stefan H. (hoelsch)


Lesenswert?

Hallo,

vielen Dank für die schnelle Hilfestellung!!

Über Pfingsten hatte ich Zeit, euren Hinweisen nachzugehen. Der 
gemessene Strom war tatsächlich 232 mA, was auf einen intakten Sensor 
schließen ließ.

Ich habe mir dann auch den Wert (von analog zu digital gewandelt) direkt 
ausgeben lassen, der vom Arduino Board an den PC übertragen wird. Der 
lag bei 72. Da die Skala bis 1024 geht, war der - mit der genannten 
Formel errechnete - Wert von ca. 35 Grad Celsius sogar richtig. Die 
Formel war speziell für Arduino so abgedruckt. Das habe ich noch 
mehrfach kontrolliert.

Die Lösung ist jedoch denkbar einfach: Beim Arduino Duo handelt es sich 
um ein 3,3 Volt Modell und nicht um ein 5 Volt Modell. Der analoge Input 
Pin des Arduino verteilt die 1024 Schritte also auf 3,3 Volt und nicht 
auf 5 Volt.
Die Formel muss daher angepasst werden: (value/1024*3300/10) anstatt 
(value/1024*5000/10) wobei value = 72 ist und (value/1024*3300) die 
Millivolt ergibt. Da der LM 35 ab 0 Grad bzw. 0mV gezählt pro Grad 10mV 
Spannung auf den analog Pin gibt, muss der Wert noch durch 10 geteilt 
werden um an die Temperatur zu kommen.

Ich hoffe das hilft dem ein oder anderen weiter.

Zwei Fragen hätte ich allerdings noch. Worum handelt es sich bei der 
genannten Referenzspannung von 2,56V und wie lässt sich daraus die 
Auflösung in Abhängigkeit von der Temperatur ermitteln?

Vielen Dank nochmal!

von Martin S. (sirnails)


Lesenswert?

Stefan Hölscher schrieb:
> Über Pfingsten hatte ich Zeit, euren Hinweisen nachzugehen. Der
> gemessene Strom war tatsächlich 232 mA, was auf einen intakten Sensor
> schließen ließ.

Spannung, nicht Strom.

Stefan Hölscher schrieb:
> Zwei Fragen hätte ich allerdings noch. Worum handelt es sich bei der
> genannten Referenzspannung von 2,56V und wie lässt sich daraus die
> Auflösung in Abhängigkeit von der Temperatur ermitteln?

Ich hoffe ich habe das noch richtig im Kopf, also ohne Pistole:

Zu 1)
Ganz einfach. Der am ADC Eingang anliegende Wert wird über einen 
Komparator mit einem Sägezahn verglichen, dessen Scheitelspannung 2,56V 
beträgt. Der Wert ist deshalb so "krumm", da 2,56 eine 2er Potenz ist, 
und somit Rundungsfehler minimiert werden. Dieser Sägezahn besitzt eine 
bekannte Frequenz. Beim Nulldurchgang wird die Zeitmessung begonnen und 
bei Erreichen des Wertes der Referenzspannung beendet. Sollte der 
Komparator zuschlagen, wird die Zeitdifferenz aus Stopp- und Startpunkt 
gebildet. Über die gemessene Zeit lässt sich direkt die anliegende 
Spannung ableiten. Diese Frequenz bestimmt daher auch die maximale 
Samplingrate.

Zu 2) Indem obiges Anwendung findet. Hast Du einen 8 Bit ADC teilt er 
immer in 256 Schritte. Da die Referenzspannung den maximal am Eingang 
liegenden Wert repräsentiert (0xFF bei 8 Bit) kann also bei einem 
Eingang von 2,56V bei einer Referenzspannung von 2,56V genau 0xFF 
herauskommen. Bei 0V und 2,56V Referenz sind es entsprechend 0x00. Da 
jetzt der Ausgangsbereich 256 Schritte besitzt, und die interne Referenz 
2,56V besitzt ergibt sich daraus eine Auflösung von 2,56V / 256 Schritte 
= 0,01V pro Schritt. Vergisst man an dieser Stelle Rundungs- und 
Linearitätsfehler, so erreicht unter obiger Vorraussetzung der ADC eine 
Auflösung von 0,01V.

Jetzt wirst Du sicherlich bemerken, warum die Referenzspannung so 
wichtig ist. Stell Dir mal obiges Beispiel mit einer Referenz von 5,12V 
vor (so das denn gehen würde, da die Referenz nicht höher als die 
Betriebsspannung sein darf). Da der ADC 8 Bit macht, teilt er jetzt die 
5,12V in 256 Schritte, sodass sich nun zwar der Spannungsbereich 
verdoppelt, die Auflösung allerdings auf 0,02V pro Schritt halbiert. Da 
jetzt auch die Eingangsspannung am ADC nicht höher als die 
Referenzspannung sein darf, zeigt sich nun, dass die Konfiguration des 
ADC immer vom zu erwartenden Eingangssignal abhängt.

Am Beispiel des LM35 könnte man z.B. annehmen: Er mach 10mV pro °C und 
somit bei Raumtemperatur 210mV. Jetzt wird es bei uns niemals heißer als 
50°C, also 500mV. In den heißesten Flecken dieser Erde wird es maximal 
70°C war, also würden, mit ein bisschen Reserve, maximal 800mV am 
Ausgang anliegen.

Jetzt könnte man also die Referenz wegen der besseren Teilbarkeit auf 
1024mV festsetzen. Bei einem ADC mit 10Bit Genauigkeit (=1024 Schritte) 
ergäbe das 1mV pro Schritt und damit eine Auflösung auf 0,1°C. Jetzt 
macht das Teil aber einen minimalen Fehler von +-0,25°C und eine 1,024V 
Referenz ist nicht gerade billig (z.B. ein Intersil ISL21010 gute 90ct. 
das Stück).

Genau deshalb kann man sie ändern, und genau deshalb macht man auch nie 
mehr, als unbedingt notwendig ist.

PS: Mit 10Bit und 2,56V erreicht das Teil genau +-0,25°C ;)

von (prx) A. K. (prx)


Lesenswert?

Martin Schwaikert schrieb:
> Ganz einfach. Der am ADC Eingang anliegende Wert wird über einen
> Komparator mit einem Sägezahn verglichen

Nicht so ganz. Tatsächlich nähert man sich dem Bit für Bit von oben nach 
unten und benötigt dafür einen DAC, einen Komparator und 10 eigentliche 
Messschritte. Sukzessive Approximation heisst das Stichwort.

von Martin S. (sirnails)


Lesenswert?

A. K. schrieb:
> Martin Schwaikert schrieb:
>> Ganz einfach. Der am ADC Eingang anliegende Wert wird über einen
>> Komparator mit einem Sägezahn verglichen
>
> Nicht so ganz. Tatsächlich nähert man sich dem Bit für Bit von oben nach
> unten und benötigt dafür einen DAC, einen Komparator und 10 eigentliche
> Messschritte. Sukzessive Approximation heisst das Stichwort.

Ja, wie gesagt, ohne Pistole. Der im Atmel verbaute ADC ist ja auch 
nicht der einzige Typ den es gibt.

von (prx) A. K. (prx)


Lesenswert?

Martin Schwaikert schrieb:
> Ja, wie gesagt, ohne Pistole. Der im Atmel verbaute ADC ist ja auch
> nicht der einzige Typ den es gibt.

Welcher in µCs integrierte ADC verwendet denn das vor die beschriebene 
Single Slope Messverfahren? Das ist derart antiquiert, das auch die 
Chips aus der Anfangszeit digitaler Multimeter wie 7106/7 das bessere 
Dual Slope Verfahren verwenden. Aber auch das ist bei Controllern 
irrelevant.

Tatsächlich sind mir in den gängigen Mikrocontrollern (non-DSP Markt) 
bisher nur die sukzessive Approximation und Delta-Sigma-Wandler 
begegnet.

von (prx) A. K. (prx)


Lesenswert?

Bei Verwendung der internen Referenz wäre zu beachten, dass die zwar 
leidlich stabil, aber der absolute Wert ziemlich ungenau ist. Wenn man 
die für LM35/335 verwendet, dann sollte man sie zunächst nachmessen und 
einen entsprechenden Korrekturfaktor einbauen (und dann ists Essig mit 
der Zweierpotenz ;-).

von Martin S. (sirnails)


Lesenswert?

A. K. schrieb:
> Martin Schwaikert schrieb:
>> Ja, wie gesagt, ohne Pistole. Der im Atmel verbaute ADC ist ja auch
>> nicht der einzige Typ den es gibt.
>
> Welcher in µCs integrierte ADC verwendet denn das vor die beschriebene
> Single Slope Messverfahren? Das ist derart antiquiert, das auch die
> Chips aus der Anfangszeit digitaler Multimeter wie 7106/7 das bessere
> Dual Slope Verfahren verwenden. Aber auch das ist bei Controllern
> irrelevant.

Wie gesagt, die Pistole. Ich habe das vor ein zwei Jahren gehört, aber 
so wirklich im Kopf geblieben ist mir das auch nicht. Allerdings sind 
diese Single Slope? Wandler recht gut zu verstehen.

Es kann natürlich sein, dass der ein oder andere Professor von uns eben 
in der Steinzeit lebt.

Unterm Strich ist mir die Verwendung der Referenzspannung klar, und wie 
der Wandler nun tatsächlich arbeitet, ist mir eigentlich ziemlich egal.

A. K. schrieb:
> Bei Verwendung der internen Referenz wäre zu beachten, dass die zwar
> leidlich stabil, aber der absolute Wert ziemlich ungenau ist. Wenn man
> die für LM35/335 verwendet, dann sollte man sie zunächst nachmessen und
> einen entsprechenden Korrekturfaktor einbauen (und dann ists Essig mit
> der Zweierpotenz ;-).

Wie gesagt bietet der LM35 kaum mehr als 0,25°C Genauigkeit. Inwieweit 
man damit den ADC des µC fordert, ist dabei dann wohl eher 
untergeordneter Rolle. Auf 0,5°C genau macht durchaus Sinn, mehr würde 
ich nicht nehmen. Ansonsten gibt es ja noch temperaturkompensierte 
Referenzdioden, die schon ein annehmbares Maß an Genauigkeit besitzen.

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.