www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC: Umrechnung von ADC-Werten in Temperatur - Denkblockade.


Autor: Hans versteck dich! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal!

Ich hab mal eine Frage - und zwar möchte ich einen Temperatursensor 
auswerten (Platin-Sensor mit OP-Verstärker dahinter).

Jetzt habe ich gerade lediglich eine Denkblockade.

Also: Ich habe einen Messbereich von -50°C bis +250°C und habe 
rechnerisch (auf dem Papier) eine Spannung am ADC von 1,237V bis 2,915V 
für den angegebenen Messbereich.

Der ADC hat 12 Bit, also 4096 diskrete Werte.

Referenzspannung ist 3V.

In ADC-Werten liege ich damit (rechnerisch) zwischen 1689 bis 3980.

So...jetzt stehe ich grad auf dem Schlauch...wie wandel ich das jetzt am 
geschicktesten in eine Temperatur um?

Ich habe ein Temperaturdelta von 300°C und ein "ADC-Delta" von 2292.

Sollte ich jetzt den ADC-Wert von 0° als Basis nehmen und von da an nach 
oben und unten rechnen, oder wie mache ich das am besten?

Bei 0°C sollte der ADC-Wert theoretisch 2094 sein - die Spannung am ADC 
ist dann 1,533...V.

Ich muss ja auch noch beachten, dass man ab bestimmten Punkten andere 
Berechnungen für die PT-Sensoren benutzt. Dazu kommt, dass meine 
errechneten Werte ja eh niemals genau mit der Realität zusammen kommen 
werden.

Also quasi irgendwie so:
if (adc_wert > 2094) // groesser 0°C
{
  Formel 1
}
else if (adc_wert < 2094)
{
  ...
}

Naja und die Berechnung erstmal prinzipiell???

T[°C] = ((((3V * ADC-Wert) / 4096) - 1.5333) / Auflösung[V])

Kann mir da einer helfen?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans versteck dich! schrieb:

> So...jetzt stehe ich grad auf dem Schlauch...wie wandel ich das jetzt am
> geschicktesten in eine Temperatur um?

Du schaust ins Datenblatt und siehst nach ob der Zusammenhang zwischen 
Temperatur und Spannung ein linearer Zusammenhang ist.

Wenn ja, dann postulierst du, dass du eine lineare Gleichung hast

   Temp = ADC_Wert * k + d

einzige Frage ist: Wie gross ist das k, wie gross ist das d?

Da kommt jetzt ins Spiel, dass du 2 Pärchen ADC_Wert/Temperatur kennst:

  -50  =  1689 * k + d
  250  =  3980 * k + d

Das sind 2 Gleichungen in 2 Unbekannten und das kann man lösen.
Danach kennt man die Zahlenwerte für k und d und kann sie benutzen um 
jeden beliebigen ADC_Wert direkt aus dem ADC mittels

   Temp = ADC_Wert * k + d

in eine Temperatur umzurechnen.

> Ich muss ja auch noch beachten, dass man ab bestimmten Punkten
> andere Berechnungen für die PT-Sensoren benutzt.

Dann rechnest du dir die zu diesen Punkten gehörenden ADC_werte aus und 
benutzt dann von einem Punkt ausgehend bis zum nächsten Punkt den 
jeweils gültigen Parametersatz für k und d

> Dazu kommt, dass meine errechneten Werte ja eh niemals genau mit der
> Realität zusammen kommen

Daher kalibriert man den Sensor ja auch. D.h. im obigen Beispiel rechnet 
man nicht einfach mit den Werten aus dem Datenblatt, sondern man bringt 
den Sensor auf -50° und misst mit dem ACD einen ADC_wert von 1587 
(anstelle von 1689). Weiter bringt man den Sensor auf +250° und misst 
mit dem ADC einen Wert von 4005.

  -50  =  1587 * k + d
  250  =  4005 * k + d

k und d bestimmten und die Umrechnung ist auf deinen Sensor und deinen 
Messverstärker kalibriert.
Bei stückweiser linearer Appoximation muss dann natürlich jedes 
Teilstück einzeln kalibiert werden.

Autor: Hans versteck dich! (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Du schaust ins Datenblatt und siehst nach ob der Zusammenhang zwischen
> Temperatur und Spannung ein linearer Zusammenhang ist.

Hallo Karl-Heinz. Danke dir schonmal für deine Antwort!

Also es handelt sich halt um einen PT500. Die Werte dafür sind ja 
allgemein bekannt. Nur meine Verstärkerschaltung (nicht-invertierender 
OP) bringt mir halt ein paar Fehler in die Sache.

Karl heinz Buchegger schrieb:
> Das sind 2 Gleichungen in 2 Unbekannten und das kann man lösen.

Ja gut, klar. Das stimmt natürlich. Ich muss wahrscheinlich nur einmal 
einen Nullpunkt messen, um zumindest schonmal zu wissen, ab wo ich die 
"andere" Berechnung durchführen muss. Evtl. mit einem 
Präzisionspotentiometer die verschiedenen Werte einstellen? Meine 
Tempraturangaben sind absolute Maximalwerte. Die zu erzeugen ist nicht 
so leicht. Aber dadurch, dass ich halt einen genormten PT500 habe, 
könnte ich ja mit dem Poti die Werte "simulieren".

Karl heinz Buchegger schrieb:
> Daher kalibriert man den Sensor ja auch.

Meine Gradzahl muss nicht auf 0,5° genau sein. Ziel wäre bei mir, dass 
ich eine Schaltung aufgebaut habe...und zwar mehrfach - PT500 dran und 
fertig. Ohne jedes Gerät zu kalibrieren. Die Schaltung sollte da schon 
ihre +/- 1° von sich aus mitbringen.

Mein Verstärker ist ein OPA336 - die Widerstände sind alle 0,1% 25ppm.

Ich hoffe, das bekomme ich so hin, wie ich es mir vorstelle.

Nur halt an der Umrechnung hakt es grad. Ich werd mir das jetzt erstmal 
so angucken, wie du es vorgeschlagen hast.

Danke dir!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.