MAX31855 Cold-Junction Compensated Thermocouple-to-Digital Converter
MAX31855.h@1:aa96d283eead, 2015-07-29 (annotated)
- Committer:
- mederic
- Date:
- Wed Jul 29 12:28:35 2015 +0000
- Revision:
- 1:aa96d283eead
- Parent:
- 0:cd9dd4f2c484
add constructor for SPI bus
Who changed what in which revision?
User | Revision | Line number | New 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 |