MAX31855 Cold-Junction Compensated Thermocouple-to-Digital Converter

Committer:
mederic
Date:
Wed Jul 29 13:11:30 2015 +0000
Revision:
2:c4d43aacb666
Parent:
1:aa96d283eead
read spi 8bit mode (to be complient with all platform)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mederic 0:cd9dd4f2c484 1 #ifndef MAX31855_H
mederic 0:cd9dd4f2c484 2 #define MAX31855_H
mederic 0:cd9dd4f2c484 3
mederic 0:cd9dd4f2c484 4 #include "mbed.h"
mederic 0:cd9dd4f2c484 5 /** MAX31855 class.
mederic 0:cd9dd4f2c484 6 * Used for read MAX31855 Cold-Junction Compensated Thermocouple-to-Digital Converter
mederic 0:cd9dd4f2c484 7 *
mederic 0:cd9dd4f2c484 8 * Example:
mederic 0:cd9dd4f2c484 9 * @code
mederic 0:cd9dd4f2c484 10 * DigitalOut led(LED2);
mederic 0:cd9dd4f2c484 11 * Serial pc(USBTX,USBRX);
mederic 0:cd9dd4f2c484 12 * MAX31855 therm(p5,p6,p7,p8);
mederic 0:cd9dd4f2c484 13 *
mederic 0:cd9dd4f2c484 14 * int main()
mederic 0:cd9dd4f2c484 15 * {
mederic 0:cd9dd4f2c484 16 * while(1)
mederic 0:cd9dd4f2c484 17 * {
mederic 0:cd9dd4f2c484 18 * pc.printf("T=%f;Chip=%f\r\n",therm.thermocouple(),therm.chip());
mederic 0:cd9dd4f2c484 19 * led = therm.fault();
mederic 0:cd9dd4f2c484 20 * wait(0.5);
mederic 0:cd9dd4f2c484 21 * }
mederic 0:cd9dd4f2c484 22 * }
mederic 0:cd9dd4f2c484 23 * @endcode
mederic 0:cd9dd4f2c484 24 */
mederic 0:cd9dd4f2c484 25 class MAX31855
mederic 0:cd9dd4f2c484 26 {
mederic 0:cd9dd4f2c484 27 public:
mederic 0:cd9dd4f2c484 28 /** Create MAX31855 instance connected to spi & ncs
mederic 0:cd9dd4f2c484 29 * @param mosi SPI master out slave in pin (MAX31855 is only read device)
mederic 0:cd9dd4f2c484 30 * @param miso SPI master in slave out pin
mederic 0:cd9dd4f2c484 31 * @param sck SPI clock pin
mederic 0:cd9dd4f2c484 32 * @param ncs pin to connect at CS input
mederic 0:cd9dd4f2c484 33 */
mederic 0:cd9dd4f2c484 34 MAX31855(PinName mosi, PinName miso, PinName sck, PinName ncs);
mederic 0:cd9dd4f2c484 35
mederic 1:aa96d283eead 36 /** Create MAX31855 instance connected to spi & ncs
mederic 1:aa96d283eead 37 * @param SPI bus instance (MAX31855 is only read device)
mederic 1:aa96d283eead 38 * @param ncs pin to connect at CS input
mederic 1:aa96d283eead 39 */
mederic 1:aa96d283eead 40 MAX31855(SPI& spi, PinName ncs);
mederic 1:aa96d283eead 41
mederic 0:cd9dd4f2c484 42 /**Get Thermocouple temperature
mederic 0:cd9dd4f2c484 43 * @returns temperature [°C]
mederic 0:cd9dd4f2c484 44 */
mederic 0:cd9dd4f2c484 45 float thermocouple(void);
mederic 0:cd9dd4f2c484 46
mederic 0:cd9dd4f2c484 47 /**Get Chip temperature
mederic 0:cd9dd4f2c484 48 * @returns temperature [°C]
mederic 0:cd9dd4f2c484 49 */
mederic 0:cd9dd4f2c484 50 float chip(void);
mederic 0:cd9dd4f2c484 51
mederic 0:cd9dd4f2c484 52 /**Check if thermocouple disconnected
mederic 0:cd9dd4f2c484 53 */
mederic 0:cd9dd4f2c484 54 bool opened(void);
mederic 0:cd9dd4f2c484 55
mederic 0:cd9dd4f2c484 56 /**Check if an error
mederic 0:cd9dd4f2c484 57 */
mederic 0:cd9dd4f2c484 58 bool fault(void);
mederic 0:cd9dd4f2c484 59
mederic 0:cd9dd4f2c484 60 /**Check if thermocouple short-circuited to Vcc
mederic 0:cd9dd4f2c484 61 */
mederic 0:cd9dd4f2c484 62 bool scToVcc(void);
mederic 0:cd9dd4f2c484 63
mederic 0:cd9dd4f2c484 64 /**Check if thermocouple shorted-circuited to GND
mederic 0:cd9dd4f2c484 65 */
mederic 0:cd9dd4f2c484 66 bool scToGnd(void);
mederic 0:cd9dd4f2c484 67
mederic 0:cd9dd4f2c484 68 #ifdef MBED_OPERATORS
mederic 0:cd9dd4f2c484 69 /** An operator shorthand for thermocouple()
mederic 0:cd9dd4f2c484 70 *
mederic 0:cd9dd4f2c484 71 * The float() operator can be used as a shorthand for thermocouple() to simplify common code sequences
mederic 0:cd9dd4f2c484 72 *
mederic 0:cd9dd4f2c484 73 * Example:
mederic 0:cd9dd4f2c484 74 * @code
mederic 0:cd9dd4f2c484 75 * float x = temp.thermocouple();
mederic 0:cd9dd4f2c484 76 * float x = temp;
mederic 0:cd9dd4f2c484 77 *
mederic 0:cd9dd4f2c484 78 * if(temp.thermocouple() > 20.25) { ... }
mederic 0:cd9dd4f2c484 79 * if(temp > 20.25) { ... }
mederic 0:cd9dd4f2c484 80 * @endcode
mederic 0:cd9dd4f2c484 81 */
mederic 0:cd9dd4f2c484 82 operator float(){return thermocouple();}
mederic 0:cd9dd4f2c484 83 #endif
mederic 0:cd9dd4f2c484 84
mederic 0:cd9dd4f2c484 85 protected:
mederic 0:cd9dd4f2c484 86 void read(void);
mederic 0:cd9dd4f2c484 87
mederic 0:cd9dd4f2c484 88 private:
mederic 0:cd9dd4f2c484 89 SPI _spi;
mederic 0:cd9dd4f2c484 90 DigitalOut _ncs;
mederic 0:cd9dd4f2c484 91 float _t;
mederic 0:cd9dd4f2c484 92 float _chip_t;
mederic 0:cd9dd4f2c484 93 bool _fault;
mederic 0:cd9dd4f2c484 94 bool _scv;
mederic 0:cd9dd4f2c484 95 bool _scg;
mederic 0:cd9dd4f2c484 96 bool _oc;
mederic 0:cd9dd4f2c484 97 };
mederic 0:cd9dd4f2c484 98
mederic 0:cd9dd4f2c484 99 #endif