C Temperaturmessung- PT100 am AVR

flecralf

Mitglied
25. Juli 2013
194
2
18
Sprachen
  1. ANSI C
Hallo alle zusammen,
da dachte ich mir, bau' ich mir mal zwecks Temperaturmessung eben schnell eine Schaltung auf. War aber nix.
Eigentlich soll es auf eine temperaturgeregelte PWM hinauslaufen, wobei die Genauigkeit des PT100
mehr als "weit über's Ziel hinaus" zu definieren ist. Das ganze soll den Regelkreis für einen alten Wellerlötkolben
bilden. Bei dem Kolben ist mir das Termoelement, damals im jugendlichen Leichtsinn auseinander gebrochen.
Soweit die lange Vorgeschichte in Kürze...
Jetzt bildet eine BF245A(den gibt übrigens nicht mehr bei Reichelt) eine Konstantstromquelle für den Pt100.
Der Strom stellt sich auf 1 mA bis 2 mA dabei ein. An Spannung kommt da nicht viel, bei 20 °C ca. 200 mV.
Das Ganze läuft stabil, die Spannung geteilt durch den Strom ergibt einen Widerstand der plausible Temperaturwerte
widerspiegelt.
Der AVR kann wohl nix anfangen mit Spannungen dieser Kategorie...
Also testete ich einen LM358 und OP07 in Single Supply an 12 V.
Ohne Erfolg. Verstärkung des Nicht-Invertierenden-Versärkers war auf 10 ausgelegt.
Oben und Unten gehen durch die Ausgangstransistoren noch 0,7 V flöten, also muß es auch noch ein RailToRail sein.
Nun die Frage.... Welchen OPV nehmt Ihr für so eine Aktion ?
TLC272, LT1006 ???
Gruß
Ralf
 
Das ich noch die Programmiersprache angeben musste, könnte auf einen falschen Forenplatz schließen ?
Wo muß ich dann damit hin ?
 
Die Suche im Forum hatte nichts ergeben, allerdings gabs unten gerade eine paar ähnliche Beiträge...
 
...Der AVR kann wohl nix anfangen mit Spannungen dieser Kategorie...
Wie kommst Du jetzt konkret darauf?
Der ADC hat gegen 5V-Referenz (Vcc?) 'ne Auflösung von knapp 5mV, gegen die interne Referenz (du hast keinen konkreten AVR angegeben, gibt welche mit 2,irgendwas, gibt welche mit 1,1V)... also gegen 'ne 1,1V Referenz wäre die theoretische Auflösung ca 1mV...

AN-1559 kennst Du?
Wir arbeiten hier an Figure5... allerdings wollen wir auch 'n deltaT von knapp 500Kelvin mit 'ner Auflösung von mindestens 'nem zehntel Kelvin abdecken... (mit 'nem externen ADC, klar)
 
Wie kommst Du jetzt konkret darauf?
Der ADC hat gegen 5V-Referenz (Vcc?) 'ne Auflösung von knapp 5mV, gegen die interne Referenz (du hast keinen konkreten AVR angegeben, gibt welche mit 2,irgendwas, gibt welche mit 1,1V)... also gegen 'ne 1,1V Referenz wäre die theoretische Auflösung ca 1mV...

AN-1559 kennst Du?
Wir arbeiten hier an Figure5... allerdings wollen wir auch 'n deltaT von knapp 500Kelvin mit 'ner Auflösung von mindestens 'nem zehntel Kelvin abdecken... (mit 'nem externen ADC, klar)

Moin,
hab' nun mal auf externe Referenz umgeschaltet. Mit Uref=1,2 V komme ich ganz gut hin. Aber wieso nicht mit der interenen Referenz?
Noch mal zum Verständnis....
Der Wert des ad-Wandlers erstreckt sich doch über 0 bis 1024 ?
Konkret errechnet, wird der dieser Wert durch:Uref=(Uist/Uref)*1024.
Das Problem ist, dass ich einen Überlauf bekomme...
Oder ist die Uref mit 1,2 V zu gering? Da hab' ich nichts zu gefunden in der pdf.
Ich las nur etwas von interner Uref mit Vcc oder 2,5V.

Gruß
Ralf
P.S
AN-1559 ? Wo gibts den denn ?
 
...du hast keinen konkreten AVR angegeben, gibt welche mit 2,irgendwas, gibt welche mit 1,1V...
Und wo bekommst Du da einen Überlauf?
Gegen eine 2,5V-Referenz hättes Du (10bit-ADC) 'ne Auflösung von ca 2,44mV - eben von 0 bis 2,5V.
Welchen Controller mit welcher internen Referenz hast Du denn?
Und was verrechnest Du dann da konkret?
Der ADC liefert Dir als Ergebnis lediglich 2 Bytes, die die anliegende Spannung als 1024stel der Referenz wiedergeben (quasi prozentual, nur eben nicht auf hundert, sondern auf 1024 bezogen).
Da läuft nix über.
Was Du da hinterher berechnest, weiß ich aber nicht...

Edit: die AN... ist 'ne Application-Note, die sich mit der Temperaturmessung via PT-Sensoren beschäftigt. Behandelt werden dort die möglichen Anschlußmöglichkeiten (2, 3, 4Leiter (Kelvin Connection)), und wie man das mit OPAMPs realisieren kann.
 
Und wo bekommst Du da einen Überlauf?
Gegen eine 2,5V-Referenz hättes Du (10bit-ADC) 'ne Auflösung von ca 2,44mV - eben von 0 bis 2,5V.
Welchen Controller mit welcher internen Referenz hast Du denn?
Und was verrechnest Du dann da konkret?
Der ADC liefert Dir als Ergebnis lediglich 2 Bytes, die die anliegende Spannung als 1024stel der Referenz wiedergeben (quasi prozentual, nur eben nicht auf hundert, sondern auf 1024 bezogen).
Da läuft nix über.
Was Du da hinterher berechnest, weiß ich aber nicht...

Eine atmega8.... nun hab' ich einen Spannungshub von ca. 0,1 V, also bei 20°C ca. 0,2 V.
Wenn ich dann den PT100 mit dem Lötkolben erwärme, steigt die Spannung auf ca. 0,3 V, dann kippt der Wert des adc-Wandlers.
Ich sehe ja nur den Wert über die RS232. Kann man den nicht irgendwie debuggen ?
Früher unter Dos-C hatte ich die Debugger immer als unnütz abgetan, heute beim AVR hätte ich gerne mal eine Debugfunktion.
Wenn die Auflösung 2,44 mV sind.... dann könnte ich ja auch eine Thermoelement nehmen.....
Das bekäme ich auch besser in den Lötkolben rein....:victory:
Wegen der application-note AN-1559.... die nehmen wieder symmetrische Spannungsversorgung..
Das mit Vier- und Dreileitergedöhns ist klar. Hab' hier aber nur ein paar Zentimeter Zuleitung.
P.S
Genaue Bezeichnung des avrs:atmega8a-pu
 
Hallo,

Der Wert des ad-Wandlers erstreckt sich doch über 0 bis 1024 ?
Konkret errechnet, wird der dieser Wert durch:Uref=(Uist/Uref)*1024.
Das Problem ist, dass ich einen Überlauf bekomme...
Oder ist die Uref mit 1,2 V zu gering? Da hab' ich nichts zu gefunden in der pdf.
Ich las nur etwas von interner Uref mit Vcc oder 2,5V.

also man muß ja den Bereich des ADCs nicht voll ausnutzen. Wenn man mit der Eingangsspannung am ADC-Pin nicht bis an GND oder Vref herankommt, dann ist das so. Das kann man dann aber rechnerisch mit Nullpunktverschiebung und Steigung der Kurve wieder anpassen. Also mit wert=(ADC+Offset)*Steigung.

Je nach Atmel hast du nicht nur ARef oder die interne Referenz von 2,5V zur Verfügung sondern auch noch andere interne Referenzspannungen (zB die angesprochenen 1,1V).

Gruß
Dino
 
Als Referenz des ADC kann beim Mega8 eingestellt werden:
  • Die anliegende Spannung am Aref-Pin (also extern)
  • AVcc (intern)
  • 2,56V (interne Referenz)
bei 2,56V Referenz ergibt sich eine (rechnerische) Auflösung von 2,56V/1024=2,5mV
Deine 300mV ergäben dann also ein AD-Result von 120 (120*2,5mV=300mV), 200mV entsprechend 80 usw..
 
Als Referenz des ADC kann beim Mega8 eingestellt werden:
  • Die anliegende Spannung am Aref-Pin (also extern)
  • AVcc (intern)
  • 2,56V (interne Referenz)
bei 2,56V Referenz ergibt sich eine (rechnerische) Auflösung von 2,56V/1024=2,5mV
Deine 300mV ergäben dann also ein AD-Result von 120 (120*2,5mV=300mV), 200mV entsprechend 80 usw..

So verstehe ich das auch...
 
Hallo,



also man muß ja den Bereich des ADCs nicht voll ausnutzen. Wenn man mit der Eingangsspannung am ADC-Pin nicht bis an GND oder Vref herankommt, dann ist das so. Das kann man dann aber rechnerisch mit Nullpunktverschiebung und Steigung der Kurve wieder anpassen. Also mit wert=(ADC+Offset)*Steigung.

Je nach Atmel hast du nicht nur ARef oder die interne Referenz von 2,5V zur Verfügung sondern auch noch andere interne Referenzspannungen (zB die angesprochenen 1,1V).

Gruß
Dino

Hallo Dino,
der atmega8 kann intern nur 2,3 V ?!?
Daher kommt wohl auch das Überlaufen.
Gruß
ralf
 
Wo steht denn das?
An Aref darf keine Spannung>AVcc angelegt werden. An den ADC-Engängen darf keine Spannung>Aref angelegt werden. Folglich liefert eine Conversion immer ein Ergebnis <1024. Wird eine interne Referenz aufgeschaltet, darf an Aref nichts angelegt werden. In jedem Falle sollte Aref gegen AGnd abgeblockt werden (mit 100nF).

Ich verstehe überhaupt nicht, was Du mit "Überlaufen" meinst. Dir Result Register zählen doch nichts, sondern es wird ein Wert hineingeschrieben. Der Wert 0x3FF (1023dec) entspricht dabei der Referenzspannung.
 
Wo steht denn das?
An Aref darf keine Spannung>AVcc angelegt werden. An den ADC-Engängen darf keine Spannung>Aref angelegt werden. Folglich liefert eine Conversion immer ein Ergebnis <1024. Wird eine interne Referenz aufgeschaltet, darf an Aref nichts angelegt werden. In jedem Falle sollte Aref gegen AGnd abgeblockt werden (mit 100nF).

Ich verstehe überhaupt nicht, was Du mit "Überlaufen" meinst. Dir Result Register zählen doch nichts, sondern es wird ein Wert hineingeschrieben. Der Wert 0x3FF (1023dec) entspricht dabei der Referenzspannung.

Bei 0 V bekomme ich einen adc-Wert von 0, richtig
Das läuft bis 0,3 V auch rund.
Ab 0,3 V kippt der adc-wert wieder auf 0.
 
Und welchen Wert zeigt er als letztes?
Wie gibst Du das aus?
Ohne Programm (in Code-Tags) und Schaltplan ist das aber alles nur Raten...


(Testweise könntest Du mal Aref auf einen anderen ADC-Eingang verbinden, und den messen)
 
Und welchen Wert zeigt er als letztes?
Wie gibst Du das aus?
Ohne Programm (in Code-Tags) und Schaltplan ist das aber alles nur Raten...


(Testweise könntest Du mal Aref auf einen anderen ADC-Eingang verbinden, und den messen)


Hab' gerade mal die Spannung an Aref gemessen, da scheint etwas zu schwingen.
Die Spannung an aref schwankt.
VCC und AVCC hängen über lc-Tiefpass an 5 V.
aref über 100 nF an Masse.
 
Hab' gerade mal die Spannung an Aref gemessen, da scheint etwas zu schwingen.
Die Spannung an aref schwankt.
VCC und AVCC hängen über lc-Tiefpass an 5 V.
aref über 100 nF an Masse.

Das mit den Schwankungen an Aref scheint normal zu sein.
Bei einer Fertigplatine gehts ebenfalls da ein wenig unruhig zu.
Mit interner Uref scheint es nun zu funktionieren....
Morgen mehr, bin am Ende....
Danke schon mal für die Anteilnahme, äääh Hilfe.
Gruß
Ralf
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)