Ich verwende einen LM35 an einem analogen Eingang eines Arduino, um die
Temperatur in einem Zimmer zu messen. Als Referenz verwende ich die
internen 1.1V des ATMega. Außerdem schalte ich mit einem digitalen
Ausgang über einen Transistor einen PC817 Optokoppler, der wie der LM35
über den 5V Ausgang des Chips gespeist wird. Natürlich mit den passenden
Vorwiderständen.
Wenn ich den Schalter zu- oder abschalte, springt die vom Arduino
gemessene Temperatur um bis zu 1°C. Das möchte ich gerne vermeiden.
Mit dem Multimeter habe ich gemessen, dass die Spannung über dem
Temperatursensor beim zuschalten des Optokopplers von 5.13V auf 4.89V
abfällt. Die Spannung am Ausgang des Temperatursensors bleibt dabei
konstant. Wenn der Schalter geschlossen ist fließen durch den Transistor
hinter dem Optokoppler insgesamt 21mA. Externe Spannungsversorgung ist
ein USB-Netzteil.
Da ich nicht viel Erfahrung habe, würde ich gerne wissen, ob ich mit den
folgenden Überlegungen richtig liege:
* Die Messungenauigkeit kommt davon, dass die interne Referenzspannung
des Chips ebenfalls um ca. 5% springt
* Die Stromversorgung ist nicht zu schwach -- der Spannungseinbruch
kommt schlicht durch die Toleranz in der Spezifikation des 5V
Ausgangs des ATMega
* Die sinnvollste Lösung ist, eine zuverlässigere Referenzspannung zu
erzeugen. Das geht am einfachsten mit Z-Diode + Widerstand.
..und falls nicht bin ich natürlich an Details zu meinem Denkfehler und
einer richtigen Lösung interessiert ;-) Vielen Dank!
Phillip schrieb:> * Die Messungenauigkeit kommt davon, dass die interne Referenzspannung> des Chips ebenfalls um ca. 5% springt
Nein. Die sollte auf 0.1% genau bleiben.
> * Die Stromversorgung ist nicht zu schwach -- der Spannungseinbruch> kommt schlicht durch die Toleranz in der Spezifikation des 5V> Ausgangs des ATMega
Richtig, die Abweichung ist in Ordnung, ABER: Ist es wirklich ein
Spannungseinbruch, oder ist es eine Störung ? Schlecht gefilterte
Störungen wirken sich nämlich aus - vor allem auf die Ausgangsspannug
des LM35. Alles, was sich in der Versorgung schneller als mit 100kHz
ändert, reicht der LM35 direkt an den Ausgang weiter. Miss also erst mal
dessen Ausgangsspannnung, DC und AC.
> * Die sinnvollste Lösung ist, eine zuverlässigere Referenzspannung zu> erzeugen. Das geht am einfachsten mit Z-Diode + Widerstand.
Nein, eine Z-Diode ist erheblich schlechter als die interne Refenez des
ATmega.
Aber beschaltet der ATmega die Refezn (AREF) des ATmega korrekt ?
Hubert G. schrieb:> Wenn du über den USB den Arduino versorgst wird die Spannung nicht> mehr geregelt. Also wird dein Netzteil schwanken.
Das hatte ich völlig übersehen, danke! Zwar bin ich lasttechnisch weit
weg von dem, wo die Grenzen des Netzteils liegen, aber USB lässt ja
ebenfalls Schwankungen der Spannung zu. Leider ist das einzige passende
Netzteil, das ich habe, anscheinend trotz anderslautenden Aufdrucks zu
schwach, aber das werde ich mal weiterverfolgen..
MaWin schrieb:> Richtig, die Abweichung ist in Ordnung, ABER: Ist es wirklich ein> Spannungseinbruch, oder ist es eine Störung ? Schlecht gefilterte> Störungen wirken sich nämlich aus - vor allem auf die Ausgangsspannug> des LM35. Alles, was sich in der Versorgung schneller als mit 100kHz> ändert, reicht der LM35 direkt an den Ausgang weiter. Miss also erst mal> dessen Ausgangsspannnung, DC und AC.
Ebenfalls ein spannender Hinweis. Für eine AC-Messung fehlt mir das
Equipment, aber ich habe einfach mal hinter dem Ausgang einen Tiefpass
(16Hz) nachgeschaltet. An dem beobachteten Effekt ändert sich nichts,
womit ich diese Erklärung ausschließen kann, richtig?
MaWin schrieb:> Aber beschaltet der ATmega die Refezn (AREF) des ATmega korrekt ?
Wie gesagt ist das ein Arduino, ich habe da gar nichts selbst
beschaltet. Ich gehe von daher mal davon aus..
Phillip schrieb:> dass die Spannung über dem> Temperatursensor beim zuschalten des Optokopplers von 5.13V auf 4.89V> abfällt.
240mV bei 21mA Stromänderung, das sind ja >11 Ohm Innenwiderstand, da
stimmt was nicht.
Die USB-Kabel sind ja recht dünn, aber >1 Ohm sollten sie nicht haben.
Inzwischen hatte ich Gelegenheit, das ganze mit einem 9V-Netzteil
auszuprobieren. Damit tritt das Problem genauso wie im 1. Post
beschrieben ebenfalls auf. Insofern nehmen sich die Regler in meinem
USB-Netzteil und auf dem Arduino anscheinend nichts. Als praktische
Lösung habe ich den LM35 jetzt schlicht durch einen digitalen Sensor
ersetzt (DS18B20). Klappt auf den ersten Blick einwandfrei, ich sehe
keine Sprünge mehr.
Mich interessiert allerdings immer noch, woran es denn letztlich liegt,
dass die LM35-Messung dermaßen sensibel auf Laständerungen reagieren.
Ich werde bei Gelegenheit mal messen, ob die interne Spannungsreferenz
tatsächlich nicht um mehr als .1% schwankt, denn das wäre meiner Meinung
nach derzeit die naheliegenste Ursache.
Falls jemand hier vorbei schaut, der zufällig weiß, was schief gegangen
ist, würde ich mich über eine Erklärung freuen. Ansonsten experimentiere
ich selbst weiter, ist ja jetzt nicht mehr so akut. Vielen Dank für die
Hilfe bis hier!
Ich weiß ja nicht woher dein Arduino kommt, aber bei einigen aus good
old China soll es gerade in diesem Bereich schon zu erheblichen
Abweichungen und damit verbundenen Fehlern gekommen sein.
Zu Dokumentationszwecken, falls jemand anderes mit einem ähnlichen
Problem auf diesen Thread stößt:
V_ref liegt tatsächlich teils deutlich unter den versprochenen 1.1V,
bzw. schwankt. Ich habe versuchsweise stattdessen eine externe Referenz
verwendet (einen LT1004CZ) und seitdem klappt auch die Messung mit dem
LM35.