Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
CN0357 - Toxic gas measurement
CN0216 - Weight Scale