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?
Einen 100nF direkt an Pin 1 und 4 (der nächste Kondensator ist meilenweit entfernt) und 10nF an Pin 2 und 3 sollten den Finger ersetzen.
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??
Ist der Fühler richtig dran, also nicht verpolt ? Miss mal die Thermospannung mim MM nach. Gruß JackFrost
Bigfoot schrieb: > > Noch jemand einen heißen TIPP?? 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.
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
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..
@Bastian Werner, ich habe die PINS auch mal gedreht macht keinen unterschied... Wenn ich den Thermofühler in mein Multimeter Stecke zeigt dies die korrekten werte an
Offtopic Woher hast Du denn den CJ125 bezogen und wieviel bezahlt? Gibt es eigentlich den CJ135 mittlerweile auch schon für Normalsterbliche? Grüße, GJ
Bist Du Dir sicher, dass der Fühler nicht irgendwo auf GND liegt?
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.
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
@Sabberlotte es ist halt nur so das alle Bits für die interne Temp korrekt sind... Wenn der Pegel nicht stimmt würden diese Werte doch nicht so zuverlässig geliefert werden
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°).
@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.
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 .....
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.
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
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
Bigfoot schrieb: > Was würdest du mir denn empfehlen? > 5->3V3 einfacher Spannungsteiler ausreichend? > 3V3->5V Per Transistor und Pullupwiderstand? Ein TXS0104 sollte reichen.
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.
:
Bearbeitet durch User
@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
Bigfoot schrieb: > ....was mach ich mit dem OE (Output Enable) PIN.... Datenblatt sagt: When the output-enable (OE) input is low, all outputs are placed in the high-impedance state. Also im Normalfall auf 3V3. Dann ist er nur Pegelwandler.
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.
@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
Um TXS nochmal aufzulösen... TXB0104 wurde am Anfang falsch geschrieben und ich habs einfach weitergetragen
okay ich nehme alles zurück und es gibt einen TXS0104 und TXB0104 https://www.conrad.de/de/logik-ic-umsetzer-texas-instruments-txs0104ed-umsetzer-bidirektional-open-drain-soic-14-1017332.html https://www.conrad.de/de/logik-ic-umsetzer-texas-instruments-txb0104d-umsetzer-bidirektional-soic-14-1017330.html
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.
okay danke erstmal ich werde am dienstag vorraussichtlich die neuen Teile bekommen und kann den in etwa ende der Woche berichten. Vielen Dank bis hierhin
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.