Der Versuch, (genauere) Messwerte vom Thermistor zu erhalten (Elektronik, Mathematik und Code im Inneren)

7

Ich versuche also, genaue Temperaturwerte von diesem TDK B57164K472J-Thermistor zu erhalten ...

Es ist in Reihe mit einem 1 K-Widerstand geschaltet und mit dem integrierten ADC eines ESP8266 verbunden.

Der Thermistor hat ein Beta von 3950 und das Datenblatt enthält eine Tabelle für Widerstände zwischen -55 und 150 ° C.

Bei meinem Versuch, die Genauigkeit zu erhöhen, berechne ich das Beta selbst für das Intervall, in dem sich der Widerstand des Thermistors befindet, unter Verwendung der folgenden Gleichung:

B = 1 / ( 1 / T1 - 1 / T2 ) log ( R1 / RR2 )

Dann versuche ich die Temperatur mit folgender Gleichung zu bestimmen:

T = T1 * B / log ( R1 / R2 ) / ( B / log ( R1 / R2 ) - T1 )

Der vollständige Code kann hier eingesehen werden: https://pastebin.com/ECQHruKN

Faktoren, die möglicherweise die Genauigkeit beeinflussen: Die Intervallspannungsreferenz des ESP zeigt 3,56 V an, sie soll 3,3 V betragen , und mein Multimeter zeigt 3,26 an.

Bei der Beschilderung bin ich mir nicht sicher, ob meine Begriffe positiv oder negativ sein sollen oder wann sie die anderen sein sollen.

Ich bin mir nicht sicher über meine Schaltung ... es ist einfach für mich zu lernen, aber ich habe komplexere Thermistorschaltungen gesehen, ich war mir nicht nur sicher, wie ich sie implementieren sollte, und noch weniger sicher, dass ich in der Lage sein würde um sie zu beheben.

Hilfe wäre sehr dankbar. Vielen Dank.

Schema

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

arm und unglücklich
quelle
1
Was ist Ihr vorgesehener Temperaturbereich? Wie lesen Sie die ADC-Referenzspannung?
MadHatter
2
Bitte geben Sie ein schematisches Diagramm an, das zeigt, wie Sie Ihre Schaltung entworfen haben. Zeigen Sie die Versorgungsspannung für den Widerstand + Thermistor-Schaltkreis an. Wie sind der Widerstand und der Thermistor verbunden? - dh VCC-> Widerstand-> Thermistor-> GND oder VCC-> Thermistor-> Widerstand-> GND oder andere? Ich vermute, der Mittelpunkt des in Reihe geschalteten Thermistor + Widerstandspaares ist direkt mit dem ADC-Eingang verbunden.
Jim Fischer
@ MadHatter: Normale Außenbereiche, +/- 40 ° C für hier in Kanada ...
Poorandunlucky
1
Ein Widerstandspaar benötigt keine absolute Spannungsreferenz (und Ihr ADC hat keine). Wahrscheinlich ist die Zehn-Bit-Vaue vom Konverter ein Verhältniswert, 1023 bedeutet "gleich Vcc" und 0 bedeutet "gleich Masse".
Whit3rd
1
Wenn die Referenz des ADC die Versorgungsschiene ist oder proportional dazu ist, ist der Ausgang eines Spannungsteilers zwischen der Versorgungsschiene und Masse ebenfalls proportional zur Versorgungsschiene, sodass Änderungen der Versorgungsschienenspannung keine Auswirkungen auf die Versorgungsschiene haben Lesen vom ADC (unter der Annahme, dass das Verhältnis des Spannungsteilers konstant bleibt). Die Antwort von Spehro impliziert jedoch, dass der ADC des ESP8266 nicht so funktioniert und stattdessen eine interne, aber nicht sehr genaue Referenzspannung aufweist.
nekomatischer

Antworten:

9

Der ESP8266 ADC ist für Instrumentierungszwecke nicht wirklich gut. Ich glaube, es ist nicht sehr linear (insbesondere für Spannungen in der Nähe von 0 V) ​​und die interne Referenzspannung kann +/- 10% oder eine schlechtere Toleranz sein - lose spezifiziert (ohne Genauigkeitsgrenzen, die ich sehen kann, eine Art "Bonus" -Funktionalität, die Sie haben sollte für ernsthafte Anwendungen nicht zu stark abhängen).

Sie haben auch einen ziemlich miesen NTC und führen aufgrund des geringen 1K-Widerstands (dh Selbsterhitzung) bei hohen Temperaturen viel Strom durch.

Die bevorzugte Methode für die Thermistormessung ist ratiometrisch, sodass die Referenzspannung aufgehoben wird. Der Espressif-Chip bringt jedoch nicht die Referenzspannung heraus. Außerdem enthalten viele Karten (ich schließe daraus, dass Ihre eine ist) einen Teiler am Eingang, der mindestens Ihren Eingang lädt etwas, vielleicht 220K / 100K für eine nominelle ~ 3,52V für 1024 zählt +/- was auch immer. 10 Bit sind für einen so großen Widerstandsbereich nicht zu viel.

Es gibt andere Möglichkeiten, einen Thermistorwiderstand zu messen, aber sie erfordern im Allgemeinen mehr Schaltungen, beispielsweise um den Widerstand in eine Frequenz umzuwandeln und zwischen einem Referenzwiderstand oder Widerständen und dem Thermistor umzuschalten.

Angesichts des riesigen Speichers im ESP8266 können Sie alle ausgefallenen Berechnungen vergessen und einfach eine einfache Nachschlagetabelle mit 1024 Einträgen erstellen, aber Sie müssten wahrscheinlich ein Kalibrierungs-Rig erstellen, um dies zu tun (zumindest eine programmierbare Spannung), um die zu löschen Fehler und der Chip ist nicht wirklich für eine bestimmte Genauigkeit oder Stabilität spezifiziert, daher würden die meisten von uns einen externen ADC oder eine andere Schaltung verwenden, damit die Genauigkeit und Stabilität zu Beginn eingebrannt wird.

Spehro Pefhany
quelle
1
Ich habe dieses ADS1115 / 1015-Modul (I2C ADC, 12 oder 16 Bit, nicht sicher) ... Ich denke, ich werde es versuchen ... Ich wollte mich hauptsächlich mit der elektronischen Seite der Dinge vertraut machen, wollte dann aber gewinnen auf Genauigkeit ... Auch ich habe diese Thermistoren von Arrow bekommen, die dachten, sie wären gut ... Was ist nicht gut an ihnen? Ich habe gerade gesehen, dass es ein vollständigeres Datenblatt als die meisten anderen hat, und bin mit diesen gegangen ... Ich bin ein bisschen enttäuscht zu erfahren, dass sie nicht mindestens "okay" sind ... 🙁
arm und unglücklich
2
Wenn Sie eine parametrische Suche beispielsweise bei Digikey durchführen, erhalten Sie 1% (Beta und Widerstandstoleranz) Thermistoren für 60 oder 70 Cent und +/- 0,1 ° C für ein paar Dollar. Der ADS1115 ist ein schönes Teil, aber die interne Referenz ist außerhalb des Chips nicht verfügbar, also nicht ideal. Thermistoren eignen sich am besten für einen engen Temperaturbereich, andernfalls benötigen Sie viel Dynamikbereich für die Messung. Möglicherweise haben Sie einen Temperaturbereich von -40 bis 125 ° C und das Widerstandsverhältnis beträgt 1000: 1. Daher ist es schwierig, im Extremfall eine hohe Auflösung zu erzielen.
Spehro Pefhany
2
Es ist nicht so, dass sie schlecht sind, es ist nur für absolute Temperaturmessungen, die Sie wollen, das Beste, was Sie bekommen können. Nach meiner Erfahrung werden NTCs besser für relative Dinge wie PID-Regelung usw. verwendet.
MadHatter
@SpehroPefhany: Ah, du meinst das so ... Als ich sie bekam, schaute ich hauptsächlich auf das Datenblatt, um zu sehen, ob es vollständig war ... Als ich THT-Thermistoren fand, die nicht zu teuer waren und die ein Datenblatt mit hatten Ein Beta-Wert, ich habe die ersten bekommen ... Ich habe nicht einmal an Varianz und Genauigkeit gedacht, ich habe nicht gedacht, dass der Widerstand selbst in Intervallen variieren würde, also habe ich die Herstellung und die Materialien vergessen ... Ich denke, ich bin es Ich lerne immer noch aus der Erfahrung, also kann ich es immer noch als positiv ansehen ... 😊
arm und unglücklich
6

Wenn Sie keine Temperaturreferenz von mehr als 1 ° C haben, würde ich nicht versuchen, eine höhere absolute Genauigkeit zu erzielen, als Sie sie mit Informationen zum Nenndatenblatt erhalten. Wenn Sie eine echte hochgenaue Temperaturreferenz benötigen, verwenden Sie ein Wärmepaar oder einen Platin-Temperatursensor (RTD).

Wenn Sie dies trotzdem versuchen möchten:

  1. Die Referenzspannung verursacht, wenn Ihre Angaben korrekt sind, weitaus mehr Fehler als der 3% Beta-Fehler und der 5% Widerstandsfehler.
  2. Die erste Kalibrierungslinie wäre die Überprüfung des Widerstands bei den angegebenen 25 ° C, da der Hersteller 5% spezifiziert.
  3. Arbeiten Sie dann an der 3% Beta-Drift ... Vorausgesetzt, Sie benötigen Genauigkeit über einen großen Bereich jenseits der Raumtemperatur.

Erwägen Sie auch den Kauf eines besser spezifizierten NTC, um sich Zeit zu sparen. Sie können 2% Beta, 2% Resistance oder besser für nicht viel mehr als Ihre finden.

MadHatter
quelle
Ja, ich bin enttäuscht zu erfahren, dass die Leute denken, dass meine Thermistoren nicht sehr gut sind ...: \ Ich habe diese von Arrow während ihrer kostenlosen Versandwoche erhalten und dachte, sie wären perfekt zum Lernen und nützlich für zukünftige Anwendungen , aber du bist der zweite, der sagt, dass sie ein bisschen mies sind, und ich bin jetzt ein bisschen enttäuscht, aber das ist meistens ein emotionales Problem 😋
arm und unglücklich
1
Wenn Sie eine wirklich hohe Genauigkeit wünschen, verwenden Sie einen hochwertigen Platin-Widerstandsthermometer. Zum genauen Ablesen eines Thermoelements muss eine sehr kleine Spannungsdifferenz gemessen werden. In jedem Fall ist die Genauigkeit immer nur so gut wie Ihre Vergleichsstelle, sodass Sie sich jetzt um zwei Sensoren kümmern müssen.
nekomatisch
@nekomatic: Nun, die Übung schien immer noch gut zu sein, und ich dachte, ich könnte sie verwenden, um die Temperatur in Gehäusen oder in der Nähe von Komponenten zu überprüfen, mich vor möglichen Fehlfunktionen zu warnen oder eine konstante Leistung sicherzustellen, wenn ich beispielsweise irgendwo eine Box mit Sensoren habe mit einer Solarzelle, Batterien und Sensoren ... Es könnte wichtig sein, sicherzustellen, dass es nicht zu heiß wird ... Sind Thermistoren für diesen Zweck geeignet? Was ist eine gute Verwendung für Thermistoren?
Poorandunlucky
1
Thermistoren sind billig und eine perfekte Wahl, wenn Sie eine geringe bis mäßige Genauigkeit benötigen - Ihre vorgeschlagenen Anwendungen klingen ideal. Sie lernen eindeutig von Anfang an, mit ihnen zu arbeiten! Es hört sich so an, als ob der miese Teil Ihres Setups nicht Ihre Thermistoren sind, sondern der ADC des ESP8266.
nekomatischer
5

Wie genau sollen Ihre Messwerte sein? 0,1 Grad? 0,01 Grad?

Sie haben ein paar Probleme. Erstens ist Ihr ADC zunächst nicht sehr genau. Sie sollten auch versuchen, das Rauschen zu reduzieren, dem Ihr ADC derzeit ausgesetzt ist. MCUs erzeugen Rauschen. Wenn Sie nichts dagegen unternommen haben, ist Ihr ADC wahrscheinlich genug Rauschen ausgesetzt, um inkonsistente Ergebnisse zu erzielen.

Dann ist da noch der Thermistor, sie sind anfangs keine wirklich sehr genauen Geräte. Sie leiden zunächst unter Selbsterwärmung und dann ist da, wie stabil Ihre Eingabe ist.

Sie benötigen außerdem genaue Kalibrierungsdaten für Ihren Thermistor, da in einigen Fällen ein Unterschied von 5% zu den Datenblattwerten bestehen kann. Es ist jedoch nicht einfach, einen Messwert bei 25 Grad zu erhalten. Wie halten Sie den Sensor bei 25 Grad, während Sie ihn messen? Das Ablesen bei 100 Grad ist viel einfacher, kochendes Wasser muss bei 100 Grad sein (auf Meereshöhe werden die heißeren Teile zu Dampf). Sie können es also einfach in kochendes Wasser stecken.

Sobald Sie alle Ihre Schaltungsprobleme behoben haben, können Sie über Ihre Programmierung nachdenken. Thermistoren haben eine logarithmische Beziehung zur Temperatur zum Widerstand. Im Allgemeinen haben sie in einigen Temperaturbereichen eine bessere Genauigkeit. Der übliche Ansatz besteht darin, den spezifischen Temperaturbereich auszuwählen, an dem Sie interessiert sind (kleinerer Bereich bedeutet größere Genauigkeit), und dann Ihre Protokollfunktionen über diesen Bereich zu verwenden. Entweder erstellen Sie eine Nachschlagetabelle, oder wenn Sie einen ausreichend schnellen Chip haben, der nicht besonders beschäftigt ist, können Sie die eigentliche Berechnung im laufenden Betrieb durchführen.

Aber dann kommt dies auf die Genauigkeit Ihres ADC zurück. Wenn nur 1024 diskrete Werte erzeugt werden können, können Sie nur 1024 diskrete Temperaturen messen.

Wenn Sie sich nur darum kümmern, dass die Temperatur definitiv zwischen 35,0 und 35,5 liegt und Sie nur an Temperaturen zwischen -20 und 50 interessiert sind, dann wäre dies mit dem, was Sie haben, durchaus erreichbar. Wenn Sie jedoch eine größere Reichweite oder eine höhere Präzision wünschen, ist dies mit dem, was Sie verwenden, nicht wirklich möglich.

Um mehr Präzision zu erzielen, hätten Sie einen kleineren Bereich verwendet, und umgekehrt müssen Sie für einen größeren Bereich die Präzision reduzieren. Dann kann Ihr ADC irgendwann nicht mehr den Unterschied zwischen zwei Werten erkennen, da sonst das Rauschen es unmöglich macht, einen stabilen Messwert zu erhalten.

Ich empfehle dringend, diese Tabelle zu verwenden . Sie können mit den Werten spielen und sehen, wie hoch die Fehlergrenzen sein werden, und die empfohlenen Widerstandswerte für die Messung in einem bestimmten Temperaturbereich angeben.

hekete
quelle
Nun, andere empfahlen die Verwendung eines anderen ADC, für den ich ein ADS1115 / 1015-Modul habe, das ich ausprobieren kann. Ich musste nur Stifte anlöten, aber Ihr Kommentar erlaubte die Tatsache, dass ich den effektiven Bereich meines Thermistors mit Widerständen begrenzen konnte, so dass Das 0 - Vref - Intervall entspricht meinem gewünschten Temperaturbereich für meinen Thermistor, wodurch die effektive Auflösung erhöht wird. Die 1024 Werte decken einen kleineren Bereich der tatsächlichen Spannungen ab. Ich bin nicht sicher, ob dies richtig oder sinnvoll ist, aber ich denke Es ist gesund, wenn nicht impliziert ... Als solches, danke 😊
arm und unglücklich
1
boiling water has to be at 100 degreesNur auf Meereshöhe. Ich habe bei mir zu Hause bei 97C
GPS
1
@poorandunlucky Ihr Thermistor wird mit einem anderen Widerstand gekoppelt, um einen Spannungsteiler zu erstellen. Durch Auswahl des geeigneten Werts für diesen Widerstand basierend auf dem Temperaturbereich, an dem Sie interessiert sind, können Sie die Genauigkeit verbessern. Und je kleiner der Bereich ist, an dem Sie interessiert sind, desto größer können Sie ihn natürlich verbessern. Ich empfehle Ihnen dringend, mit dieser Tabelle herumzuspielen. Sie können den gemäßigten Bereich eingeben und erhalten einen empfohlenen Widerstand sowie erwartete Fehlergrenzen.
Hekete
1
Sie machen jedoch einen guten Punkt, man sollte überprüfen, bei welcher Temperatur das Wasser kocht. Es ist immer noch eine gute stabile Temperaturreferenz, die jedoch leicht zu erzeugen ist.
Hekete
1
Das Messen der Temperatur auf 0,01 Grad genau (anstatt nur auf 0,01 Grad Auflösung) ist tatsächlich sehr schwierig. Glücklicherweise müssen Sie das wahrscheinlich nicht, es sei denn, Sie machen eine Art wissenschaftliches Experiment.
nekomatisch
4

Zusätzlich zu den anderen Kommentaren / Antworten, die Sie bisher erhalten haben, zeigt die Abbildung, die Sie Ihrem ursprünglichen Beitrag hinzugefügt haben, einen Konstruktionsfehler, der behoben werden muss. Wenn nach meinen Berechnungen die Nennspannung von VCC 3,3 V beträgt, gilt für Thermistortemperaturwerte von

T = [-40 0 25 40]  (°C)

Die entsprechenden nominalen Ausgangsspannungen V_OUT von Ihrer Schaltung sind

V_OUT = [ 3.2667    3.0633    2.7211    2.4198 ]  (VDC)

(nb V_OUT ist die Spannung, die an den ADC-Eingangspin angeschlossen ist.) Gemäß dem Datenblatt von Espressif für den ESP8266EX (S. 16):

Der Eingangsspannungsbereich [ADC] beträgt 0 bis 1,0 V, wenn TOUT an einen externen Stromkreis angeschlossen ist.

Diese V_OUT-Spannungen sind also zu hoch und können möglicherweise den ADC-Eingang beschädigen.

FWIW, wenn Sie die Positionen von Widerstand und Thermistor vertauschen, so dass die Schaltungstopologie wird

VCC -- thermistor --(V_OUT)-- resistor -- GND

Die resultierenden V_OUT-Nennspannungen, die an den ADC für die oben genannten Thermistortemperaturen angelegt werden, sind

V_OUT = [ 0.0333    0.2367    0.5789    0.8802 ]  (VDC)

das wäre okay Diese Topologie stellt auch sicher, dass V_OUT mit zunehmender Thermistortemperatur ansteigt UND die Auflösung im ungünstigsten Fall (ohne Berücksichtigung anderer Fehlerquellen - z. B. Komponententoleranzen) am Ende von -40 ° C etwa 0,5 ° C / Bit beträgt ist nicht zu schrecklich.

In den FAQ von Espressif für den ESP8266 (scrollen Sie nach unten zum Abschnitt " Peripheriegeräte ") wird der Punkt " Wofür soll ich den internen ADC verwenden? " Angegeben (Hervorhebung hinzugefügt).

Der interne ADC kann zur Temperaturerfassung oder zur Erfassung des von externen Geräten aufgenommenen ungefähren Stroms verwendet werden. Da die ADC-Messwerte anfällig für Rauschen sind, sollten sie nur für Anwendungen verwendet werden, bei denen keine hohe Genauigkeit erforderlich ist. Zum Beispiel thermische Abschaltmechanismen usw.

Zusätzliche Überlegungen zu diesem Thema in Bezug auf Möglichkeiten zur Reduzierung der Fehler bei Ihren Messungen werden von den anderen Befragten in Ihrem Beitrag angesprochen - z. B. Verschärfung der Komponententoleranzen mithilfe einer ratiometrischen Messmethode (für die wahrscheinlich ein externer ADC-Chip erforderlich wäre mit mindestens zwei Eingängen zur Messung von VCC und V_OUT) usw.

Das FAQ-Thema mit dem Titel " Wie genau ist der interne ADC? " Heißt (Hervorhebung hinzugefügt):

Wenn eine hohe Genauigkeit erforderlich ist, verwenden Sie bitte die API system_adc_fast_read. Die HF-Schaltung sollte jedoch vor dem Messen abgeschaltet werden, und das WLAN wird getrennt. Für eine relativ geringere Genauigkeit, wenn Messwertunterschiede von 1 oder 2 toleriert werden können, empfehlen wir Benutzern, Wi-Fi für den Nicht-Schlafmodus wifi_set_sleep_type (NONE_SLEEP_T) zu konfigurieren.

Für eine geringere Genauigkeit kann der Benutzer in den Schlafmodus wechseln. Der Stromverbrauch ist in diesem Fall geringer.

Wenn der Wi-Fi-Sender HF-Energie heult, fügt die Leistung, die vom HF-Sender aus der Stromversorgung entnommen wird, und die vom HF-Sender + Antenne emittierte elektromagnetische Strahlung a) den Leistungsbussen der Platine (möglicherweise erhebliches) elektrisches Rauschen hinzu ( zB VCC-Spannungsabfall) und b) Ihren nahegelegenen Widerstand + Thermistor + Verbindungskabel. Beachten Sie, dass Ihre Komponentenleitungen und Anschlusskabel als Antennen fungieren und einen Teil der vom Wi-Fi-Sender abgegebenen HF-Energie empfangen. IOW, Spannungsabfälle des Leistungsbusses und unerwünschte Absorption von HF-Energie im Leistungsbus und in Ihren Komponenten sind weitere wichtige Rauschquellen, die verwaltet werden müssen, wenn Ihre Temperaturmessungen Reproduzierbarkeit, Präzision und Genauigkeit aufweisen sollen.

Jim Fischer
quelle
1

Wenn Sie einen zusätzlichen Analogeingangswiderstand haben, teilen Sie die Versorgungsspannung und messen Sie diese mit dem Analogeingang. Auf diese Weise können Sie Spannungsfehler und Drift kompensieren.

bt2
quelle
@JimFischer: Es ist äußerst rücksichtsvoll von Ihnen, meine Lage so umfassend anzugehen. Ich bin sehr dankbar für Ihre Bemühungen! In der Tat scheint es, dass der ADC des ESP8266, zusätzlich zu einer empfohlenen Eingangsgrenze von 1 V, nicht der genaueste der Welt ist ... Einige andere Mitwirkende an diesem Thread, drei (glaube ich), haben erwähnt eine große Leistungsabweichung und Empfindlichkeit gegenüber Rauschen, aber ich dachte, elektrisches Rauschen, nicht HF-Rauschen ... Ihre Eingabe und Antwort wird sehr geschätzt, nochmals vielen Dank! 😊
Poorandunlucky
Ich bin nicht sicher, ob ich verstehe, was du meinst ..?
Poorandunlucky
1

Sie haben bereits mehrere Antworten, die verschiedene Aspekte des Problems abdecken. In dieser Antwort werde ich versuchen, nur einen ganz bestimmten Teil der Frage abzudecken: Wie erhält man aus Kalibrierungsdaten ein genaues mathematisches Modell? Mit anderen Worten, wie ein Modell an die Daten angepasst wird.

Sie erwarten, dass die Widerstands-Temperatur-Beziehung folgende Form hat:

1 / T = a 0 + a 1 log ( R )

Dabei ist T die absolute Temperatur und R der Widerstand in Ohm. Als erstes würde ich 1 / T als Funktion von log ( R ) zeichnen, um zu sehen, ob die Beziehung tatsächlich linear ist. Ich habe das mit dem Datenarray aus Ihrem Lua-Code gemacht. Ich konnte sehen, dass es fast linear ist, aber es gibt eine leichte sichtbare Krümmung.

Um diese Krümmung zu berücksichtigen, habe ich ein Polynom zweiten Grades angepasst und eine nahezu perfekte Anpassung erhalten mit:

1 / T = a 0 + a 1 log ( R ) + a 2 log ( R ) 2
a 0 = 1,35715e-3 ± 2,464e-6 (0,1816%)
a 1 = 2,11435e-4 ± 5,886e-7 ( 0,2784%)
a 2 = 2,93419e-6 ± 3,324e-8 (1,133%)

Ich sage, die Passform ist „fast perfekt“, weil es keinen offensichtlichen Trend bei den Rückständen gibt, die wie Rundungsgeräusche aussehen. Dann können Sie die obige Formel anstelle der Tabelle verwenden, wenn dies für Sie bequemer ist. Alternativ können Sie die Anpassung über einen kleineren Temperaturbereich wiederholen, der Ihre beabsichtigte Verwendung des Thermistors besser widerspiegelt.

Edgar Bonet
quelle
Ich danke Ihnen für Ihre elegante Ergänzung, aber ich fürchte, mein Problem liegt größtenteils in der physischen Schicht ... Ich glaube nicht, dass ich Ihren Beitrag zu diesem Zeitpunkt mit all diesen Drähten, Instrumenten und Instrumenten würdigen kann lose Teile vor mir, aber sobald ich verstanden habe, was es zu verstehen gibt, und es geschafft habe, vernünftige Zahlen zu erreichen, oder zumindest einen hinreichend guten Hinweis darauf, dass mein eigenes Verständnis der Kräfte, die in diesem System wirken, kein a sein wird Problem an sich in Zukunft, ich werde sicher Ihre Gleichungen noch einmal überprüfen. 😊
Poorandunlucky
0

Nun, ich möchte mich bei allen bedanken, die versucht haben, mir bei meinem Problem zu helfen. Selbst wenn Ihre Eingabe das genaue Problem nicht genau festlegte, erlaubte es mir, das Brot zu betrachten und das Vertrauen in mich selbst in Richtung Mathematik wiederzugewinnen. Besondere Erwähnung verdient der freundliche Mann, der die ADC-Spezifikationen des ESP8266 nachgeschlagen hat, wo er nur <1 VDC ausgesetzt werden sollte.

Mein Thermistor der TDK 472-Serie ist anscheinend ein guter ... Einige Leute dachten, es sei kein guter Teil, aber er reagiert überraschend ... Mein einziger Kritikpunkt ist, dass die Beine leicht oxidieren, aber das ist etwas, das abgedeckt ist das Datenblatt ... Es soll gelötet und sowieso nicht gespielt werden ... Ich denke, es ist ein Qualitätsfaktor, aber vielleicht gibt es tatsächlich einen besseren da draußen ... Ich bin bisher nur damit zufrieden.

Das (Haupt-) Problem war die Steinhart-Hart-Gleichung.

In der Tat war meine Schaltung für die 1-V-Grenze des ADC nicht richtig verdrahtet, tatsächlich hätte meine Schaltung in Bezug auf den Temperaturbereich, dem sie ausgesetzt sein sollte, besser konstruiert sein können, aber meine Beta- und Temperaturgleichungen hatte ich einer Rechnerseite entnommen und hatten es nicht doppelt überprüft ... Bei der Überprüfung ähnelten sie überhaupt nicht den tatsächlichen Steinhart-Hart-Gleichungen ... Tatsächlich war meine Beta weit von der vom Hersteller bereitgestellten Beta entfernt, aber ich hatte keine Ich habe eine Vorstellung davon, wie stark es schwanken sollte oder was es darstellt, also habe ich das beim Betrachten meiner Variablen während des Debuggens nicht wirklich berücksichtigt. Die Gleichung lieferte zwar einigermaßen vernünftige, vielleicht plausible Temperaturen, und vielleicht ist es "eine" Thermistorgleichung, aber es ist nicht die Steinhart-Hart-Gleichung ...

Jetzt liegt mein Beta-Wert in der Nähe des vom Hersteller angegebenen Werts, aber ich stellte fest, dass diese Ergebnisse etwas ungenau waren ... Ich habe die Mathematik für die Koeffizienten A, B, C codiert und verwende diese jetzt, um die Temperatur zu ermitteln ...

Mein TDK-Thermistor reagiert sehr schnell, aufgrund seiner Wärmeübertragungsfähigkeit verliert er sehr schnell Wärme an die Umgebungsluft, wenn sich jemals jemand wundert ... Ich mag es jedenfalls ... Ich denke, es war ein guter Pfeilkauf 😊

Nochmals vielen Dank, dass Sie versucht haben, mir zu helfen, und dass Sie mir geholfen haben, auch wenn nicht für das, was ich gefragt hatte 🙂

Wenn Sie meinen aktualisierten Code sehen möchten, fragen Sie bitte, und ich werde eine aktualisierte Kopie veröffentlichen.

Nochmals: Vielen Dank an alle

arm und unglücklich
quelle
WRT-Posting-Quellcode. Der bevorzugte Weg, dies zu tun, IMHO, besteht darin, sich ein GitHub-Konto (oder etwas Ähnliches) zu besorgen, die neueste und beste Version Ihres Quellcodes dort zu veröffentlichen und dann hier einen Link zu dieser GitHub-Seite bereitzustellen. Mit diesem Ansatz laden Sie den Quellcode einfach in Ihr GitHub-Konto hoch, während Sie den Quellcode weiter verbessern. Personen, die diese Nachricht in Zukunft lesen, können einfach auf den Link (hier) klicken, der sie zu Ihrer GitHub-Seite führt, wo sie die neueste und beste Version Ihres Quellcodes finden und herunterladen können.
Jim Fischer