Forum: Mikrocontroller und Digitale Elektronik MAX31865 PT100


von Jana L. (emy_l)


Lesenswert?

Hallo,

ich bin leider ein absoluter Anfänger was Mikrocontroller angeht … Doch 
leider komme ich nicht drum herum, da ich mich mitten in meiner 
Masterarbeit befinde.

Ziel ist eine Temperaturmessung mit einem PT100 bis ca. 300 Grad. Die 
Genauigkeit spielt nicht die größte Rolle. Ebenso hält die Schaltung 
nicht lange durch bis sie wegen extremen Temperaturen zerstört wird, 
daher genügt auch das einfachste vom einfachen für die Programmierung. 
Die Temperaturwerte sollen mit Hilfe eines Transceivers an einen 
Empfänger übergeben werden. Ich nutze für den PT100 einen MAX31865 
RTD-to-Digital Converter und einen PIC24FJ256DA206.


Es geht nun um die Programmierung des Mikrocontrollers, wo ich wirklich 
gar keine Erfahrung habe.


Mithilfe der MCC Software habe ich eine SPI Schnittstelle und die 
dazugehörigen Pins bereits definiert, ebenso wie die verschiedenen 
Register des MAX31865.

Im Netz habe ich bereits dieses Dokument: 
https://www.mikrocontroller.net/attachment/highlight/219344 gefunden und 
wollte mich hieran etwas orientieren.

Nun zu meiner Frage/Fragen. Zunächst geht es um Clock, Chip Select usw. 
Die Clock für die Schnittstelle habe ich in der MCC auf 2 MHz 
eingestellt. Wie übergebe ich die an den Chip oder läuft das durch die 
Einstellung automatisch? Und wie wird der Chip konfiguriert? Als Anfang 
genügt es, die Temperatur anzeigen zu lassen, also bleibt der 
Transceiver erst einmal aus dem Spiel.


Ich entschuldige mich schon einmal für meine Unkenntnisse der 
Mikrocontroller-Programmierung :D Ich bitte um Rücksicht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jana L. schrieb:
> Ebenso hält die Schaltung nicht lange durch bis sie wegen extremen
> Temperaturen zerstört wird
Warum muss die Schaltung direkt an der Hitzequelle sein?

> daher genügt auch das einfachste vom einfachen für die Programmierung.
Dieser logische Kurzschluss erschließt sich mir nicht. Ich würde sogar 
eher andersrum argumentieren: weil das Ding hinterher kaputt ist, sollte 
es vorher sinvollerweise möglichst zuverlässig funktionieren und 
brauchbare Daten liefern.

> Zunächst geht es um Clock, Chip Select usw. Die Clock für die
> Schnittstelle habe ich in der MCC auf 2 MHz eingestellt. Wie übergebe
> ich die an den Chip oder läuft das durch die Einstellung automatisch?
Du musst da eine Verbindung mit MOSI, MISO, SCLK und SS# zwischen dem 
Slave und dem Master machen.

> Und wie wird der Chip konfiguriert?
Indem seine Register auf solche Werte gesetzt werden, dass sie zu deinem 
Sensor und deinem Messbereich passen.

> Im Netz habe ich bereits dieses Dokument:
> https://www.mikrocontroller.net/attachment/highlight/219344 gefunden
Das ist kein "Dokument", sondern ein Programm. Analysiere es und 
versuche nachzuvollziehen, was da gemacht wird. Dann kannst du 
abschätzen, ob du das genauso auch brauchen kannst.

> und wollte mich hieran etwas orientieren.
Orientiere dich am Datenblatt deines Chips:
https://datasheets.maximintegrated.com/en/ds/MAX31865.pdf
Da drin steht, was dir der Hersteller garantiert, wenn du das IC so 
verwendest, wie er es dir vorschreibt. Da steht dann auch das Timing und 
der Registersatz für den SPI drin.

von Jana L. (emy_l)


Lesenswert?

Die Schaltung ist Teil einer Sonde die bei einem Vulkanausbruch zum 
Einsatz kommt, daher wird sie dabei leider umkommen...


Das Programm versuche ich bereits zu analysieren. Natürlich passt es 
nicht eins zu eins auf mein Vorhaben, leider, daher habe ich ja ein 
neuen Beitrag erstellt.


Was genau in die Register geschrieben wird, weiß ich nur so halb. Für 
mich erschließt sich noch nicht so ganz, was es genau mit "1-Shot" auf 
sich hat. Vielleicht weiß da jemand Rat?

So wie ich das verstanden habe, ist es in meinem Fall nicht sehr 
hilfreich, es soll quasi durchgehend Temperaturwerte gesendet werden, 
was leider nur einige Sekunden der Fall sein wird, bis die Sonde 
"stirbt".

Demnach wäre mein Vorschlag mit 0b11000010, aber ich lasse mich gerne 
eines besseren Belehren.

von Jana L. (emy_l)


Angehängte Dateien:

Lesenswert?

Ich benötige demnach mehrere Funktionen für "write", "read" und zur 
Berechnung der Temperatur und der Ausgabe des Wertes.

Als Beispiel eine Funktion write für den MAX31865:
1
void Write(byte w_addr, byte data) {
2
3
digitalWrite(CS_Pin, LOW);
4
5
SPI.transfer(w_addr);
6
7
SPI.transfer(data);
8
9
digitalWrite(CS_Pin, High);
10
11
}

Was das macht, ist mir klar, aber wie übertrage ich das nun auf den PIC, 
sodass keine Fehlermeldungen angezeigt werden? Den Typ Byte gibt es ja 
auf jeden Fall nicht oder? Der CS_Pin ist bereits einem Pin den PICs 
zugeordnet. Ist es ausreichend den cs_pin einfach auf 0 bzw. 1 zu setzen 
(anstatt LOW und HIGH)?

Und wie kommen die jeweiligen Pins, die ich durch die MCC definiert habe 
für die SPI Schnittstelle (siehe Bild), mit der Funktion in Verbindung?


Sorry für die ganzen blöden Fragen :D

von Andreas (Gast)


Lesenswert?

Fang doch klein an, beschäftige Dich mit Grundlagen und
das Rad muss auch nicht neu erfunden werden.
Für den Chip gibt es fertige Lib,s (mit Beispiele) für
die Arduino Umgebung.
Vieleicht was für Dich ...

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.