A collection of Analog Devices drivers for the mbed platform
Embed:
(wiki syntax)
Show/hide line numbers
Thermocouple.h
00001 #include "mbed.h" 00002 #ifndef _THERMOCOUPLE_H_ 00003 #define _THERMOCOUPLE_H_ 00004 00005 #define DEFINE_LOOKUP_TABLES 00006 #ifdef DEFINE_LOOKUP_TABLES 00007 #define TYPE_B_LUT 00008 #define TYPE_E_LUT 00009 #define TYPE_J_LUT 00010 #define TYPE_K_LUT 00011 #define TYPE_N_LUT 00012 #define TYPE_R_LUT 00013 #define TYPE_S_LUT 00014 #define TYPE_T_LUT 00015 #endif 00016 00017 class Thermocouple 00018 { 00019 private: 00020 00021 public: 00022 typedef struct { 00023 float min_voltage_range; 00024 float max_voltage_range; 00025 float coef[16]; 00026 float power[16]; 00027 int n; 00028 } thermocouple_poly_subrange; 00029 Thermocouple(); 00030 virtual ~Thermocouple(); 00031 static float convert(float voltage, const thermocouple_poly_subrange range[], const int n); 00032 static float lookup(const int32_t *lut, float voltage, uint16_t size, int16_t offset); 00033 virtual float convert(float voltage) = 0; 00034 virtual float convert_inv(float temp) = 0; 00035 virtual float lookup(float voltage) = 0; 00036 virtual float lookup_inv(float temp) = 0; 00037 00038 }; 00039 00040 00041 00042 00043 class Thermocouple_Type_B : public Thermocouple 00044 { 00045 public: 00046 ~Thermocouple_Type_B(); 00047 static const thermocouple_poly_subrange inv_poly[2]; 00048 static const int inv_poly_size; 00049 float convert_inv(float temp); 00050 00051 static const thermocouple_poly_subrange poly[2]; 00052 static const int poly_size; 00053 float convert(float voltage); 00054 #ifdef TYPE_B_LUT 00055 static const int32_t lut[]; 00056 static const int16_t lut_offset; 00057 static const uint16_t lut_size; 00058 float lookup(float voltage); 00059 float lookup_inv(float temp); 00060 #endif 00061 }; 00062 00063 00064 class Thermocouple_Type_E : public Thermocouple 00065 { 00066 public: 00067 ~Thermocouple_Type_E(); 00068 static const thermocouple_poly_subrange inv_poly[2]; 00069 static const int inv_poly_size; 00070 float convert_inv(float temp); 00071 00072 static const thermocouple_poly_subrange poly[2]; 00073 static const int poly_size; 00074 float convert(float voltage); 00075 #ifdef TYPE_E_LUT 00076 static const int32_t lut[]; 00077 static const int16_t lut_offset; 00078 static const uint16_t lut_size; 00079 float lookup(float voltage); 00080 float lookup_inv(float temp); 00081 #endif 00082 }; 00083 00084 00085 class Thermocouple_Type_J : public Thermocouple 00086 { 00087 public: 00088 ~Thermocouple_Type_J(); 00089 static const thermocouple_poly_subrange inv_poly[2]; 00090 static const int inv_poly_size; 00091 float convert_inv(float temp); 00092 00093 static const thermocouple_poly_subrange poly[3]; 00094 static const int poly_size; 00095 float convert(float voltage); 00096 #ifdef TYPE_J_LUT 00097 static const int32_t lut[]; 00098 static const int16_t lut_offset; 00099 static const uint16_t lut_size; 00100 float lookup(float voltage); 00101 float lookup_inv(float temp); 00102 #endif 00103 }; 00104 00105 00106 class Thermocouple_Type_K : public Thermocouple 00107 { 00108 public: 00109 ~Thermocouple_Type_K(); 00110 static const thermocouple_poly_subrange inv_poly[2]; 00111 static const int inv_poly_size; 00112 float convert_inv(float temp); 00113 00114 static const thermocouple_poly_subrange poly[3]; 00115 static const int poly_size; 00116 float convert(float voltage); 00117 #ifdef TYPE_K_LUT 00118 static const int32_t lut[]; 00119 static const int16_t lut_offset; 00120 static const uint16_t lut_size; 00121 float lookup(float voltage); 00122 float lookup_inv(float temp); 00123 #endif 00124 }; 00125 00126 00127 class Thermocouple_Type_N : public Thermocouple 00128 { 00129 public: 00130 ~Thermocouple_Type_N(); 00131 static const thermocouple_poly_subrange inv_poly[2]; 00132 static const int inv_poly_size; 00133 float convert_inv(float temp); 00134 00135 static const thermocouple_poly_subrange poly[3]; 00136 static const int poly_size; 00137 float convert(float voltage); 00138 #ifdef TYPE_N_LUT 00139 static const int32_t lut[]; 00140 static const int16_t lut_offset; 00141 static const uint16_t lut_size; 00142 float lookup(float voltage); 00143 float lookup_inv(float temp); 00144 #endif 00145 }; 00146 00147 00148 class Thermocouple_Type_R : public Thermocouple 00149 { 00150 public: 00151 ~Thermocouple_Type_R(); 00152 static const thermocouple_poly_subrange inv_poly[3]; 00153 static const int inv_poly_size; 00154 float convert_inv(float temp); 00155 00156 static const thermocouple_poly_subrange poly[4]; 00157 static const int poly_size; 00158 float convert(float voltage); 00159 #ifdef TYPE_R_LUT 00160 static const int32_t lut[]; 00161 static const int16_t lut_offset; 00162 static const uint16_t lut_size; 00163 float lookup(float voltage); 00164 float lookup_inv(float temp); 00165 #endif 00166 }; 00167 00168 00169 class Thermocouple_Type_S : public Thermocouple 00170 { 00171 public: 00172 ~Thermocouple_Type_S(); 00173 static const thermocouple_poly_subrange inv_poly[3]; 00174 static const int inv_poly_size; 00175 float convert_inv(float temp); 00176 00177 static const thermocouple_poly_subrange poly[4]; 00178 static const int poly_size; 00179 float convert(float voltage); 00180 #ifdef TYPE_S_LUT 00181 static const int32_t lut[]; 00182 static const int16_t lut_offset; 00183 static const uint16_t lut_size; 00184 float lookup(float voltage); 00185 float lookup_inv(float temp); 00186 #endif 00187 }; 00188 00189 00190 class Thermocouple_Type_T : public Thermocouple 00191 { 00192 public: 00193 ~Thermocouple_Type_T(); 00194 static const thermocouple_poly_subrange inv_poly[2]; 00195 static const int inv_poly_size; 00196 float convert_inv(float temp); 00197 00198 static const thermocouple_poly_subrange poly[2]; 00199 static const int poly_size; 00200 float convert(float voltage); 00201 #ifdef TYPE_T_LUT 00202 static const int32_t lut[]; 00203 static const int16_t lut_offset; 00204 static const uint16_t lut_size; 00205 float lookup(float voltage); 00206 float lookup_inv(float temp); 00207 #endif 00208 }; 00209 00210 00211 00212 #endif
Generated on Tue Jul 12 2022 17:59:52 by 1.7.2