MAX31885K liefert selten richtige Werte

Gast #4519344
Lesenswert?

Hallo,

ich hatte gestern Mittag bereits ein Thread eröffnet um zu verstehen, 
wie die Datenkommunikation mit dem MAX31885 funktioniert.

Jetzt habe ich mal die ersten versuche gewagt und scheitere am 
Thermofühler, das dieser mir die korrekten Werte liefert..

Das Datenblatt: http://datasheets.maximintegrated.com/en/ds/MAX31855.pdf


Mein Programmcode sieht wie folgt aus:

  digitalWrite(CS_MAX_, HIGH);
  digitalWrite(SCK_, LOW);
  delay(2000);
  digitalWrite(CS_MAX_, LOW);
  delay(700);
  //Initialisierung zu ende
  for (int i = 0; i < 32; i++) {     //Beginne Bit für Bit auszulesen 
31-0
    //Setzen Tackt auf High um antwort zu erhalten!
    digitalWrite(SCK_, HIGH);
    delay(200);
    //READ MISO
    MAX_ANTW = digitalRead(MISO_);
    //BITS einsortieren
    if (i > 15 && i < 17) {
      lcd.setCursor(0, 1); //
    }
    lcd.print(MAX_ANTW);
    digitalWrite(SCK_, LOW);
    delay(200);

Das Board sowie den Schaltplan habe ich anbei hochgeladen, sowie noch 
zwei Screenshots mit angestecktem Fühler und ohne.

am letzten Bit kann man erkennen, das der Chip den Temperaturfühler 
erkennt, jedoch liefert dieser meist/immer falsche Werte.
In der zweiten Zeile vom Display wird unter anderem die interne 
Temperatur ausgegeben, die soweit ganz gut passt

Z.B. 00011010.... was 26Grad entspricht...

Leider passt die Temperatur vom Temperaturfühler nicht.
Die Ausgabe fängt meist mit 11111 an. Siehe Fotos..

Die Ausgabe auf dem Display beginnt von oben links nach unten rechts.

Druecke bzw. halte ich meinen Finger auf dem eingezeigten bereich(Siehe 
Foto) passen die werte vom Temperaturfühler ganz gut..

Nun die Frage:

Woran kann das liegen?
Angehängte Dateien:
Gast #4519768
Lesenswert?

Danke schonmal für den TIPP.

Leider hat das nicht den gewünschten erfolg gebracht.
Ich habe mir jetzt die Stromversorgung und die Datenleitung auf dem Oszi 
angeschaut und kann da kein Rippel feststellen.

Noch jemand einen heißen TIPP??
Gast #4519812
Lesenswert?

Hallo,

Du bist nicht der erste, der von einer fehlerhaften Charge des MAX31885 
in den Hintern gekniffen wird.
Mich hat das unzählige Stunden gekostet, als ich einen Fehler in Hard- 
UND Software gesucht habe, den es schlussendlich nicht gab.
Du musst googeln, welche Charge der Chips betroffen war und ob das auf 
Dich zutrifft, mittlerweile hat Maxim den Bug behoben.
Ich habe seinerzeit ein neues IC geholt und alles lief sofort.
Das gemeine ist, dass der Chip sich sinnvoll verhält, die Fehlerflags 
stimmen etc. - wenn er wenigstens nichts gemacht hätte, dann hätte ich 
ihn viel früher ausgetauscht ...

Wegen dem Namen des Boards ("CJ125.brd"):
wird das mal ein Breitband-Lambdameter?

GJ
Gast #4519861
Lesenswert?

Danke für die Antworten..

Die MAX31885 kamen als sample und vor nem Jahr hatte ich mal einen an 
den Raspberry geklebt der hat funktioniert... Anschließend habe ich 
jetzt einen neuen aus der Tüte genommen und den verlötet..

Als ich gestern Nacht nicht schlafen konnte, habe ich ihn abgelötet und 
noch einen neuen verlötet.. Fehler bleibt..


@Jötze Ja zum Schluss kommt noch der CJ125 drauf.. wollte alles nach und 
nach bestücken um Fehlerquellen bei meinem Prototyp auszuschließen..
Den CJ125 habe ich auf einem anderen Port bereits erfolgreich zum laufen 
bekommen mit plausiblen Werten und Heizungsansteuerung etc..
Gast #4520062
Lesenswert?

Jötze schrieb:
> Bist Du Dir sicher, dass der Fühler nicht irgendwo auf GND liegt?

Dann wäre Bit 1 gesetzt.

Heiko G. schrieb:
> Ist die Diode in der MISO-Leitung nicht kontraproduktiv ? Der MAX
> liefert auf Pin 7 sein Ausgangssignal, die Diode lässt nur 1-Signale
> durch. Das sollte nur klappen wenn an der Arduino-Seite ein Pulldown
> verschaltet ist.

Das sehe ich auch so.
Ein ordentlicher Pegelwandler ist besser.
Gast #4520071
Lesenswert?

Danke für den Hinweis der "defekten" MAx31885
Bei mir steh folgendes drauf:
M31855K
1232A2
529AI

@Jötze
Ich hab jetzt mal die PINS gegen GND gemessen und das sind rund 4KOHM.. 
Vermute das der Wert aufgrund der Internen Verschaltung zustande kommt

@Heiko G. ich habe jetzt mal die Diode gebrückt, da momentan der PIN am 
Arduino auf in steht und ich nichts anderes dran habe...
Ergebnis bleibt unverändert
Gast #4520310
Lesenswert?

Bigfoot schrieb:
> Wenn der Pegel nicht stimmt würden diese Werte doch nicht so zuverlässig
> geliefert werden

...stimmt, aber was passt denn nun nicht ohne Finger?
"Wackeln" die Werte zu sehr?
Ist die Abweichung absolut zu groß? > Mittelwert!
Mein Exemplar (MAX31855S) mag z.B. 100° nicht (meint es wären ca.80°).
Gast #4520318
Lesenswert?

@Sabberlotte

also mit dem Finger wirds jetzt auch nicht besser.... meistens gibt er 
für die ersten 16 beginnent folgendes aus:

0111110XXXXXXXXX

Also komplett unplausible Werte.

Ich hab jetzt meinen letzten MAX auf ein seperates Board gelötet ohne 
Kondensator etc.. direkt an den Raspberry und dort gibt er richtige 
werte aus.
Gast #4520333
Lesenswert?

Bigfoot schrieb:
> Woran kann das liegen?

Sorry dass ich das so destruktiv sagen muss aber:

Bei einem solchen Layout wundert mich dass überhaupt etwas
funktioniert.

Dan sehe ich noch einen BUZ11 der so irgendwo frei im Nirwana
schwebt, vielleicht soll der etwas Leistung schalten? So
wie du das aufbaust sicherlich nicht .....
Gast #4520384
Lesenswert?

Heiko G. schrieb:
> Ist die Diode in der MISO-Leitung nicht kontraproduktiv ? Der MAX
> liefert auf Pin 7 sein Ausgangssignal, die Diode lässt nur 1-Signale
> durch

Die drei Dioden sollte man überhaupt erst einmal begründen. Ich
sehe keinen Anlass dafür sie einzusetzen. Zudem (wenn es wirklich
1N4004 sind) sind sie für eine solche Anwendung zu langsam,
das sind ja Gleichrichterdioden für Wechselspannung. Ausserdem
veringern sie den gültigen Pegel der anliegen soll was die
Datenübertragung unsicher macht.
Gast #4520385
Lesenswert?

Mir gibt schon der Schaltplan zu denken. Keine vernünftige 
Pegelanpassung stattdessen ???
Datenleitungsrichtung nicht richtig  eingezeichnet (MISO) Diode senkt 
den ohnehin schon niedrigen Pegel zusätzlich. Dioden D12 D13 mit 
Pullupwiderstände  (das ist doch SPI und nicht I2C).
Am falschem Ende gespart.

https://www.mikrocontroller.net/articles/Pegelwandler#3.2C3_V_.E2.87.92_5_V
Gast #4520543
Lesenswert?

Hallo Bernhard,

ich habe eure Kritik nun zum Anlass genommen das Layout zu überdenken 
sowie die Kommunikation von 3V3 auf 5V und umgekehrt.

Was würdest du mir denn empfehlen?
5->3V3 einfacher Spannungsteiler ausreichend?
3V3->5V Per Transistor und Pullupwiderstand?

Danke für die TIPPS
Gast #4520786
Lesenswert?

Bei eine neuem Design wäre ein TXS0104 keine schlechte Idee.
Da die Platine schon steht würde ich als erstes versuchen
1. Die Dioden Pullup Kombinationen durch durch Spannungsteiler zu 
ersetzen.
Das lässt sich wahrscheinlich noch auf der Platine hinfriemeln.
2. D4 würde ich durch eine Brücke ersetzen.
Gast #4520943
Lesenswert?

@Bernhard

das werde ich nochmal versuchen mit dem Spannungsteiler..

Du hast mir empfohlen auf der MISO Leitung die Diode zu entfernen.
Da aber auf der MISO Leitung noch der CJ125 kommen soll wuerde der mir 
doch den max mit 5V auf der MISO Leitung zerstoeren oder habe ich hier 
einen Denkfehler?

Noch eine Frage zum TXS was mach ich mit dem OE (Output Enable) PIN das 
habe ich nicht verstanden

Danke
Gast #4521104
Lesenswert?

MISO = Master in Slave out. Wobei wir wieder bei der Datenrichtung 
angekommen sind. Solange du dir darüber nicht klar bist lass das lieber 
und teste das erst mal auf einem Steckboard.
Mit OE kannst du den Ausgang sperren oder freischalten. Wird gerne 
verwendet um zu verhindern das 2 Ausgänge gegeneinander fahren oder um 
die Ausgänge mehrere Bausteine an einen Eingang des uC zu hängen. Das 
heißt man schaltet den Ausgang eines Peripheriebaustein dann frei wenn 
der uC sicher auf Eingang ist und bereit ist die Daten auch zu erfassen. 
Keine Ahnung was der TXS sein soll aber wenn es dafür ein Datenblatt 
gibt sollte das weitere Informationen liefern.
Zu deiner Information Ausgänge gegeneinander zu schalten kann auch in 
reinen 5Volt Systemen zur Zerstörung der Bauteile führen bei gemischten 
System geht das natürlich um so leichter.
Gast #4521870
Lesenswert?

@Bernhard

Danke schonmal für deine Erklärung.

Kann ich den OE auch auf 5V hängen oder muss es 3V3 sein?

Vermutlich kann ich dir mit MISO nicht ganz folgen.
MISO heißt Master in Slave Out, soweit kann ich dir noch folgen.

habe ich aber mehrere Slaves wie bei mir (CJ125+MAX31885) müssen diese 
doch parallel auf der MISO Leitung hängen oder liege ich hier etwa 
falsch..

Nur über den Slave Select spreche ich den Korrekten Chip an?
Wähle ich nun über SS den CJ125 an wird dieser auf der MISO Leitung die 
parallel zum MAX31885 hängt seine Daten in 5V verschicken..

Dadurch bekommt der MAX eine zu hohe Spannung..

Mit der Lösung des OE wenn ich es richtig verstanden habe kann ich 
dieses "Problem" umgehen

P.S. ich meine mit TXS den TXS0104
Gast #4521935
Lesenswert?

Bigfoot schrieb:
> Kann ich den OE auch auf 5V hängen oder muss es 3V3 sein?

...siehe Datenblatt: an 3V3!

Bigfoot schrieb:
> habe ich aber mehrere Slaves wie bei mir (CJ125+MAX31885) müssen diese
> doch parallel auf der MISO Leitung hängen oder liege ich hier etwa
> falsch..

Nein, du liegst richtig.

Bigfoot schrieb:
> Nur über den Slave Select spreche ich den Korrekten Chip an?
> .......................
> Mit der Lösung des OE wenn ich es richtig verstanden habe kann ich
> dieses "Problem" umgehen

Genau. Da du aber vom Nano aus (5V) umschalten musst ist die Spannung an 
OE auf 3V3 zu begrenzen. Im einfachsten Fall mit einem Spannungteiler.
Gast #4570769
Lesenswert?

Hallo Leute,

ist doch noch ein wenig später geworden als geplant...

Ich habe es jetzt nochmal so umgesetzt, wie hier beschrieben:
1. Neue Platine mit anderen Layout als aufsteckmodul für ein arduino 
Mega2560
2. Mit einem einem Logik Umsetzer 3V3<>5V
3. Sehr Wichtig!!! Kondensator 1nF parallel zum Thermolement, ohne 
diesen Kondensator schwankt die Spannung um die 15-20Grad.


Vielen herzlichen Dank nochmal..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren