Temperature Sensor LM35CZ zeigt falsche Temperatur an

vor 2 years 46 weeks von madmax

Hi,
hab schon wieder ein Problem!
Hab diesen Temperatursensor an meinen Arduino gebaut.

Hab vor den V+ Eingang einen 100kOhm Widerstand geschalten. Ohne den ist das Ding ziemlich heiß geworden...
Habs nach dieser Anleitung gebaut.
Vout zeigt mir aber entweder um die 47° an, oder wenn ich den 18kOhm Widerstand weglasse, zwischen 14 und 15 °.

Er schreibt auch "Der linke Pin des LM35 (siehe Grafik, abgeflachte Seite des Bauteils oben) wird mit einem der Ground (GND) Anschlüsse des Boards verbunden." Nach dem Datenblatt ist das aber Vs.
Auch wenn ich den Sensor umdrehe, zeigt er mir immer noch eine Temperatur an.
Bin da jetzt schon etwas verwirrt.
Vielleicht hat ja wer Erfahrung mit diesem Sensor.

lg Max

Ähnliche Posts

12 Antworten auf “Temperature Sensor LM35CZ zeigt falsche Temperatur an”


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
  1. caargoo (not verified) sagt:

    Hallo

    Normalerweise ist das Teil ziemlich robust. Im Datenblatt ist genau beschrieben wie
    er anzuschließen ist. Du nimmst das Teil so in die Hand,daß die flache Seite nach oben
    zeigt und die Anschlßbeine zu Dir ( ins Auge ) schauen.
    Linkes Bein ist V+
    Rechtes Bein ist GND
    Mitte ist OUT
    Es ist kein Widerstand zum Betrieb notwendig, einfach an 5Volt anschließen und
    glücklich sein.

    MfG

    Login or register to post comments

  1. madmax sagt:

    Ja das hab ich mir auch gedacht dass kein Widerstand benötigt wird...
    Aber das wird so heiß dass ich mir die Finger verbrenne!
    Und die Werte warn auch ziemlich hoch.
    Naja, ich werds mir morgen nocheinmal anschauen.

    Danke,

    lg Max

    Login or register to post comments

  1. uwe sagt:

    Hallo Max
    Wenn Du den Sensor so angeschlossen hast wie caargoo schreibt dann ist der Sensor kaputt.
    Versuchs mit einem neuen.
    Grüße Uwe

    Login or register to post comments

  1. madmax sagt:

    Hey,

    doch nicht kaputt.
    War falsch angeschlossen. ;-)
    Jetzt zeigt er die Temperatur fast richtig an. Ein paar Grad zu viel.

    Was ich aber noch nicht ganz verstehe, ist die Umrechnung von Volt in float.
    Ich rechne "analogRead(Temp) / 2", aber wieso?
    Arduino rechnet ja anscheinend die mV * 0,2. Also 270mV * 0,2 = 54.

    lg Max

    Login or register to post comments

  1. uwe sagt:

    Hallo Max

    Der "Vollauschlag" des ADC ist abhängig von der Referenzspannung; dh normalerveise entsprechen die 1023 genau 5V. Die Zahl 2 kommt von 10 mV pro Grad Celsius (LM35) und 5 Volt Meßbereich.

    Grüße Uwe

    Login or register to post comments

  1. Benno_der_Bastler sagt:

    Hallo Max,ich habe mir die Pragrammierung angesehen.das passt vorne und hinten nicht!
    Der LM35CZ sendet bei 0° 0Volt und bei minus 40°, negative 550 millivolt.Es kann also nicht sein,das dort vom Signal nochmals ein 18 kohm Wiederstand gegen Masse gelegt wird. Es müsste ein Wiederstannd,oder besser zwei als Spannungsoffset für die Signalleitung verwendet werden. Sagen wir mal,bei 0° hast du mit Hilfe der Wiederstände 0.55 Volt am ADC. Dann sollte deine Berechnung wie folgt aussehen.
    5 Volt VCC wären Theoretisch 1023+1. Also rechnenen wir 5:1024= 0.0048828
    Dann hast du die Voltzahl pro Einheitswert. Nun benötigst du die Info über den Betriebsbereich des Sensors, wir habe da -55/+110 also 205°
    Bei 0° hast du dann genau 550 millivolt am Eingang(durch den offset mit den Wiederständen), sozusagen errechnet am ADC 0.55Volt dividiert durch 0.0048828 ergibt 112.64028 Daher auch die verwendung des float Type. Ich würde allerdings mit einem Multiplikator arbeiten und dann eher den Datentyp long oder integer wählen.
    Nun musst du die Berechnung noch für den Maximalwert dürchführen. Als da wäre 1,5 volt plus 0,55 offset ergibt 2,05volt. Dividiert durch den Einheitswert 0.0048828, ergibt 419.84107 bei 110°C
    Wenn man nun augepasst hat,dann stellt man fest das der offset plus Kennlinie genau paralell zum Messbereich verlaufen. 2,05 volt zu 205 grad Messbereich!
    Daher haben wir eine lineare Kennlinie. Zur Probe sollten wir etwas rechnen.
    Rechnen wir mal 419.84107 Einheiten durch 205 Grad und erhalten den wert 2.0480
    2.0480052 ist also der Wert des ADC pro Grad Celsius.
    Beispiel: 20 Grad° entsprechen, offset von -55°+20 grad = 75°, mal errechneter Multiplikator von 2.0480052 sind 153.60 :-) fertig ist die Berechnung der Kennline und erprobt!
    Im Arduino muss nun noch mit etwas geschreibe eine vernüftige Formel erstellt werden,die dann ab 0° den Wert als negativ anzeigt. Das sollte aber nicht das Problem sein.
    Ich hoffe meine Idee findet anklang.Ich werde diese Schaltung in den nächsten sechs wochen bauen und testen,sowie den Quellcode für die Formel schreiben.Später dazu evtl mehr.
    Bis dahin, viel Freude und spaß am Physikal computing.....

    Login or register to post comments

  1. Benno_der_Bastler sagt:

    // Formel für die Temperaturumrechnung des LM35CZ mit 0.55 Volt offset

    const int offset = 113; // Hier wurde der Offset von 0.55 volt als ADC wert angegeben
    float multiplikator = 2.0480052 // hier wird der Multiplikator Wert zu °C angegeben, wurde vorher errechnet
    // Auf vollständigkeit wurde hier verzichtet,also kein void Setup usw.....
    PinSensor = A1 // hier wurde A1 als pin des LM35 verwendet
    void loop() {

    int tempWert = 0; //Hier wird die variable temp Wert wieder auf 0 gesetzt,wichtig nach durchlaufen des loops
    tempWert = analogRead((PinSensor, -offset)/=multiplikator) /* hier wird die variable tempWert errechnet.Wäre jetzt als Beispiel der wert des LM35CZ +20° als ADC 153
    des ADC dargestellt, dann wäre die rechnug wie folgt: (153 - 0ffset(113) dividiert durch 2.0480052 das wäre dann= 19.53 °Celsius. Interessant wird die sache erst bei Minustemperaturen.
    Da muss in der Praxis getestet werden,da das hier nur Theorie ist. Allerdings sollte es sich wie folgt verhalten:
    Beispiel -10° am LM35CZ. offset von 55 grad -10 = 45 grad mal Multiplikator von 2.0480052, ergibt den ADC Wert von 92,1834. Als integer einfach 92!
    Nun die berechnung des negativ-Temperaturwertes: Sensorwert des ADC(PinSensor) - offset dividiert durch multiplikator = -10.25388 ° Frost :-)*/

    Login or register to post comments

  1. uwe sagt:

    hallo Benno_der_Bastler

    Da bringst Du einiges durcheinander.
    Damit der LM35 negative Temperaturen anzeigen kann braucht er eine negative Versorgungspannung und einen Widerstand am Ausgang zur negatven Versorgungsspannung. Der Wert des Widerstandes errechnet sich aus der negativen Versorgungspannung. R = Vneg /50µA. (Figure 2 auf Seite 2 von http://www.ti.com/lit/ds/symlink/lm35.pdf )
    Wenn der LM35 eine negative Spannung ausgibt kann Arduino diese nicht lesen da der ADConverter nur positive Spannungen liest.

    "Der LM35CZ sendet bei 0° 0Volt und bei minus 40°, negative 550 millivolt"
    Bei -55°C sind das negative 550mV (immer 10mV pro °C)

    "Es müsste ein Wiederstannd,oder besser zwei als Spannungsoffset für die Signalleitung verwendet werden. Sagen wir mal,bei 0° hast du mit Hilfe der Wiederstände 0.55 Volt am ADC."
    Stimmt nicht; Du kannst höchstens den Masse-Anschluß des LM35 auf eine kleine positive Spannung geben ( zb etwas zwischen 0,55 und 1V), die aber sehr konstant sein muß, da kleine Änderungen sofort als Meßfehler in die Messung eingehen.
    Masse ist in diesem Fall eine negative Spannung und kann als negative Versorgungsspannung an den Ausgangswiderstand geschaltet werden.

    "5 Volt VCC wären Theoretisch 1023+1. Also rechnenen wir 5:1024= 0.0048828"
    Nein, das sind 1023 da eine 10 Bit Binärzahl nur von 0 bis 1023 darstellen kann.
    Die 5V sind nicht sehr genau da dies die Spannungversorgung des Arduino ist und um einige 0,1V schwanken kann.

    "Dann hast du die Voltzahl pro Einheitswert. Nun benötigst du die Info über den Betriebsbereich des Sensors, wir habe da -55/+110 also 205°"
    Wie rechnest Du? Der Temperaturbereich von -55 °C bis 110 °C sind 165°C.
    205°C ergibt sich aus dem Bereich -55°C bis +150°C.

    Mit dieser Schaltung hat man eine Temperaturauflösung der Messung von ca 0,5 °C.

    Sinnvoller ist es den Meßberiech auf mitteleuropäische Temperaturen zu planen. sagen wir von -20 °C bis 50 °C für Lufttemperaturen im freien.
    Das ergibt sich bei einem negativen offset von -0,2 Grad eien Ausgangsspannung von max. 0,7V Da eine Referenzspannung von 1,1V im ATmega vorhanden ist ist es sinnvoll für die messung diese zu aktivieren und einen negativen Offset von 0,3V zu nehmen. Daraus ergibt sich ein Meßbereich von -30°C bis 80°C mit einer Auflösung von ca 0,1075°C (110°C /1023)
    Grüße Uwe

    Login or register to post comments

  1. Benno_der_Bastler sagt:

    Hallo Uwe,

    Ich kann deine Beschreibung des LM 35 nicht ganz folgen. Wie soll denn Bitte eine negative versorgungspannung aussehen?

    Da bringst Du einiges durcheinander.
    Damit der LM35 negative Temperaturen anzeigen kann braucht er eine negative Versorgungspannung und einen Widerstand am Ausgang zur negatven Versorgungsspannung. Der Wert des Widerstandes errechnet sich aus der negativen Versorgungspannung. R = Vneg /50µA. (Figure 2 auf Seite 2 von http://www.ti.com/lit/ds/symlink/lm35.pdf )
    Wenn der LM35 eine negative Spannung ausgibt kann Arduino diese nicht lesen da der ADConverter nur positive Spannungen liest.

    Vollkommen richtig,das der ADC nur Positive werte verarbeiten kann. Deshalb Würde ich ja auch das Sihnal des LM35 mit 0,55 Volt verstärken.

    Richtig erkannt ist natürlich der messbereich von 205°. Meine Rechnung war falsch formuliert, es sind natürlich -55 bis 150 Grad Messbereich,sowie im Datenblatt beschrieben. Und genau diesen Messbereich möchte ich am LM35 auch nutzen.

    Gruß,Benno

    Login or register to post comments

  1. uwe sagt:

    "Wie soll denn Bitte eine negative versorgungspannung aussehen?"
    Eine negative Versorgungspannung ist eine Versorgungsspannung, die auf Masse bezogen, einen negative Wert hat zB -5V.

    "Vollkommen richtig, das der ADC nur Positive werte verarbeiten kann. Deshalb Würde ich ja auch das Sihnal des LM35 mit 0,55 Volt verstärken."
    Nicht 0,55V verstärken, sondern 0,55V summieren. Das Problem ist aber, Du brauchst für den LM35 und für den Operationsverstärker eine negative Versorgungspannung.

    Grüße Uwe

    Login or register to post comments

  1. Benno_der_Bastler sagt:

    Hallo Uwe,

    also ich kenne keine Spannung die - 5 Volt beträgt. Es gibt in der Elektrotechnik nur positive Energie und den neutralen(negativen) Gegenpart dazu. 0 Volt sind 0 Volt, und es ist natürlich klar das die Ausgangspannung des LM35 verstärkt oder erhöht wird. Für mich macht das keinen Unterschied im Ausdruck. Der LM35 benötigt übrigens keine negative Versorgungsspannung. Auf dem technischen Datenblatt kannst du auch eine einfache Schaltung mittels Ampermeter sehen, die sagt einfach alles darüber aus. Richtig ist nur, das ab 0° der Signalausgang keine positive Spannung mehr ausgibt. Schau mal auf Seite 7 Figur 7 an. So in etwa, nur ohne Dioden in der Masse und dafür von der Vss noch einen Wiederstand auf das Signal geschaltet, der den Signallevel um 0.55 Volt erhöht.Das würde dann dazu führen, das unter 0° die vom wiederstand angelegte Spannung über den Signaleingang des LM35 gegen Masse gezogen wird. Das wäre meine Schaltung. Leider sind meine Bauteile noch nicht aus China angekommen, aber sobald der krempel da ist, werde ich loslegen. Ein paar Messungen gemacht, widerstände berechnet und dann sollte das funktionieren.

    Gruß,Benno

    Login or register to post comments

  1. uwe sagt:

    Du hast sicher ein digitales Mulimeter. Miß mal eine 9V Batterie indem Du den roten Kabel mit dem Pluspol verbindest und den schwarzen Kabel ab den Minuspol. Du mißt um +9V (je nach Entladezustand der Batterie). Jetzt wechselst Du die Beiden Kabel und du liest -9V, eine negative Spannung.
    Das mit dem Widerstand von + Versorgungspannung zum Ausgang des LM35 funktioniert nicht. Da Du mir nicht glaubst, reden wir wieder darüber nachdem Du die Bauteile bekommen hast und getestet hast.
    Grüße Uwe

    Login or register to post comments