- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 26

Thema: MAX31855 via SPI ansprechen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201

    MAX31855 via SPI ansprechen

    Hallo,

    ich habe mir den MAX31855K bestellt um höhere Temperaturen messen zu können.

    Ich habe dazu relativ wenig im Netz gefunden.

    Evtl. hat jemand Erfahrungen oder ein Bascom Code schnipsel für mich.

    Vielen Dank

    mfG
    Mario

    https://datasheets.maximintegrated.c...s/MAX31855.pdf
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Codeschnipsel hab Ich jetzt nicht aber im Prinzip sollte das so machbar sein:

    Letzlich ist die /CS Leitung auf 0 zu setzen ( ein Portpin auf 0 ) und die SPI muss 4 Bytes auslesen MSB first.
    Die SPI zu konfigurieren sollte mit Bascom kein Problem sein.
    Welches Bit hier welche Funktion hat steht in deinem Datenblatt auf Seite 10.

    Die einzelnen Bytes kannst Du ja entweder in zwei 16Bit Variablen oder eine 32 Bit Variable reintun.
    Beispiel 32Bit:
    /CS auf 0 setzen
    32 Bit Variable mit dem Wert 0 laden.
    Erstes Byte Lesen in die 32 Bit Variable reintun um 8Bit nach Links verschieben.
    Nächstes Byte mit einer Oder Verknüpfung mit der 32Bit Variablen verknüpfen und 8 Bit nach links verschieben.
    usw. bis das letze Byte gelesen und eingefügt wurde.
    Nach dem letzten Byte darf natürlich nicht mehr geschoben werden.
    /CS wieder auf 1 setzen.

    Die benötigten Daten dann mit Filtern und Verschieben ( UND Verknüpfung ) rausfiltern und umrechnen.

    Das sollte es gewesen sein.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Hallo,

    Danke für deine Antwort.

    Ich hab ne weile nichts mehr mit MC´s gemacht, muss mich erstmal wieder rein finden. Das Modul hab ich noch nicht, kann also noch nichts testen.

    Was mir noch nicht klar ist, was ich mit den "Table 4. Thermocouple Temperature Data Format" und "Table 5. Reference Junction Temperature Data Format" (Seite 10.) mache. Müssen die miteinander verechnet werden, oder sind die Daten aus Tabelle 4 schon die Temperaturen am Messfühler.

    Vielen Dank

    mfG
    Mario
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Ich meine es muss vererchnet werden:
    For a K-type thermocouple, the voltage changes by about 41μV/°C, which approximates the thermocouple characteristic with the following linear equation:VOUT = (41.276μV/°C) x (TR - TAMB)where VOUT is the thermocouple output voltage (μV), TRis the temperature of the remote thermocouple junction (°C), and TAMB is the temperature of the device (°C).

    Also vom Messwert des PT100 den Messwert des internen Temperatursesors abziehen und dann verrechnen.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Crazy Harry
    Registriert seit
    15.01.2006
    Ort
    Raum Augsburg - Ulm
    Beiträge
    1.308
    Vielleicht kannst du ja damit was anfangen:
    Code:
    Procedure ReadAT;
      Var Error       : Integer;
          JT          : Word;                             // Chip-Temperatur
          B1,B2,B3,B4 : Byte;
          Dummy       : Byte;
      Begin
        For Dummy:=0 to 1 do
          Excl(PortC,5+Dummy);
          SDelay(200);
          B1:=SPIInpByte1;
          B2:=SPIInpByte1;
          B3:=SPIInpByte1;
          B4:=SPIInpByte1;
          Error:=((256*Integer(B3))+Integer(B4)) and $0007;
          If Error>0
            then
              ATError[Dummy]:=Error;
            else
              ATError[Dummy]:=0;
            EndIf;
          JT:=((Word(B3)*256)+Word(B4)) SHR 8;
          If (B1 and $80)=$80
            then
              AT[Dummy]:=(-1*((((not((256*Integer(B1))+Integer(B2))) and $0FFF)+1) SHR 4))-JT+20;
            else
              AT[Dummy]:=(((256*Integer(B1))+Integer(B2)) SHR 4)-JT + 21;  // Temperatur-Korrektur
            EndIf;
          Incl(PortC,5+Dummy);
          EndFor;
      End ReadAT;
    PortC,5 und6 sind die /CS der beiden MAX (ich hatte 2 in der Schaltung).

    Harry
    Ich programmiere mit AVRCo

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Danke, euch beiden...

    @crazy Harry, ich hab keine Ahnung... das ist PASCAL, oder?

    Ok, die 32Bit werden in 4 Bytes übertragen.

    Ich versuche das mal zu entschlüsseln, vorallem die Rechnung da unten...
    Leider ist das Modul noch nicht da, deswegen mach ich erst mal paar "Trockenübungen".

    mfG
    Mario
    Geändert von dj_cyborg (13.08.2020 um 08:40 Uhr)
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

Ähnliche Themen

  1. LCD über I2C ansprechen
    Von Reissdorf im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 30.12.2012, 20:48
  2. RFM ansprechen
    Von runner02 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 11.03.2012, 12:01
  3. PCF 8474 ansprechen ?
    Von Goliath im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.03.2008, 15:17
  4. USB Ansprechen
    Von DHigh im Forum Software, Algorithmen und KI
    Antworten: 8
    Letzter Beitrag: 05.10.2006, 21:37
  5. RS232 ansprechen
    Von Goblin im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 25.04.2005, 09:24

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test