A collection of Analog Devices drivers for the mbed platform
For additional information check out the mbed page of the Analog Devices wiki: https://wiki.analog.com/resources/tools-software/mbed-drivers-all
libraries/Thermocouple/Thermocouple_core_h.txt@33:c3ec596a29c2, 2016-11-07 (annotated)
- Committer:
- Adrian Suciu
- Date:
- Mon Nov 07 16:27:12 2016 +0200
- Revision:
- 33:c3ec596a29c2
Added CN0391, CN0396 and CN0397 shields
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Adrian Suciu |
33:c3ec596a29c2 | 1 | #include "mbed.h" |
Adrian Suciu |
33:c3ec596a29c2 | 2 | #ifndef _THERMOCOUPLE_H_ |
Adrian Suciu |
33:c3ec596a29c2 | 3 | #define _THERMOCOUPLE_H_ |
Adrian Suciu |
33:c3ec596a29c2 | 4 | |
Adrian Suciu |
33:c3ec596a29c2 | 5 | #define DEFINE_LOOKUP_TABLES |
Adrian Suciu |
33:c3ec596a29c2 | 6 | #ifdef DEFINE_LOOKUP_TABLES |
Adrian Suciu |
33:c3ec596a29c2 | 7 | #define TYPE_B_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 8 | #define TYPE_E_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 9 | #define TYPE_J_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 10 | #define TYPE_K_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 11 | #define TYPE_N_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 12 | #define TYPE_R_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 13 | #define TYPE_S_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 14 | #define TYPE_T_LUT |
Adrian Suciu |
33:c3ec596a29c2 | 15 | #endif |
Adrian Suciu |
33:c3ec596a29c2 | 16 | |
Adrian Suciu |
33:c3ec596a29c2 | 17 | class Thermocouple |
Adrian Suciu |
33:c3ec596a29c2 | 18 | { |
Adrian Suciu |
33:c3ec596a29c2 | 19 | private: |
Adrian Suciu |
33:c3ec596a29c2 | 20 | |
Adrian Suciu |
33:c3ec596a29c2 | 21 | public: |
Adrian Suciu |
33:c3ec596a29c2 | 22 | typedef struct |
Adrian Suciu |
33:c3ec596a29c2 | 23 | { |
Adrian Suciu |
33:c3ec596a29c2 | 24 | float min_voltage_range; |
Adrian Suciu |
33:c3ec596a29c2 | 25 | float max_voltage_range; |
Adrian Suciu |
33:c3ec596a29c2 | 26 | float coef[16]; |
Adrian Suciu |
33:c3ec596a29c2 | 27 | float power[16]; |
Adrian Suciu |
33:c3ec596a29c2 | 28 | int n; |
Adrian Suciu |
33:c3ec596a29c2 | 29 | }thermocouple_poly_subrange; |
Adrian Suciu |
33:c3ec596a29c2 | 30 | Thermocouple(); |
Adrian Suciu |
33:c3ec596a29c2 | 31 | virtual ~Thermocouple(); |
Adrian Suciu |
33:c3ec596a29c2 | 32 | static float convert(float voltage, const thermocouple_poly_subrange range[], const int n); |
Adrian Suciu |
33:c3ec596a29c2 | 33 | static float lookup(const int32_t *lut, float voltage,uint16_t size,int16_t offset); |
Adrian Suciu |
33:c3ec596a29c2 | 34 | virtual float convert(float voltage) = 0; |
Adrian Suciu |
33:c3ec596a29c2 | 35 | virtual float convert_inv(float temp) = 0; |
Adrian Suciu |
33:c3ec596a29c2 | 36 | virtual float lookup(float voltage) = 0; |
Adrian Suciu |
33:c3ec596a29c2 | 37 | virtual float lookup_inv(float temp) = 0; |
Adrian Suciu |
33:c3ec596a29c2 | 38 | |
Adrian Suciu |
33:c3ec596a29c2 | 39 | }; |
Adrian Suciu |
33:c3ec596a29c2 | 40 |