Kamil Górski / MAX31865
Committer:
freakone
Date:
Fri Mar 29 14:09:06 2019 +0000
Revision:
2:b42b7148fbe0
new library content and calculations

Who changed what in which revision?

UserRevisionLine numberNew contents of line
freakone 2:b42b7148fbe0 1 /***************************************************
freakone 2:b42b7148fbe0 2 This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865
freakone 2:b42b7148fbe0 3
freakone 2:b42b7148fbe0 4 Designed specifically to work with the Adafruit RTD Sensor
freakone 2:b42b7148fbe0 5 ----> https://www.adafruit.com/products/3328
freakone 2:b42b7148fbe0 6
freakone 2:b42b7148fbe0 7 This sensor uses SPI to communicate, 4 pins are required to
freakone 2:b42b7148fbe0 8 interface
freakone 2:b42b7148fbe0 9 Adafruit invests time and resources providing this open source code,
freakone 2:b42b7148fbe0 10 please support Adafruit and open-source hardware by purchasing
freakone 2:b42b7148fbe0 11 products from Adafruit!
freakone 2:b42b7148fbe0 12
freakone 2:b42b7148fbe0 13 Written by Limor Fried/Ladyada for Adafruit Industries.
freakone 2:b42b7148fbe0 14 BSD license, all text above must be included in any redistribution
freakone 2:b42b7148fbe0 15
freakone 2:b42b7148fbe0 16 Modified for mbed project - Dan Julio - 5/2017
freakone 2:b42b7148fbe0 17 Improvements - freakone 3/2019
freakone 2:b42b7148fbe0 18 ****************************************************/
freakone 2:b42b7148fbe0 19 #ifndef MAX31865_H
freakone 2:b42b7148fbe0 20 #define MAX31865_H
freakone 2:b42b7148fbe0 21
freakone 2:b42b7148fbe0 22 #include <stdint.h>
freakone 2:b42b7148fbe0 23 #include "mbed.h"
freakone 2:b42b7148fbe0 24
freakone 2:b42b7148fbe0 25 #define MAX31865_CONFIG_REG 0x00
freakone 2:b42b7148fbe0 26 #define MAX31865_CONFIG_BIAS 0x80
freakone 2:b42b7148fbe0 27 #define MAX31865_CONFIG_MODEAUTO 0x40
freakone 2:b42b7148fbe0 28 #define MAX31865_CONFIG_MODEOFF 0x00
freakone 2:b42b7148fbe0 29 #define MAX31865_CONFIG_1SHOT 0x20
freakone 2:b42b7148fbe0 30 #define MAX31865_CONFIG_3WIRE 0x10
freakone 2:b42b7148fbe0 31 #define MAX31865_CONFIG_24WIRE 0x00
freakone 2:b42b7148fbe0 32 #define MAX31865_CONFIG_FAULTSTAT 0x02
freakone 2:b42b7148fbe0 33 #define MAX31865_CONFIG_FILT50HZ 0x01
freakone 2:b42b7148fbe0 34 #define MAX31865_CONFIG_FILT60HZ 0x00
freakone 2:b42b7148fbe0 35
freakone 2:b42b7148fbe0 36 #define MAX31865_RTDMSB_REG 0x01
freakone 2:b42b7148fbe0 37 #define MAX31865_RTDLSB_REG 0x02
freakone 2:b42b7148fbe0 38 #define MAX31865_HFAULTMSB_REG 0x03
freakone 2:b42b7148fbe0 39 #define MAX31865_HFAULTLSB_REG 0x04
freakone 2:b42b7148fbe0 40 #define MAX31865_LFAULTMSB_REG 0x05
freakone 2:b42b7148fbe0 41 #define MAX31865_LFAULTLSB_REG 0x06
freakone 2:b42b7148fbe0 42 #define MAX31865_FAULTSTAT_REG 0x07
freakone 2:b42b7148fbe0 43
freakone 2:b42b7148fbe0 44 #define MAX31865_FAULT_HIGHTHRESH 0x80
freakone 2:b42b7148fbe0 45 #define MAX31865_FAULT_LOWTHRESH 0x40
freakone 2:b42b7148fbe0 46 #define MAX31865_FAULT_REFINLOW 0x20
freakone 2:b42b7148fbe0 47 #define MAX31865_FAULT_REFINHIGH 0x10
freakone 2:b42b7148fbe0 48 #define MAX31865_FAULT_RTDINLOW 0x08
freakone 2:b42b7148fbe0 49 #define MAX31865_FAULT_OVUV 0x04
freakone 2:b42b7148fbe0 50
freakone 2:b42b7148fbe0 51 #define RTD_A 3.9083e-3
freakone 2:b42b7148fbe0 52 #define RTD_B -5.775e-7
freakone 2:b42b7148fbe0 53
freakone 2:b42b7148fbe0 54 typedef enum max31865_numwires
freakone 2:b42b7148fbe0 55 {
freakone 2:b42b7148fbe0 56 MAX31865_2WIRE = 0,
freakone 2:b42b7148fbe0 57 MAX31865_3WIRE = 1,
freakone 2:b42b7148fbe0 58 MAX31865_4WIRE = 0
freakone 2:b42b7148fbe0 59 } max31865_numwires_t;
freakone 2:b42b7148fbe0 60
freakone 2:b42b7148fbe0 61 class MAX31865
freakone 2:b42b7148fbe0 62 {
freakone 2:b42b7148fbe0 63 public:
freakone 2:b42b7148fbe0 64 MAX31865(SPI &_spi, PinName _ncs);
freakone 2:b42b7148fbe0 65
freakone 2:b42b7148fbe0 66 bool begin(max31865_numwires_t x = MAX31865_2WIRE);
freakone 2:b42b7148fbe0 67
freakone 2:b42b7148fbe0 68 uint8_t isSensorPresent() { return sensorPresent; };
freakone 2:b42b7148fbe0 69 uint8_t readFault(void);
freakone 2:b42b7148fbe0 70 void clearFault(void);
freakone 2:b42b7148fbe0 71 uint16_t readRTD();
freakone 2:b42b7148fbe0 72
freakone 2:b42b7148fbe0 73 void setWires(max31865_numwires_t wires);
freakone 2:b42b7148fbe0 74 void autoConvert(bool b);
freakone 2:b42b7148fbe0 75 void enableBias(bool b);
freakone 2:b42b7148fbe0 76 float temperature(float RTDnominal, float refResistor, uint16_t rtdVal = 0);
freakone 2:b42b7148fbe0 77
freakone 2:b42b7148fbe0 78 private:
freakone 2:b42b7148fbe0 79 SPI &spi;
freakone 2:b42b7148fbe0 80 DigitalOut ncs;
freakone 2:b42b7148fbe0 81 bool sensorPresent;
freakone 2:b42b7148fbe0 82
freakone 2:b42b7148fbe0 83 void readRegisterN(uint8_t addr, uint8_t buffer[], uint8_t n);
freakone 2:b42b7148fbe0 84 uint8_t readRegister8(uint8_t addr);
freakone 2:b42b7148fbe0 85 uint16_t readRegister16(uint8_t addr);
freakone 2:b42b7148fbe0 86 void writeRegister8(uint8_t addr, uint8_t reg);
freakone 2:b42b7148fbe0 87 };
freakone 2:b42b7148fbe0 88
freakone 2:b42b7148fbe0 89 #endif
freakone 2:b42b7148fbe0 90