Forum: Analoge Elektronik und Schaltungstechnik Reicht der Pt1000 direkt am STM32 16-Bit ADC oder doch lieber OP-Schaltung?


von Gerald M. (gerald_m17)


Lesenswert?

Hallo,

ich bräuchte eine praktische Abschätzung zur Auswertung von mehreren 
Pt1000 Sensoren.
Ich habe zwei Heizelemente welche ich auf verschiedene Temperaturen 
heize (80°C und 98°C) aus denen ich dann meine Wunschtemperatur mischen 
kann.
Mir geht es um gesamt 4 Sensoren, wobei ich zwischen Raumtemperatur bis 
maximal 150°C messen möchte.
Da der STM32H7 einen 16-Bit ADC hat (und ich eine externe 3V Referenz 
habe), ich mit dem aber keine Erfahrung habe, wollte ich fragen ob 
jemand abschätzen kann ob es reicht die Auflösung auf realistische 0,1°C 
zu bekommen. Die Genauigkeit ist relativ egal (ich sage mal 2°C) solange 
die Werte immer gleich bleiben (also kein/kaum Drift).
Da der Hauptregelbereich um die 90°C ist, würde ich für die 
ratiometrische Messung ca 1300 Ohm nutzen (dort ist ja dann die 
Auflösung am größten wenn ich mich richtig erinnere).
Meine Überlegung:
Bei Raumtemperatur: 1080 Ohm und 1300 Ohm: 1,361V
bei 150°C: 1570 Ohm und 1300 Ohm: 1,641V
--> Range etwa 0,3V, also nur 1/10 des ADCs.
Allerdings ist die theoretische Auflösung bei: 3V/2^16=0,045mV

Änderung bei einem Grad:
bei 90°C: 1347 Ohm und 1300 Ohm: 1,52663V
bei 91°C: 1350,8 Ohm und 1300 Ohm: 1,52875V
Differenz: 2,12mV, bei 0,045mV/ Bit wären das 47 LSB, also eine 
Auflösung von 0,02°C

Jetzt die Preisfrage, da das alles sehr theoretisch ist, bekommt man das 
so hin das man auf 0,1°C Auflösung kommt, oder wackelt das viel zu sehr 
so dass man selbst nach digitalem Tiefpassfiltern noch eine zu stark 
wackelnde Nachkommastelle hat?
Dass ein Differenzverstärker der auf den vollen Bereich verstärkt besser 
ist weiß ich, das wären allerdings wieder aktive Komponenten, mehrere 
Widerstände pro Kanal etc...

von Sven B. (scummos)


Lesenswert?

Hast du mal die Eigenerwärmung abgeschätzt?

Rauschen (im Kontrast zu z.B. Drift) ist generell relativ unkritisch, 
wenn genug Zeit für's Messen zur Verfügung steht.

von Gerald M. (gerald_m17)


Lesenswert?

Die Eigenerwärmung habe ich eher ausgeblendet, da alle gut gekoppelt an 
einen "Metallklotz" geschraubt werden.
Mir wäre eben für die Regelung wichtig dass sich die Temperatur 
entsprechend der Heizung ändert, und den Regler nicht durchdrehen lässt.

von Achim H. (pluto25)


Lesenswert?

Kein Problem. Hier laufen viele an 10bit ADCs mit Grad genauer Auflösung

von Sven B. (scummos)


Lesenswert?

Wie schnell möchtest du denn regeln?

von Gerald M. (gerald_m17)


Lesenswert?

Das weiß ich noch nicht. Wird ja im Wesentlichen durch die Totzeit 
zwischen Heizspule --> Metall --> Pt1000 dominiert. Von daher vermutlich 
irgendwo im Hz-Bereich.
Außerdem kenne ich auch den Durchfluss und damit ich die "verloren" 
Wärmemenge. Von daher kann ich auch gut vorhalten.

von Stefan F. (Gast)


Lesenswert?

Gerald M. schrieb:
> Differenz: 2,12mV, bei 0,045mV/ Bit wären das 47 LSB, also eine
> Auflösung von 0,02°C

Bedenke dabei, dass die unteren zwei Bit bei einfachster Anwendung des 
ADC unbrauchbar sind. Um alle 12 Bit nutzen zu können, brauchst du eine 
separate gefilterte Spannungsversorgung für den ADC, eine externe 
Referenz (hast du) und man muss vermutlich auch einen STOP oder WAIT 
Zustand benutzen, damit der ADC nicht gestört wird.

Siehe 
https://www.st.com/content/ccc/resource/technical/document/application_note/group0/3f/4c/a4/82/bd/63/4e/92/CD00211314/files/CD00211314.pdf/jcr:content/translations/en.CD00211314.pdf

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Stefan ⛄ F. schrieb:
> Um alle 12 Bit nutzen zu können

Wie der TE auch schrieb, haben die STM32H7 3 ADC Wandler mit 16 Bit 
Tiefe.
Wenn mans ordentlich macht, können zwar die unteren beiden Bits kippeln, 
aber  14 Bit können da schon übrig bleiben.

von MaWin (Gast)


Lesenswert?

A. H. schrieb:
> Kein Problem. Hier laufen viele an 10bit ADCs mit Grad genauer
> Auflösung

Er wollte den Pt1000 direkt auswerten, also bloss ein Vorwiderstand von 
8100 Ohm für 0.33mA, ohne OpAmp, also eine Änderung von 0.33V auf 
0.33012V für 0.1 GradC Auflösung, 120uV, bei 3V Referenz also 1/25000, 
mit 16 bit ADC schaffbar, mit 10 bit nicht.

von Karl (Gast)


Lesenswert?

The STM32H7 series unleashes the Cortex-M7 core:

Even more peripherals, ... many other analog peripherals including three 
fast 16-bit ADCs, two comparators and two operational amplifiers.

von Stefan F. (Gast)


Lesenswert?

Jedenfalls gehen 10bit einfach so, alles darüber erfordert Aufwand in 
Hardware und Software.

von Wolfgang (Gast)


Lesenswert?

Gerald M. schrieb:
> Das weiß ich noch nicht. Wird ja im Wesentlichen durch die Totzeit
> zwischen Heizspule --> Metall --> Pt1000 dominiert.

Eine Totzeit hast du da bestimmt nicht - rein regelungstechnisch 
betrachtet.
Oder sitzt zwischen Heizspule und Metall noch ein Wasserkreislauf, der 
für eine Verzögerung entsprechend Zeit=Strecke/Fließgeschwindigkeit 
sorgt?

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Nein, ich habe einfach nur zwischen Pt1000 auf der Heizung Metall.
Das alles dauert eine Weile bis man eben einen Temperaturausschlag 
misst. Der Thermoblock sieht etwa so aus wie angehängt. Eine Schnecke 
für das Wasser und eine mit Heizwendel. Die Temperatur messe ich mit 
einem Pt1000 zum Anschrauben an einem Gewinde.

Ich werde dann wohl doch einen OPAmp nehmen. Als Schaltung einen 
einfachen Differenzverstärker mit Offset.
Dann muss ich mir nur ein paar Gedanken mehr zu der resultierenden 
Verstärkung machen, da der Spannungsteiler ja belastet ist, aber das 
bekomme ich schon hin.

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Noch eine kurze Idee,

weiß jemand was gegen die angehängte Schaltung spricht? Im LTSpice sieht 
sie stabil aus, und sie ist auch einfacher zu berechnen, da beide 
Spannungsteiler durch die gleiche Anbindung an den Ausgang gleich stark 
belastet werden.
Ich habe zwar das Gefühl dass da irgend etwas nicht stimmt, doch ich 
finde den Haken nicht...

von Helmut S. (helmuts)


Lesenswert?

> jemand was gegen die angehängte Schaltung spricht?

Das ist überhaupt kein Differenzverstärker mehr.


Der PT1000 hat doch ca. 1kOhm.
Wie soll das überhaupt mit 10k-10k auf der einen Seite und 10k-1k auf 
der anderen Seite dann funktionieren?

von Gerald M. (gerald_m17)


Lesenswert?

Ja, da hast du Recht. R8 soll natürlich 1k Ohm sein.

edit: Habe das nochmal simuliert, jetzt kommt nur Müll heraus. Von daher 
bleibt es wie im ersten Schaltplan (natürlich mit 1k anstatt 10k).

: Bearbeitet durch User
von Harlekin (Gast)


Lesenswert?

Gerald M. schrieb:
> Ich habe zwar das Gefühl dass da irgend etwas nicht stimmt, > doch ich finde den 
Haken nicht...

Warum hab ich nur das Gefühl, dass da jemand schwimmt (oder uns auf den 
Arm nimmt),
denn ich kapier diese Fehler nicht...

Schaltung simuliert?
- Messbrücke, falsches Spannungsverhältnis
- OP mit positiver Rückkopplung
- Spannungsteiler jeweils mit 1k Ohm belastet.

von Gerald M. (gerald_m17)


Lesenswert?

Ich habe natürlich die Schaltung nicht in einem Zeichenprogramm (wovon 
der Screenshot offensichtlich stammt) sondern in LTSpice simuliert.

Die positive Rückkopplung habe ich bereits revidiert.

Die Spannungsteiler sind selbstverständlich nicht mit 1k Ohm belastet, 
sondern mit 1k + 44k = 45k Ohm (siehe goldene Regeln)

: Bearbeitet durch User
von kein gast (Gast)


Lesenswert?

wieso wird eine externe Ref benötigt?
Ich hatte das damals mal gefragt ob für die vollen 16Bit die interne Ref 
ausreichen würde..da wurde mir erzählt das ich offenbar das Prinzip des 
eines DS Wandlers nicht verstehen würde..was ich nicht in Frage stelle 
...

von Guest (Gast)


Lesenswert?

kein gast schrieb:
> wieso wird eine externe Ref benötigt?

Wenn du die maximale Genauigkeit haben willst brauchst du eine externe 
Referenz. Es gibt einen Unterschied zwischen Auflösung und Genauigkeit.

Wieso wird hier eigentlich schon wieder die 100. Lösung zum Auswerten 
von PTs besprochen. Es gibt genügend ICs die genau das machen, 
beispielsweise der MAX31865.

von Achim H. (pluto25)


Lesenswert?

> kein gast schrieb:
>> wieso wird eine externe Ref benötigt?
Ohne gibt es größere Fehler wenn die Spannungsversorgung driftet. Hängt 
die externe an der gleichen Spannungsquelle wie der Vorwiderstand machen 
sich Spanungsschwankungen kaum bemerkbar.
Die kippenden Bits können auch Vorteilhaft sein. Ein Grundrauschen 
erhöht die Genauigkeit. Allerdings müssen dazu sehr viele Werte addiert 
werden. Hätte man die Zeit könnte der Wert auf 1/100 Grad genau werden.

von m.n. (Gast)


Lesenswert?

Du brauchst keine OPVs, bloß um die Auflösung zu erhöhen.
Mit einem 10 Bit ADC liegt die Auflösung bei <= 2 K. Wenn Du die 
Schaltung auf den H7xxx umbaust, bekommst Du locker Deine Auflösung: 
Beitrag "Temperatursensor KTY81 am ATmega328 (Arduino UNO), 1-6 Kanäle"
Wichtig ist, daß die PT nicht dauerhaft bestromt werden. Die 
Eigenerwärmung ist nicht unerheblich, stört nur und läßt sich doch ganz 
einfach vermeiden.

A. H. schrieb:
> Hätte man die Zeit könnte der Wert auf 1/100 Grad genau werden.

Nein, die Zeit ist nicht sie ausschlaggebene Faktor.

von Michael B. (laberkopp)


Lesenswert?

A. H. schrieb:
> Die kippenden Bits können auch Vorteilhaft sein. Ein Grundrauschen
> erhöht die Genauigkeit. Allerdings müssen dazu sehr viele Werte addiert
> werden. Hätte man die Zeit könnte der Wert auf 1/100 Grad genau werden.

Immer wieder die Leute, die zu blöd sind, Auflösung und Genauigkeit 
auseianderzuhalten.

von Udo S. (urschmitt)


Lesenswert?

Guest schrieb:
> Wenn du die maximale Genauigkeit haben willst brauchst du eine externe
> Referenz.

Quatsch, solange er ratiometrisch misst braucht er nur eine 
kurzzeit-stabile Referenz. Und dafür sollte die eingebaute reichen.

von Bauform B. (bauformb)


Lesenswert?

Udo S. schrieb:
> Und dafür sollte die eingebaute reichen.

Wenn du nur Widerstände messen willst, brauchst du garkeine 
Referenz_spannung_. Aber mit einem Vorverstärker reicht evt. auch ein 
12-Bit ADC und ein viel kleinerer STM32.

von Gerald M. (gerald_m17)


Lesenswert?

Hallo,

nur noch einmal was ich wollte:

Ich wollte einfach, dass ich mir die Temperatur mit einer 
Nachkommastelle anzeigen lassen kann und auch danach regeln kann.
Dass ich theoretisch die Nachkommastelle messen kann, habe ich bereits 
im ersten Post vorgerechnet.
Meine Erwartung wäre allerdings, dass bei konstanter Temperatur mir auch 
immer die gleiche Temperatur angezeigt wird. Ich also bei 90,3°C keine 
zwischen 90,5°C und 90,2°C hin-und herzuckende Anzeige habe, sondern 
einfach 90,3°C.
Ob das in echt 91,4°C sind, ist mir in erster Linie egal, so lange mir 
morgen bei 91,4°C immer noch 90,3°C angezeigt werden.

Das Ganze soll natürlich ohne "digitalen Schweinereien" funktionieren. 
Wenn der Messwert genau zwischen zwei Werten liegt, darf er natürlich 
hin und her zucken, da würde ich dann eine Hysterese o.ä. einbauen.

Der STM32H7 ist sowieso gesetzt. Ich weiß auch dass dieser einen 
eingebauten OpAmp hat, damit möchte ich mich aber nicht beschäftigen 
(Verbindung mit DAC, nur bestimte Pins etc.). Würde dort lieber einen 
externen nutzen falls nötig.

von Peter D. (peda)


Lesenswert?

Ein externer ADC ist viel einfacher zu betreiben.
Bei dem ADC im MC hast Du den Effekt, daß durch die digitalen Ströme der 
interne GND gegenüber dem GND-Anschluß angehoben ist und auch ständig 
schwankt. Stell Dir die gemeinsamen GND- und VCC-Pins quasi als 
Widerstände vor, durch die ständig der digitale Wechselstrom fließt.
Einige MCs erlauben deshalb, die CPU während der Wandlung anzuhalten.

Der MC hat "three fast 16-bit ADCs", was nochmal ungünstiger ist. 
Integrierende ADCs (Dual-Slope) können Störungen besser unterdrücken 
(50/60Hz Unterdrückung).

von Johannes S. (Gast)


Lesenswert?

Einen MAX31865 und die 0,1 Auflösung werden stabil angezeigt. An einem 
Testaufbau hatte ich mal einen 12 Bit ADC im LPC1549 benutzt, da kam ich 
mit viel Mittelung auf ca. 1/4 °C.
https://www.mouser.de/new/maximic/maxim-max31865-converters/

von Gerald M. (gerald_m17)


Lesenswert?

Hi,

über den Max31865 bin ich selbstverständlich auch schon gestolpert. Für 
4x (tatsächlich sind es 5 Stück, hatte einen vergessen) Pt1000 bräuchte 
ich entweder 4 Stück davon oder eben Multiplexer, wobei ich nicht 
abschätzen kann wie sehr die wieder das Signal verändern...
Ich vermute mit OpAmp und integriertem ADC wird 0.1°C stabil angezeigt. 
Dafür müssten ja nur die ersten 11 Bit korrekt sein, die anderen 5 
danach sind egal (150°C/ 2048 < 0.1°C ).

von m.n. (Gast)


Lesenswert?

Gerald M. schrieb:
> Ich vermute mit OpAmp und integriertem ADC wird 0.1°C stabil angezeigt.

Lass den OPV weg. Damit hast Du mehr Probleme als mit ratiometrischer 
Messung. Wenn Du eine ruhige Anzeige haben willst, dann bilde den 
Mittelwert über 10, 100 oder meinetwegen 1000 Meßwerte. Der µC wird 
dabei nur müde gähnen.

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Wenn Du eine ruhige Anzeige haben willst, dann bilde den
> Mittelwert über 10, 100 oder meinetwegen 1000 Meßwerte.

Der Praktiker würde 16, 256 oder 1024 wählen.
Und er würde den ADC per Timer triggern, so daß ein Umlauf 20ms oder 
Vielfache davon beträgt.

von Johannes S. (Gast)


Lesenswert?

Gerald M. schrieb:
> über den Max31865 bin ich selbstverständlich auch schon gestolpert. Für
> 4x (tatsächlich sind es 5 Stück, hatte einen vergessen)

wer sich einen STM32H7 leisten kann, der kann auch 4x MAX kaufen :) Wenn 
das ein Projekt in Stückzahl 1 ist, dann ist das nicht der Aufwand.
Ich habe noch eine Platine für 4x MAX abzugeben, oder das Layout in 
Eagle wenn es hilft. Und die Module beim Chinesen sind auch nicht teuer.

von MaWin (Gast)


Lesenswert?

Gerald M. schrieb:
> weiß jemand was gegen die angehängte

Sie funkgioniert nicht, im Gegensatz zur ersten, die aber nicht 
berechnet war, daher:

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.32

kein gast schrieb:
> wieso wird eine externe Ref benötigt?
> Ich hatte das damals mal gefragt ob für die vollen 16Bit die interne Ref
> ausreichen würde..da wurde mir erzählt das ich offenbar das Prinzip des
> eines DS Wandlers nicht verstehen würde..was ich nicht in Frage stelle
> ...

Wer feagt jetzt eigentlich ? Kein gast = Gerald M. oder kein gast zu 
blöd um überhaut den richtigen thread zu finden ?

Guest schrieb:
> Wenn du die maximale Genauigkeit haben willst brauchst du eine externe
> Referenz

Blödsinn, wenn er ratiometrisch misst, braucht er gar keine Referenz.

Guest schrieb:
> Wieso wird hier eigentlich schon wieder die 100. Lösung zum Auswerten
> von PTs besprochen. Es gibt genügend ICs die genau das machen,
> beispielsweise der MAX31865.

Wer zu blöd ist, es selbst zu machen, kauft einen Chip, der es für ihn 
macht.

Der STM32H7 ist dermassen überdimensioniert ausgestattet, dass es kein 
Problem ist, einen Pt1000 über 8k1 an 3V anzuschliessen und die ca. 
0.33V besser als 0.1GradC auflösend auf besser als 2 GradC genau zu 
Messen, ohne OpAmp, ohne SpezialdeppenIC. Und selbst wenn man einen 
OpAmp einsetzen wollte hat ihn der STM32H7 schon eingebaut, es gibt 
keinen Grund einen davorzulöten.

von Guest (Gast)


Lesenswert?

MaWin schrieb:
> Wer zu blöd ist, es selbst zu machen, kauft einen Chip, der es für ihn
> macht.

Ich kenne mehr als genug mehr oder weniger aufwendige Arten eine PT 
auszuwerten und jede davon habe ich schonmal irgendwann eingesetzt und 
ganz ehrlich der Aufwand lohnt nicht. ICs wie der MAX sind einfach, 
praktisch und zuverlässig. Mal davon abgesehen das 16 Bit sowas von 
übertrieben sind.

von m.n. (Gast)


Lesenswert?

Peter D. schrieb:
> m.n. schrieb:
>> Wenn Du eine ruhige Anzeige haben willst, dann bilde den
>> Mittelwert über 10, 100 oder meinetwegen 1000 Meßwerte.
>
> Der Praktiker würde 16, 256 oder 1024 wählen.
> Und er würde den ADC per Timer triggern, so daß ein Umlauf 20ms oder
> Vielfache davon beträgt.

Man nimmt den Wert, den man braucht. 1234 ist auch in Ordnung, weil der 
µC die Division in ein paar ns erledigt hat.

Wenn man den ADC auf ganz langsam einstellt, macht er rund 100000 
Messungen/s, deren Ergebnisse man per DMA in den Speicher legt.
Und schon wieder einen Timer gespart.

Das Einzige, bei dem H7 und z.B. AVR8 gleich schnell sind, ist 
delay_ms(1000), wenn man es denn unbedingt braucht ;-)

von Gerald M. (gerald_m17)


Lesenswert?

Der Stm32H7 ist natürlich auch aus anderen Gründen gewählt. Der soll 
noch eine Menge andere Dinge machen als nur ein paar ADC Werte 
einlesen...

Dass ich im µC noch filtern kann ist mir klar. Wenn schon ein FIR Filter 
mit dem STM32, dann aber kein gleitender Durchschnitt.

Ich komme auch aus der AVR-Ecke, bei der man durch Bitschieben usw. 
alles optimiert hat. Doch Für ein paar Euro mehr bekomme ich eine 
Floatingpoint-Unit bei der ich z.B. die Regelungen einfach mit den 
natürlichen Einheiten durchführen kann, anstatt mich mit 
Fixedpoint-Arithmetik und dadurch entstehende Gains herumzuschlagen.

Aber das ist das was ich meinte. Ich weiß dass ich die Werte immer 
digital hinbiegen kann. Doch am besten würde mir es gefallen wenn schon 
die Rohdaten verwertbar sind.

5x Max31865 kosten übrigens doppelt so viel wie ein STM32H7. Und wenn 
ich durch ratiometrische Messung gute Werte hin bekomme, nehme ich 
natürlich diese. Und wenn ich durch einen OpAmp für 2€ bessere Werte 
hinbekomme, dann nehme ich eben den.
Ich weiß auch dass durch die ratiometrische Messung schon sehr viele 
Probleme ausgelöscht werden, so dass vermutlich die internen Ströme des 
STM32 den größten Unsicherheitsfaktor ausmachen.
Mit einem OpAmp schlagen diese nicht so stark durch, da das Messsignal 
10 mal so groß ist. Dafür hat man andere Effekte (Offset, Rauschen, 
Abhängigkeit von der Referenzspannung, Nichtlinearitäten etc.).

Ich habe lediglich nach Abschätzungen oder am besten Erfahrungen 
gefragt, ob es sich lohnt einen OpAmp zu nehmen oder nicht. Die 
Randbedingungen habe ich genannt.

von Bauform B. (bauformb)


Lesenswert?

Peter D. schrieb:
> Bei dem ADC im MC hast Du den Effekt, daß durch die digitalen Ströme der
> interne GND gegenüber dem GND-Anschluß angehoben ist und auch ständig
> schwankt. Stell Dir die gemeinsamen GND- und VCC-Pins quasi als
> Widerstände vor, durch die ständig der digitale Wechselstrom fließt.
> Einige MCs erlauben deshalb, die CPU während der Wandlung anzuhalten.

Ganz so schlimm ist es beim STM32H7 nicht, der hat extra Pins für die 
Analog-Versorgung (auch für AGND).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.