Forum: Mikrocontroller und Digitale Elektronik Probleme mit MAX31865, Wert zu klein


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Klaus H. (Firma: privat) (klaus777)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich wollte die Temperatur mittels PT100 erfassen und habe mir dazu den 
MAX31865 auf den kleinen Boards besorgt.
Entwickelt wird mit Atmelstudio auf einen ATMega328P
den Source für die SPI-MAX Libs habe ich von
  https://github.com/GeorgeShift/max_31865/
heruntergeladen.

der Fühler hat eine 15cm lange Anschlußleitung, der MAX31865 & Das PT100 
sind in 2-Wire verkabelt.
Widerstand am Fühler sind ~109 Ohm, was mit der Raumtemperatur in etwa 
übereinstimmt.


Den MAX lese ich im Singleshot aus was auch klappt

max_spi_write(CONFIGURATION, 0b10100000);

lsb_rtd = max_spi_read(READ_RTD_LSB);
msb_rtd = max_spi_read(READ_RTD_MSB);

RTD = ((msb_rtd << 7)+((lsb_rtd & 0xFE) >> 1));
if (datatype == 'r') return RTD;

// Basic temperature calculation, the accuracy for temperatures
// between -75°C - 100°C is max +-1.5°C
temperature = ( (long)10*RTD >> 5) - 2560;  // RTD / 32 - 256
if (datatype == 't') return temperature;

das Problem ist, das der gelesene Wert ~15°C zu wenig anzeigt.

Ich habe das mit 3 dieser Boards getestet.

Aktuell lese ich alle Register aus
die Ergebnisse:

  RTD  Low Fault Threshold  High Fault Threshold

LSB  84  0      255
MSB  65  0      255

RTD gesamt 8362 //RTD = ((msb_rtd << 7)+((lsb_rtd & 0xFE) >> 1));

Faultstatus= 0

hat jemand ne Idee warum das Ergebnis so aussieht?
Das Ergebnis ändert sich auch  mit max_spi_write(CONFIGURATION, 
0b10000000); nicht.

Grüße Klaus

von Harald K. (kirnbichler)


Lesenswert?

Der pt100 ist auch wirklich einer? Was liefert Dein Max31865, wenn Du 
stattdessen einen 100-Ω-Widerstand (1% oder besser, keine Kohle) 
anschließt?

von M. B. (bema16)


Lesenswert?

Ich bin mir nicht sicher, ob 15 °C Abweichung wirklich hiervon kommen 
können, aber trotzdem der Hinweis von mir:
Ich habe vor kurzen in einem Projekt vier dieser MAX31865 Boards 
eingesetzt. Alle vier Boards kamen von eBay und nach der Inbetriebnahme 
haben alle vier Boards eine unterschiedliche Temperatur gemessen 
(Abweichung einige °C). Die Ursache war der Referenzwiderstand (ist auf 
der Platine mit "Rref" beschriftet). Wenn du das Datenblatt des MAX31865 
liest, wirst du feststellen, dass der Strom, der durch den RTD fließt, 
auch durch den Referenzwiderstand fließt und der Spannungsabfall über 
dem Referenzwiderstand als Referenz für den ADC verwendet wird.
Nach einer kurzen Messung mit dem Multimeter konnte ich feststellen, 
dass der Widerstand zwischen den Boards jeweils um einige Ohm abweichte 
- vermutlich wurden Widerstände mit 5 % Toleranz bestückt. Nachdem ich 
bei allen vier Boards den Widerstand durch einen mit 0,1 % Toleranz 
ersetzt habe, haben alle Boards die identische Temperatur angezeigt.

Ich habe gerade auch nochmal einen Blick in das Datenblatt geworfen, 
hier ist von einem 400 Ohm Referenzwiderstand die Rede. Bei meinen 
Boards waren aber Widerstände mit 430 Ohm verbaut. Evtl. muss die 
Konfiguration abhängig vom Referenzwiderstand angepasst werden...? Ich 
habe leider im Moment nicht die Zeit, das Datenblatt im Detail zu lesen, 
aber evtl. forschst du in die Richtung auch nochmal nach.

von Klaus H. (Firma: privat) (klaus777)


Lesenswert?

Harald K. schrieb:
> Der pt100 ist auch wirklich einer? Was liefert Dein Max31865, wenn Du
> stattdessen einen 100-Ω-Widerstand (1% oder besser, keine Kohle)
> anschließt?

Hallo Harald,
das PT100 ist ein PT100, der Widerstand ändert sich.
bei einem 100Ohm Widerstand ist das Ergebnis 7541, sollte jedoch 8192 
sein.

Danke für die Unterstützung

von Klaus H. (Firma: privat) (klaus777)


Lesenswert?

Hallo bema16,

es stimmt, das laut Datenblatt 400 Ohm angegeben sind und wenn man das 
Netz bemüht findet sich bei ADAFRUIT das :

While the MAX31865 can support either 100ohm or 1kohm RTDs, the Adafruit 
breakout comes in two versions with different reference resistors 
specific to each type of RTD.

PID 3328 = 430Ω for use with 100ohm RTDs.
PID 3648 = 4.3kΩ for use with 1kohm RTDs.

If marking is 4300 or 431 its PT100
If marking is 4301 or 432 its PT1000

gemessen habe ich 430 /429 Ohm
was die Konfiguration nach ADAFRUIT bestätigt.

laut Datenblatt wird die Umrechnung mit RRTD = (ADC * RRef)32768 
gemacht.
Wenn man das mal rechnet, sind das fast 6 Ohm.
ich werde mir die 400Ohm besorgen und dann noch mal probieren.
Wobei wenn man rechnet (8192*400)/32786 =100
Stellt man das um (100 *32768)/7541 kommen die 431 Ohm raus.
passt also, 400 Ohm rein und dann sollte es gehen.

Und wer mit PT1000 arbeitet sollte dann 4000 Ohm einbauen ;-)

Warum dann die 431 Ohm... lagen wahrscheinlich rum

Ich werde berichten

Danke und Grüße

von Harald K. (kirnbichler)


Lesenswert?

Klaus H. schrieb:
> Warum dann die 431 Ohm

"Marking 431" heißt mitnichten 431 Ohm, sondern 43 mit einer 
nachfolgenden Null. 432 wäre 43 mit zwei nachfolgenden Nullen und 433 
wiederum 43 mit drei nachfolgenden Nullen.

von Klaus H. (Firma: privat) (klaus777)


Lesenswert?

Du hast vollkommen recht, Asche auf mein Haupt ;-)

Ich hatte die Widerstände ausgelötet und gemessen und dabei den Wert 
hier mitgeteilt.

   >> Warum dann die 431 Ohm


die Übernahme des gemessenen Wertes, weiter oben steht das Marking 
richtig

danke für die Korrektur.

von Peter D. (peda)


Lesenswert?

Harald K. schrieb:
> "Marking 431" heißt mitnichten 431 Ohm

Es gibt aber noch andere Codes.
430Ω kann auch mit "R2" oder "62A" (= 432Ω) beschriftet sein.

https://www.segor.de/INFO/wissenswertes/141-smd-widerstands-code.shtml

von Boris (skyperhh)


Lesenswert?

Klaus H. schrieb:
> Warum dann die 431 Ohm... lagen wahrscheinlich rum

430 Ohm ist ein typischer Widerstand aus der E24 Gruppe, 400 Ohm gibt es 
in der E-Reihe nicht, das nächste wäre 402 Ohm aus der E48.

von Klaus H. (Firma: privat) (klaus777)


Lesenswert?

Hallo zusammen,
die bestellten Widerstände sind angekommen.
wie richtig bemerkt gibt es keine 400Ohm mit der Toleranz von 1% und 
kleiner  daher 2x200Ohm (Marking 201) in Reihe.
Das funktioniert jetzt wunderbar. Danke Bema16.

Das nächste mal werde ich die ironisch gemeinten Bemerkungen irgendwie 
kennzeichnen ;-)

ADAFRUIT und Co sollten das ggf. mit dem Referenzwiderstand in ihren 
Beschreibungen erwähnen, das hätte einiges erspart.

Grüße

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.