跳转至

MAX31855开发板使用

MAX31855

The MAX31855 is a sophisticated thermocouple-to-digital converter with a built-in 14-bit analog-to-digital converter \(ADC\). The device also contains cold-junction compensation sensing and correction, a digital controller, an SPIcompatible interface, and associated control logic.

Drive CS low to output the first bit on the SO pin. A complete serial-interface read of the cold-junction compensated thermocouple temperature requires 14 clock cycles. Thirty-two clock cycles are required to read both the thermocouple and reference junction temperatures \(Table 2 and Table 3.\) The first bit, D31, is the thermocouple temperature sign bit, and is presented to the SO pin within tDV of the falling edge of CS. Bits D[30:18] contain the converted temperature in the order of MSB to LSB, and are presented to the SO pin within tD0 of the falling edge of SCK. Bit D16 is normally low and goes high when the thermocouple input is open or shorted to GND or VCC. The reference junction temperature data begins with D15. CS can be taken high at any point while clocking out conversion data. If T+ and T- are unconnected, the thermocouple temperature sign bit \(D31\) is 0, and the remainder of the thermocouple temperature value \(D\[30:18\]\) is 1.From above graphic, it can be seen MAX31855 SPI mode 0.

D13~D18 is thermal coupler hot point temperature.

MAX31855 Arduino Function
Vin 5V 5V
GND GND GND
DO 12 MISO
CS 10 or other SS
CLK 13 SCK

代码

代码修改自此链接

打开下面的实例文件,上传到开发板。

#include <SPI.h>

//Additionally, connect the MAX6675 as follows:
//MISO  Arduino pin 12          //master in slave out
//SCK   Arduino pin 13          //serial clock
const int CS = 10;

void setup() {
  Serial.begin(9600);
  pinMode(CS, OUTPUT);
  digitalWrite(CS, HIGH);  
  SPI.begin();                            //initialize SPI
  delay(500);
}

void loop() {
   unsigned int tcData;
   float temp, avgTemp;
   uint32_t d = 0;
   digitalWrite(CS, LOW);
   SPI.beginTransaction(SPISettings(4300000, MSBFIRST, SPI_MODE1));
   tcData = SPI.transfer(0x00) << 8;
   tcData |= SPI.transfer(0x00);  
   digitalWrite(CS, HIGH);
   if (tcData & 0x0004) {                  //open thermocouple circuit
        Serial.println("Thermal Coupler Open."); 
    }
    else {
   temp = (tcData >> 3) / 4.0;
   Serial.print("C = "); 
   Serial.println(temp); 
    }
   delay(1000);
}

MQTT

服务器 Mosquitto
MQTT messaging for Raspberry Pi \(or Python\), Paho Python Client

Arduino Client, PubSubClient