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:
- Übertragungsfunktion die Umwandlung die Umgebungstemperatur auf einen Widerstand
- die Spannung durch die Spannungsteiler erzeugte
- AD-Konvertierung
- lineare Kurvenannäherung:
Die Fehlerquellen, die ich sehe, sind also:
- NTC-Wertfehler: je 1% für die Werte und B 25 - 85 : insgesamt ca. 2%
- 1% für den Linearisierungswiderstandswert und sagen wir 0,5% für die Erregerspannungsquelle
- 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%.
- 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.
quelle
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:
woT
Sieht nicht vielversprechend aus, und tatsächlich sieht die Kurve zwischen 0 ° C und 100 ° C so aus:
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
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:
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
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.
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle