Forum: Mikrocontroller und Digitale Elektronik Temperatur des PT100 mit Atmega8 in Bascom auf Display anzeigen


von eddy (Gast)


Lesenswert?

Hallo zusammen,

das Thema PT100 wurde hier sicherlich schon reichlich diskutiert und 
beraten. Jedoch konnte ich auch nach langer Suche die für mein Fall 
benötigte Hilfe leider nicht finden.

Ich möchte mit PT100 die Temperatur (0-200 °C) messen und diese auf 
einem LCD Display anzeigen. Ich habe die Messverstärkerschaltung wie auf 
diesem Link nachgebaut: 
http://www.mikrocontroller.net/attachment/28386/msy0000.pdf

Nun weiss ich aber nicht, wie ich das von dem analogen Signal (0-5 V) 
durch die vom AD-Wandler in digitale Signale umgewandelte Ergebnis in 
die korrekte Temperaturangabe umwandeln kann. Der AD-Wandler des Atmega8 
besitzt 10bit und wandelt das ganze intern in Zahlen von 0-1024 um. Wie 
kann ich diese Information für mein Temperaturbereich von 0-200 °C 
nutzen?

Gibt da schon fertige Codes zu?
Wenn ja und ich es übersehen haben sollte, bitte ich um Links dazu.
Benutze Bascom AVR, daher wäre es hilfreich, wenn der Code passend zu 
dieser Software wäre.

Für eure Hilfe wäre ich sehr dankbar.

Gruß, Eddy

von Paul Baumann (Gast)


Lesenswert?

Guck mal hier hin:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC
Dort ist es ganz manierlich beschrieben, in Bascom-Quelltext mußt Du es
selbst bringen.

MfG Paul

von Eddy (Gast)


Lesenswert?

Hallo Paul,
danke schon mal für dein Antwort.
Werde mich damit intensive beschäftigen und hoffe, dass es mir weiter 
helfen wird. Schade das es nicht schon fertige Codes für Bascom gitb 
gibt, da es sicherlich nicht neu ist, was ich suche.

Mfg Eddy

von Arno H. (arno_h)


Lesenswert?

Der LM317 benötigt einen Mindeststrom, die Stromquelle ist so nicht 
zuverlässig.
Du musst vom Ausgang des LM317 nach GND noch einen Widerstand schalten, 
der ca. 5 -10 mA fliessen lässt.

Arno

von chris (Gast)


Lesenswert?

ich hab sowas ähnliches mal mit einem kty10 gemacht... ich weiß es jetzt 
natürlich nicht sicher, aber ich denke die differenzen zw kty10 und 
pt100 sind minimal...

ich hab jetzt grad meine ganzen projekte durchsucht...kann den quellcode 
aber leider nicht mehr finden... aber soweit ich mich erinnern kann, 
gabs da eine ganz einfache formel, aus der sich die korrekte temperatur 
berechnet ;)

von Ulf (Gast)


Lesenswert?

Hallo eddy,

Die Schaltung mit dem PT100 habe ich auch angewandt, zur 
Temperatursteuerung eines 200W- Lötkolbens.
@Arno H.: Mit dem Mindeststrom hatte ich keine Probleme, die 1mA 
Einstellung funktioniert im Meßbereich problemlos.
Wichtig ist die negative Versorgungsspannung des LM324.
Ansonsten beginnt die Anzeige erst ab ca. 40°C, weil der Ausgang dann 
nicht auf 0V geht.
Zur Kompensation von Störungen(Lötkolbenheizung!) war noch ein kleiner 
Elko parallel zum PT100 hilfreich.
Falls Du keine Kommastellen anzeigen willst(dazu müßte sowieso eine 
etwas aufwendigere Meßschaltung mit genauer Spannungsquelle usw. 
aufgebaut werden), kannst Du einfach nur den ADH Wert verwenden.
Dann ist der AD- Wert 8Bit groß, und 5V entsprechen der Zahl 255.
(Siehe Ende Kapitel 7 der PT100 Arbeit)
Eine 8Bit Zahl aufs Display zu bekommen ist dann nur noch eine 
Grundübung.



Viel Spaß dabei!

ulf.

von eddy (Gast)


Lesenswert?

Hallo zusammen,

vielen Dank schon mal für die vielen informativen Informationen.

Ulf: An der LM324 habe ich +12V und GND angeschlossen. Ist es wirklich 
wichtig, eine negative 12V anzuschließen?

Gerade die am Ende genannte Artikel mit der Umwandlung des AD-Wandler 
von 0-255 in Temperatur bereitet mir schwierigkeit.
Bin Absoluter Neuling und weiss wirklich nicht, wie ich die Digitale 
Zahl nun in mein Temperatur umwandeln kann.
Der Atmega8 besitz doch 10bit oder? Also wandelt der AD-Wandler intern 
in Zahlen von 0-1024, oder verstehe ich da etwas falsch?

Wäre nett wenn jemand vielleicht ein Code oder genaue Step by step 
Erklärung für mich hat, wie ich das nun in Temperatur umwandeln kann.

Mfg Eddy

von Matthias L. (Gast)


Lesenswert?

>Der Atmega8 besitz doch 10bit oder? Also wandelt der AD-Wandler intern
>in Zahlen von 0-1024, oder verstehe ich da etwas falsch?

Nein. Er wandelt von 0...1023! (bei right alignment)

Jetzt brauchst du eine Funktion: Temperatur = f(ADC_Wert).

von Eddy (Gast)


Lesenswert?

Danke für die Information.

Habe nun die Funktion dementsprechen umgeändert und es funktioniert.
Naja, zumindest funktioniert es, wenn ich eine Spannungsquelle an 
ADC-Port anlege. Das Display spuckt dann die entsprechende Temperatur 
aus.
Ich hoffe das es die richtige Temperatur ist, da es mit der PT100 noch 
nicht so klappt.
Wenn ich die PT100 anschließe, zeigt es mir immer nur 0 Grad an.
Zumindest denke ich mal, kann man die Fehlerquelle in der Software 
ausschließen und nur noch die Elektronik anschauen.
Habe mal den Strom gemessen, der durch den PT100 fließt.
Eigentlich sollte es 1mV sein, aber bei mir ist sie nahe 0 V. Woran kann 
es liegen?
Hat es den sonst noch einen anderen Effekt, wenn ich statt die -12Van 
den LM324 GND anschließe? Außer das die Temperaturanzeige erst bei 40 
Grad beginnt?

Mfg Eddy

von Helmut L. (helmi1)


Lesenswert?

Brauchst du PT100 Schaltungen ? kuckst du hier

Beitrag "Temperaturmessschaltung möglichst genau?"

Gruss Helmi

von Matthias L. (Gast)


Lesenswert?

>Habe mal den Strom gemessen, der durch den PT100 fließt.
>Eigentlich sollte es 1mV sein, aber bei mir ist sie nahe 0 V.

Die Aussage ist Unsinn. Spannung liegt an, Strom fließt.

Wenn ich das lese:
>wenn ich eine Spannungsquelle an ADC-Port anlege.

vermute ich, du hast die Spannungsquelle abgeklemmt und dafür das PT100 
zwischen ADC-Port und GND angeschlossen. Dann ist auch klar, dass du 0V 
darüber misst. Das ist nämlich nicht korrekt!

Du brauchst eine (Konstant)Stromquelle, damit über dem PT100 überhaupt 
eine Spannung abfallen kann. Sonst kann der ADC doch nichts messen.

von Jadeclaw D. (jadeclaw)


Lesenswert?

@Ulf (Gast): Um mit dem Irrtum aufzuräumen, ich habe am Wochenende 
einige Messungen zum Thema Ausgangsspannungsbereich diverser OpAmps 
gemacht.
Ergebnis:
Der LM324 bzw. LM358 kann bei asymmetrischer Versorgung ausgangsseitig 
sehr wohl bis 0V heruntergehen. Einzige Grundbedingung: Keine Last gegen 
Vcc. Bei der im PDF angegebenen Schaltung liegen alle Lasten zwischen 
GND und Ausgang. Damit geht es. Ein TLC272 kann immerhin sehr hochohmige 
Lasten zwischen Ausgang und Vcc auf nahezu 0V ziehen. Aber selbst echte 
Rail-to-Rail-OpAmps haben Probleme, eine Last zum entgegengesetzten Ende 
zu ziehen, wie ein Blick ins Datenblatt schnell offenbart. Da bleiben 
schnell einige 100mV stehen.

Gruß
Jadeclaw

von Anonymous (Gast)


Angehängte Dateien:

Lesenswert?

See attachment.

von Lothar S. (magic33)


Lesenswert?

in Bascom

config ADC=single,Prescaler=auto,Reference=AVCC
'mit 100nF an Aref gegen Gnd und 10µH 5V gegen AVcc wie im datenblatt 
des Mega8
Dim wert as word '1023 werte
do
wert=2 'damit man sieht ob was gemessen wird
wert = getadc(x)'x=portwert ADC3 x=3
lcd wert
wait 1
cls
loop


zur temperatur spannungsteiler 5V
wurde schon beschrieben!

im datenblatt kanst du das gegenrechnen mit den ohmwerten
und somit auf die temperatur umrechnen

BSP
ADC*AVCC Bsp 610*5V =3050
einen kalibrierten wert zb 2,7315V =560=adctnull=0Grad das ist der vom 
LM335=Liniartemperaturmesser
somit ergebniss(1)=3050-adctnull=2490 =24.9Grad

von Peter K. (opa-peter)


Lesenswert?

Hi,
ich denke das kann man viel einfacher und eleganter lösen.
1) PT100 direkt über Vorwiderstand an Spannung AVC (mit gew. 
stromstärke)
2) Spannung direkt am PT100 messen.
Einzig Mögliche Fehlerquelle sind Schwankungen der Spannung, diese 
einfach rausrechnen indem mit einem zweiten Analogeingang die Spannung 
misst.

Oder ?

von Helmut L. (helmi1)


Lesenswert?

@Peter Kaiser

Schon mal nachgerechnet  welchen Signalhub du damit erreichst ?
Bei 0 Grad hast du 100 Ohm und bei 100 Grad 138.5 Ohm
Den Pt100 mit 1mA gespeist ergibt:

Bei 0 Grad 0.1V
Bei 100 Grad 0.1385V

Damit nützt du den ADC nur zu einem kleinen Teil aus.
Besser verstärken und den Offset den die 100 Ohm erzeugen subtraieren.

Gruss Helmi

von Gast Posti (Gast)


Lesenswert?

Hi

Sehe gerade, der Thread war schon 'älter' - na gut ;)

Den Einwand von Peter Kaiser, darf ich den so verstehen:
PT100 direkt von zwischen +5V und GND mit entsprechendem Vorwiderstand, 
daß 1mA fließen würde (bei 5V).
Wenn die Spannung schwankt, schwankt auch der Ref-Wert im ADC und meine 
mehr gemessene Spannung am PT100 durch den (etwas) höheren Strom, da 
höhere Spannung (oder umgekehrt) würde von der ebenfalls 
höheren(tieferen) REF-Spannung 'aufgefressen' ??

Wobei solche Spannungsschwankungen wohl prozentual weitaus geringer 
ausfallen als die Aufgrund der Nichtlinearität des PT100 eh entstehenden 
2% Fehler - oder ?

Dann noch, kann man diese ganzen Temp-Sensoren 'einfach !!' 
linearisieren?
Oder zumindest mit 2 / 3 Punkten 'gerade_r(!) biegen' ?
(Ok, kann man bestimmt - ist es 'den Mehr-Aufwand' wert?)

Oder ist es für einen zwar elektronisch interessierten aber zeitlich 
stark eingegrenzten 0-8-15 Bastler sinnvoller, eine 1-Chip-Lösung 
herzunehmen, die zwar einen recht großen Offset (laß was von bis zu 2K) 
aber sonst recht genau sein sollen?

Ein sehr interessantes Thema, drücke mich hier echt gerne nach 
Feierabend rum :)

MfG

von Helmut L. (helmi1)


Lesenswert?

>Den Einwand von Peter Kaiser, darf ich den so verstehen:
>PT100 direkt von zwischen +5V und GND mit entsprechendem Vorwiderstand,
>daß 1mA fließen würde (bei 5V).

Ja so hat er es gemeint.

Dabei nützt du aber die Auflösung des ADC nicht aus.

Beitrag "Temperaturmessschaltung möglichst genau?"

Gruss Helmi

von Anselm (Gast)


Lesenswert?

Wie linearisiert Ihr denn nun?
Vergleichstabelle oder rechnerisch?

Anselm

von Arc N. (arc)


Lesenswert?

Anselm wrote:
> Wie linearisiert Ihr denn nun?
> Vergleichstabelle oder rechnerisch?
>
> Anselm

Kommt drauf an.
1. Frage: Muss es schnell sein (und relativ viel Speicher brauchen) oder 
darfs auch langsamer sein?
2. Frage: Wie genau muss das ganze sein?

Beispiel: Rechnet man beim PT100 mit den Standard-Formeln den gemessenen 
Widerstand in eine Temperatur um, ist dies nur bei Temperaturen oberhalb 
von 0 °C genau, braucht man die gleiche Genauigkeit unterhalb von 0 °C 
"bastelt" man sich entweder ein besseres Polynom zur Berechnung oder man 
erstellt eine Tabelle.
Bei Thermoelementen ist es ähnlich.
Wie man bei der Tabellenvariante zwischen den Stützstellen interpoliert 
hängt letztlich auch vom Anwendungsfall ab, ausser das dort so gut wie 
immer eine einfache, lineare Interpolation ausreicht.

von Der wohl ahnungslose (Gast)


Lesenswert?

Hallo Arc Net
Möchte selbst mehrere Temp-Sensoren auslesen, welche, steht eigendlich 
noch nicht fest (wird wohl der Preis entscheiden).
Eine Genauigkeit bei 10°C-40°C von 0,1K fände ich brauchbar.
Wenn man mehrere Temp-Widerstände benutzt, werden sich wohl gewisse 
Tolleranzen ergeben.
Sind diese Tolleranzen großtteils als Offset zu Erwarten?
Meine damit, wenn ich z.B. zwei PT100 nutze, daß bei 0°C der Eine 100 
Ohm hat, und der Andere 100,irgendwas Ohm.
Hoffe aber, daß das Verhältnis bei Temperaturänderungen bestehen bleibt.

Welche Temp-Widerstände setzt Ihr ein und wie schafft Ihr es, daß die 
verschiedenen Sensoren das Gleiche anzeigen?
Hab nämlich keine große Lust, für jeden Sensor einen Offset und einen 
Korrekturfaktor einzubinden.

von Arc N. (arc)


Lesenswert?

Der wohl ahnungslose wrote:
> Hallo Arc Net
> Möchte selbst mehrere Temp-Sensoren auslesen, welche, steht eigendlich
> noch nicht fest (wird wohl der Preis entscheiden).
> Eine Genauigkeit bei 10°C-40°C von 0,1K fände ich brauchbar.
> Wenn man mehrere Temp-Widerstände benutzt, werden sich wohl gewisse
> Tolleranzen ergeben.
> Sind diese Tolleranzen großtteils als Offset zu Erwarten?
> Meine damit, wenn ich z.B. zwei PT100 nutze, daß bei 0°C der Eine 100
> Ohm hat, und der Andere 100,irgendwas Ohm.
> Hoffe aber, daß das Verhältnis bei Temperaturänderungen bestehen bleibt.

1/3 DIN B PT100 zulässiger Fehler bei 0 °C 0.1 K d.h. der Widerstand 
darf um +-0.039082 Ohm abweichen.
Bei 40 °C wären +-0.166 K zulässig ~ +-0.064364 Ohm.
Einfacher Offset funktioniert nicht, ausser die somit erzielte 
Genauigkeit reicht aus.

> Welche Temp-Widerstände setzt Ihr ein und wie schafft Ihr es, daß die
> verschiedenen Sensoren das Gleiche anzeigen?

PT1000, PT100, PT25 und div. Thermistoren
Passende Schaltung, passende (selektierte) Sensoren/Fühler und 
vollständige Kalibrierung von Sensor/Fühler und Schaltung bzw. der 
Messkette (je nach dem was tatsächlich gefordert ist).

> Hab nämlich keine große Lust, für jeden Sensor einen Offset und einen
> Korrekturfaktor einzubinden.

Entweder sowas
http://www.ussensor.com/prod_inter_ultra.htm
Austauschbarkeit +-0.05 °C zw. 0 °C und 50 °C
oder PT100 1/10 DIN B
Mit beiden könnte man - ohne Fehler der Schaltung bzw. Kalibrierung der 
Schaltung - die geforderte Genauigkeit erreichen.

von Anselm (Gast)


Lesenswert?

Schaltung musst du meiner Meinung nach immer kalibrieren.
Sei es auch nur mit einem präzisem 100 Ohm Wdst. vom grossen C
die marktüblichen Widerstände 1% sind im Vergleich der PT100 riesig.

p.S.: Formel Temp. aus R
Korrekturwerte:

Gruß Anselm

von Arc N. (arc)


Lesenswert?

Anselm wrote:
> Schaltung musst du meiner Meinung nach immer kalibrieren.

Die Formulierung
"Mit beiden könnte man - ohne Fehler der Schaltung bzw. Kalibrierung der
Schaltung - die geforderte Genauigkeit erreichen."
ist etwas ungeschickt geraten...
Gemeint war: "Mit beiden könnte man - ohne Berücksichtigung der Fehler 
der Schaltung bzw. mit Kalibrierung der Schaltung - die geforderte 
Genauigkeit erreichen."

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.