Günstige Temperaturmessung mit MCU

13

Ich bin auf der Suche nach einer günstigen Lösung für die Temperaturmessung mit einer MCU. Meine Anforderungen sind:

  • 2 Kanäle
  • Temperaturbereich: 30-35 ° C
  • Temperaturauflösung: 1-2 K
  • Kabelabstand (MCU -> Sensor) 10cm - 2m sind akzeptabel
  • Die relative Temperatur zwischen zwei Kanälen ist ausreichend, es ist keine absolute Temperatur erforderlich

Mein Ausgangspunkt sind zwei Thermoelemente mit Thermoelementverstärkern, aber dies scheint für meine Anwendung übertrieben zu sein. Thermoelemente kosten bei Radiospares 10 USD, Verstärker 5 USD, was 30 USD nur zur Schätzung der Temperatur kosten würde.

Was ist eine gute Richtung, um eine billigere Lösung zu suchen. NTCs?


Edit 18. Juli 2012

Nachdem stevenvh seine Antwort erweitert hatte, um das hohe Maß an Linearität zu demonstrieren, das mit NTCs erzielt werden kann, habe ich einige Zeit investiert, um zu überdenken, ob NTCs keine bessere Lösung sind.

Ich bin mir jedoch nicht sicher, ob ich seine Überlegungen zu dem Fehler, den NTCs im Vergleich zu Halbleiterchips billiger machen können, genau verfolgen kann.

Um die Temperatur mit einem NTC zu ermitteln, kommen folgende Funktionen zum Einsatz:

  1. Übertragungsfunktion HTaRNTC(R25,B25/85) die Umwandlung die Umgebungstemperatur auf einen Widerstand
  2. die Spannung durch die Spannungsteiler erzeugte HRNTCV(Vexcitation,RNTC,Rlin)
  3. AD-Konvertierung HVbits(V,Vref,σconversion)
  4. lineare Kurvenannäherung: HbitsTest(bits,σapprox)

Die Fehlerquellen, die ich sehe, sind also:

  1. NTC-Wertfehler: je 1% für die Werte und B 25 - 85 : insgesamt ca. 2%R25B2585
  2. 1% für den Linearisierungswiderstandswert und sagen wir 0,5% für die Erregerspannungsquelle
  3. Bei einem PIC16F1825 hat die für den ADC verwendete interne Referenzspannung eine Unsicherheit von 6%. Darüber hinaus weist der ADC selbst Integral-, Differential-, Offset- und Verstärkungsfehler in der Größenordnung von jeweils 1,5 lsb auf. Bei 10 Bits betragen letztere zusammen höchstens 0,5%.
  4. Wie stevenvh in seiner Antwort gezeigt hat, weist die lineare Approximation im interessierenden Bereich einen Fehler von lediglich 0,0015% auf.

Der Fehler bei der Schätzung der Temperatur wird somit eindeutig durch den Fehler der ADV-Spannungsreferenz und die Fehler in den Widerstandswerten dominiert. Es wird deutlich über den 6% liegen. Der Fehler aufgrund der linearen Approximation ist, wie bereits erwähnt, äußerst vernachlässigbar.

Eine Unsicherheit von 6% bei 300 Kelvin entspricht einem Temperaturfehler von 18K. Die Temperaturspäne haben einen Fehler von ca. 1K. Bei 300K entspricht dies einer Unsicherheit von 0,3%.

Es scheint mir, dass es nicht in Frage kommt, dies mit einem NTC ohne äußerst sorgfältige Kalibrierung und Leistungsüberprüfung zu übertreffen. Die Unsicherheit in den Linearisierungswiderständen, die Erregerspannung oder der ADC, die jeweils isoliert betrachtet werden, erhöhen die Unsicherheit der NTC-Lösung darüber hinaus. Oder habe ich einen schwerwiegenden Denkfehler?

Im Moment bin ich davon überzeugt, dass NTCs eine hochpräzise Temperaturerfassungslösung sein können, aber auf den billigen Preis scheint es mir, dass ihre Leistung ein Schuss in die Dunkelheit sein wird.

ARF
quelle

Antworten:

12

1-2 Grad ist eine einfache Auflösung (auch wenn Sie Genauigkeit meinen, die nicht gleich ist!). Ich würde LM75 und verschiedene Klone in Betracht ziehen, oder einen DS1820 / 18S20 / 18B20 / 1822. Microchip verfügt über zahlreiche Temperatursensoren , darunter LM75-Klone für <1 USD. Die Spannungsausgangsversionen sind billig, aber ich würde eine digitale vorziehen.

Wouter van Ooijen
quelle
Alle Antworten auf diese Frage waren sehr hilfreich. Ich akzeptierte dies aufgrund der einfachen Verwendung von LM75-Klonen. In meinem Fall ist es ein großes Plus, sich keine Gedanken über Linearisierung usw. machen zu müssen.
ARF
Nur neugierig: Warum bevorzugen Sie einen digitalen Sensor?
m.Alin
5
Keine Sorge um Referenzen, Linearisierung, Konfiguration des A / D-Wandlers und der Hardware ist trivial. Der Nachteil ist, dass Sie sich mit dem Protokoll auseinandersetzen müssen.
Wouter van Ooijen
15

Ich würde sagen, NTC, ja. Dies ist das billigste, das ich bei Digikey finden konnte. Etwa einen halben Dollar, das ist viel billiger als Temperatursensor-ICs, die ungefähr die gleiche Präzision haben. Der Vorteil eines NTC besteht darin, dass er nur einen Vorwiderstand und einen ADC-Eingang an Ihrem Mikrocontroller benötigt, die die meisten heutzutage haben.

Der niedrige Preis hat auch einen Nachteil: NTCs sind alles andere als linear. Sie müssen entweder die Übertragungsfunktion verwenden (das ist eine Exponentialfunktion, die Ihnen möglicherweise nicht gefällt, oder Sie müssen eine Nachschlagetabelle verwenden, die für den angegebenen Bereich die beste Lösung darstellt.

bearbeiten dd. 2012-07-13
Bah, geschlagen von einem elenden LM75. Ich werde das nicht zulassen. :-)

Ich werde die * 103 * MT * aus dieser NTC-Serie verwenden . Zuerst die Übertragungsfunktion:

R=10kΩe13.4096+4481.80T150522T2+1877103T3 ,

wo T

Sieht nicht vielversprechend aus, und tatsächlich sieht die Kurve zwischen 0 ° C und 100 ° C so aus:

Bildbeschreibung hier eingeben

alles andere als linear, wie ich schon sagte. Wir können versuchen, das zu linearisieren, aber denken Sie daran, dass wir einen Widerstandsteiler damit machen werden, und sie sind auch nicht linear, so dass jede Linearisierung jetzt durch den Serienwiderstand ruiniert wird. Beginnen wir also mit dem Widerstand und sehen, was passiert. Ich habe eine 3,3 V Versorgung und wähle einen 5,6 kΩ Widerstand gegen Vcc, dann wird der Ausgang

Bildbeschreibung hier eingeben

Gar nicht so schlecht! Die violette Kurve ist die Tangente in unserem interessierenden Bereich: 30 ° C bis 35 ° C. Ich könnte den vergrößerten Graphen zeichnen, aber das ergibt zwei übereinstimmende Linien. Schauen wir uns also den Fehler an:

Bildbeschreibung hier eingeben

Sieht auch nicht gut aus, aber Sie müssen sich die vertikale Skala ansehen, die den relativen Fehler der linearen Approximation im Vergleich zu unserer NTC-Kennlinie zwischen 30 ° C und 35 ° C angibt. Der Fehler beträgt weniger als 15 ppm oder 0,0015% .

Mathematica sagt, die Gleichung für unsere nahezu perfekte lineare Approximation ist

VOUT=0.0308 T 1V/°C+2.886 V

Dies führt zu ADC-Werten von 609 bzw. 561. für einen 10-Bit-ADC. Das ist ein Bereich von 48 bei einer Differenz von 5 ° C oder einer Auflösung von etwa 0,1 ° C. Nur der NTC und ein Widerstand.

Wer braucht einen LM75?



bearbeiten dd. 2012-08-13

Fakt: Die NTC-Lösung muss kalibriert werden.

Ich habe Arik versprochen, die Fehlerberechnung wieder aufzunehmen, aber es ist viel komplizierter als ich dachte und kann wegen unvollständiger Daten nicht abgeschlossen werden. Zum Beispiel habe ich sehr genaue Zahlen für die Koeffizienten in der Übertragungsfunktion des NTC (die 7 signifikanten Ziffern sind bereits gerundet!), Aber keine Informationen über ihre Genauigkeit. Ein paar Kommentare.

ββ führt beispielsweise zu einem Fehler von 0,1% im Ergebnis.

± 1% Fehler. Ist das Six Sigma? Sieben-Sigma? Dann kann es sich herausstellen, dass es genauer ist als das LM75, das 2 ° C genaues Six-Sigma ist, sogar 3 ° C über den Temperaturbereich. Das ist nichts, wofür man sich schämen muss; Nur wenige Sensoren können ohne Kalibrierung viel besser arbeiten. Frage: Wie vergleichen Sie Toleranzwerte? Und noch eine: Wie kombinieren Sie mehrere Glockenkurvenfunktionen, um einen Gesamtfehler zu erhalten?

Die ADC-Referenz des PIC hat eine ziemlich schlechte Toleranz von 6%. Laut Arik entspricht eine Unsicherheit von 6% bei 300 Kelvin einem Temperaturfehler von 18 K , was natürlich absurd und absolut absurd ist. Ich habe kurz nachgesehen: Den Ausgang des Spannungsteilers für eine Temperatur von 20 ° C berechnet. Hinzugefügte 6% und zurückgerechnet auf den Widerstandswert des NTC und die Temperatur, die wäre. Der Fehler beträgt nicht 18 ° C, sondern 1 ° C oder weniger als 0,5%, bezogen auf 0 K.

Trotzdem ist der 6% Fehler völlig irrelevant ! Wenn Sie die Referenzspannung des ADC für den Widerstandsteiler verwenden, erscheint diese Spannung nicht einmal in den Berechnungen. Es wäre mir egal, wenn der Fehler 50% wäre. Verwenden Sie eine andere Referenz, wenn die fehlerhafte interne Referenz außerhalb der Steuerung nicht verfügbar ist. Wie das 3,3-V-Netzteil oder einfach jede andere Gleichspannung, die Sie herumliegen.

Die Kalibrierung ist nicht das, was Sie für ein einmaliges Projekt wollen, aber für die Massenproduktion ist es überhaupt keine Sorge, und besonders in der Unterhaltungselektronik, wo jeder Cent zählt, werden Sie den NTC mit größerer Wahrscheinlichkeit finden als einen teuren LM75.

stevenvh
quelle
3
Das
Wouter van Ooijen
Über einen halben Dollar? Ist nicht dies das gleiche Element , das Sie erwähnen? Es ist $ 0,15 / 100 stücke. Und mcp9701a ist über $ 0,25 / 100 stück. Wow, ich fand die digitalen so teuer, wie 2 oder 3 Dollar pro Stück!
Abdullah Kahraman
2
@abdullah - alles ist relativ. Ein großartiger Ingenieur würde wahrscheinlich auf den Serienwiderstand von 1% Toleranz und seinen Temperaturkoeffizienten von 100 ppm / ° C hinweisen. In jedem Fall liegt es nicht an der Annäherung, wenn wir Lesefehler haben! :-)
Stevenvh
1
@stevenvh Ihre erweiterte Antwort gab mir Anlass, meine ursprüngliche Einschätzung zu überarbeiten. Ich bin mir jedoch nicht sicher, ob ich vollständig verstehe, wie Sie mit NTCs kostengünstig zu einer hochpräzisen Messung gelangen können. Ich würde mich freuen, wenn Sie sich meine bearbeitete Frage ansehen und mir mitteilen würden, ob meine Argumentation fehlerhaft ist. Vielen Dank für deine Hilfe!
ARF
1
@Arik - hat meine Antwort aktualisiert. Ich hatte das Gefühl, dass vor allem der angebliche 18 K-Fehler eine Antwort brauchte :-)
stevenvh
6

Das klingt nach einem Auftrag für einen Thermistor oder genauer gesagt für zwei Thermistoren. Da Sie nur drei verschiedene Temperaturzustände unterscheiden müssen und nur nach der relativen Temperatur suchen, können Sie die beiden Thermistoren miteinander verbinden, um ein einziges analoges Signal zu erzeugen. Das kann dann mit einem im Mikro eingebauten A / D gemessen werden. Die meisten Mikros haben A / Ds, so dass dies nichts mehr kostet. Ich würde wahrscheinlich ein paar Widerstände und Kondensatoren als Tiefpassfilter hinzufügen, um das Rauschen zu reduzieren.

Ein Thermistor geht von Masse zum analogen Signal und der andere von Strom zum analogen Signal. Möglicherweise müssen Sie einige Kalibrierungen vornehmen, aber mit Ihrem engen Temperaturbereich und der geringen Auflösung müssen Sie sich keine Gedanken machen. Wahrscheinlich reicht es aus, nur die Nulldifferenzspannung zu speichern und diese vom zukünftigen Messwert abzuziehen.

Olin Lathrop
quelle
Vielen Dank für den Hinweis zur Verwendung von zwei Thermistoren in Spannungsteilerkonfiguration zum Messen einer relativen Spannung. Daran hätte ich nicht gedacht.
ARF
@Arik - Die beiden in Reihe geschalteten Thermistoren funktionieren nur, wenn sich ihr Widerstand linear mit der Temperatur ändert. Überprüfen Sie dies daher unbedingt. (Ich habe in meiner Antwort.)
Stevenvh
@stevenvh: Ja, du hast recht, aber beachte den sehr engen Temperaturbereich und die niedrige Auflösung. Zwei Thermistoren, die einmal nahe der Mitte des Bereichs auf den Fall gleicher Temperatur kalibriert wurden, sollten ausreichend funktionieren. Man wird nie mehr als 5 ° C vom anderen entfernt sein.
Olin Lathrop
@Olin - Alles wahr. Ich denke, ich hätte hinzufügen sollen, "falls Sie jemals über einen viel größeren Temperaturbereich messen wollen".
Stevenvh
5

Wenn Sie nicht über die Delta-Voltage-Methode zur Messung des gestuften Diodenstroms informiert sind und an der Messung der Temperatur interessiert sind, sollten Sie dies lesen - dies kann Ihre Vorstellungen zur Temperaturmessung verändern.


Ich bin ein bisschen zu spät zur Party.
Da die Antwort jetzt verwendet wurde, werde ich im Wesentlichen nur eine alternative Methode skizzieren, die erhebliche Vorteile hat, aber in diskreter Form überraschend wenig verwendet zu werden scheint.

Diese Methode wird häufig bei IC-Temperaturmess-ICs verwendet, scheint jedoch immer noch weniger bekannt zu sein als erwartet.

Wird eine Siliziumdiode abwechselnd mit zwei bekannten Strömen gespeist, so hängt die Änderung der Dreieckspannung mit der Änderung des Stroms von der absoluten Temperatur ab.

Diese Methode wird (mindestens) in den Sensoren TI LM82, LM83, LM84, LM87 und LTC3880, LTC3883 und LTC2974 verwendet.

Es ist zu beachten, dass sich diese Methode von der üblichen Methode zum Messen des absoluten Vorwärtsspannungsabfalls der Diode bei einem gegebenen Strom unterscheidet, um die Temperatur abzuleiten. Diese Methode ist wesentlich genauer und erfordert keine sensorspezifische Kalibrierung.

Genauigkeiten von etwa 0,1 Grad C (oder K) sind erreichbar.
Auflösungen sind abhängig von der Messmethode.

Das Ergebnis ist eine Gerätekalibrierung.
Das Ergebnis ist nur vom
Basisdiodentyp abhängig (z. B. Silizium, Germanium). Wenn Sie z. B. eine 1-Cent-Signaldiode 1N4148 verwenden, können Sie diese gegen eine andere 1N4148 austauschen und erhalten die gleichen Genauigkeiten ohne Neukalibrierung.

Die Genauigkeit der Einstellung der beiden verwendeten Ströme wirkt sich offensichtlich auf die Ergebnisgenauigkeit aus. Da diese jedoch entsprechend den verfügbaren Ressourcen ausgewählt werden können, können die Ergebnisse sehr gut sein.

Diese Methode wird von einigen, aber nicht allen Prozessortemperaturmesssystemen auf dem Chip verwendet. Wenn dieses System verwendet wird, werden Sie normalerweise feststellen, dass die technischen Beschreibungen sehr detailliert und etwas verschleiert sind - dh, sie scheinen sie geheim zu halten, obwohl die Methode wahrscheinlich Mitte der 1960er Jahre auf Widlar zurückgeht.

Dieses Verfahren kann mit den Genauigkeiten mithalten, die mit NTC-Thermistoren oder PT100 usw., Platinwiderständen und dergleichen, mit einem sehr wettbewerbsfähigen Grad an Komplexität und Schwierigkeit mit vernünftiger Sorgfalt erreicht werden können.


Diese exzellente 199 Analog Device Anwendungsnotiz Die Messung von Temperaturen auf Computerchips mit Geschwindigkeit und Genauigkeit ist eine neue Technik. Ich bin mir überhaupt nicht sicher, ob sie richtig sind - aber es ist sicherlich nützlich und weniger bekannt, was zu erwarten wäre.

Aus dem obigen Papier (leicht umgeschrieben) für Ströme von I und NI und Diodenspannungsabfall Cv1 bei Strom 1 und Vd2 bei Strom 2:

Vd1 - Vd2 = DVd = (kT / q) In (I / NI) = (kT / q) In (1 / N)

Da N, k und q alle bekannte Konstanten sind, ist
T = (Konstante) (DVd)

_

Ausgezeichnete TI-App note Temperaturmessung mit mehreren Ferndioden

Wikipedia - Silizium-Bandlückentemperatursensor

[LT AN137 Genaue Temperaturmessung mit einem externen PN-Anschluss] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Wird z. B. in LTC3880, LTC3883 und LTC2974 verwendet.

Russell McMahon
quelle
3

Sehr einfaches Temperaturmessgerät (Celcius) mit Thermistor (10K) B25 / 100 = 4300 Der obige Kommentar in diesem Artikel hat mich inspiriert.

Ich habe Thermistoren von DigiKey 10K 5% zu je 1 USD gekauft. Ich wollte eine faire Temperaturmessung ohne schwebende und komplexe Mathematik. Anschließen an ein Arduino wie folgt: Vref auf 3,3 V; Analog-0 A0 über einen 10K-Widerstand und 3,3V. ; Thermistor A0 gegen Masse. Ich erhalte die Temperatur in Celcius wie folgt: Teilcode: analogReference (EXTERNAL);
ADC = analogRead (0);
Th = 10000 / (1023 / ADC) -1; // 10000 ist der im Divisor verwendete Fix-Widerstand.
T = (775 - Th) / 10;

Die Genauigkeit beträgt: +1 bei 25 ° C, +0 bei 20 ° C, -1 bei 0 ° C, +2 bei -20 ° C. Sie ändern die 775-Konstante so, dass sie dem gewünschten Bereich näher kommt. Verwenden Sie beispielsweise 765 anstelle von 775, um einen Fehler von 0 bei 25 ° C zu erhalten. Da dies ganzzahlige Mathematik ist, habe ich 5 bis 770 addiert, bevor ich durch 10 dividierte, um abzurunden.

Zeigt die Beziehung zwischen Thermistor, ADC, Temperatur und berechnetem Ergebnis an

Alain Théroux
quelle
1

Ich benutze LM35DZ . Temperaturbereich 0 ° C bis 100 ° C, linearer Ausgang und niedrige Impedanz ; Ich habe es mit direkter Verbindung zu meinem PIC ADC-Eingang verwendet, funktioniert bisher sehr gut.

Eine Einheit kostet ca. USD 3.

JeeShen Lee
quelle
3
Und er wird zwei von ihnen brauchen. Sieht für mich nicht nach einer billigen Lösung aus. Nicht zu meinen tollen NTCs verglichen! :-)
stevenvh
Ich benutze auch die LM35-Chips (und ich mag sie), aber ich denke, sie sind ein wenig übertrieben für diese Frage.
Johan
0

Sehr einfaches Temperaturmessgerät (Celcius) mit Thermistor ... zu je 1 USD.

Wie wäre es mit einem STM32F0-Chip? Das ADC-Modul enthält einen internen Temperatursensor UND kalibrierte Werte an zwei Temperaturpunkten UND kalibrierte Werte für den internen Vref-Generator.

Mit all dem zusammen können Sie es als einen sehr genauen Temperatursensor verwenden - 12-Bit-ADC und Sigma von etwas mehr als 1 lsb - über einen weiten Spannungsbereich.

Es kann auch als dedizierter Temperatursensor programmiert werden: Meistens im Schlaf und beim Aufwachen, um die Temperatur zu lesen und Daten zu übertragen und dann wieder einzuschlafen.

Das alles für weniger als einen Dollar in kleinen Mengen.

dannyf
quelle