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.
Dependencies: CANBuffer mbed SystemManagement mbed-rtos
TemperatureRead.h
00001 /* 00002 Test Code 00003 #include "mbed.h" 00004 #include "TemperatureRead.h" 00005 00006 AnalogIn Vin(p15); 00007 int main() 00008 { 00009 float resistance,temperature,Vadc=0; 00010 while(1) 00011 { 00012 Vadc=Vin.read()*VDD; 00013 //printf("Vadc:%f\n\r",Vadc); 00014 while(Vadc>0) 00015 { 00016 Vadc=Vin.read()*VDD; 00017 printf("Vadc:%f\n\r",Vadc); 00018 resistance=((float)R10K*Vadc)/((float)VDD + Vadc); 00019 temperature=ReadTemp(TR_USP10982_Map, resistance, TABLE_SIZE_USP10982); 00020 printf("Resistance:%f \n\r",resistance); 00021 printf("Temperature:%f \n\r",temperature); 00022 wait(0.5); 00023 } 00024 } 00025 } 00026 */ 00027 #ifndef _TEMPERATURE_READ_ 00028 #define _TEMPERATURE_READ_ 00029 00030 #define TABLE_SIZE_NXFT15XH103FA 34 00031 #define TABLE_SIZE_NTCLP00E3103H 26 00032 #define TABLE_SIZE_USP10982 121 00033 #define R10K 10 //Consider Resistance in Kohms 00034 #define VDD 3.33 00035 typedef struct 00036 { 00037 float x; 00038 float y; 00039 }Temp_Resistance; 00040 00041 Temp_Resistance TR_NXFT15XH103FA_Map[TABLE_SIZE_NXFT15XH103FA] ={ 00042 { .x= 197.388 , .y= -40 }, 00043 { .x= 149.395 , .y= -35 }, 00044 { .x= 114.345 , .y= -30 }, 00045 { .x= 88.381 , .y= -25 }, 00046 { .x= 68.915 , .y= -20 }, 00047 { .x= 54.166 , .y= -15 }, 00048 { .x= 42.889 , .y= -10 }, 00049 { .x= 34.196 , .y= -5 }, 00050 { .x= 27.445 , .y= 0 }, 00051 { .x= 22.165 , .y= 5 }, 00052 { .x= 18.01 , .y= 10 }, 00053 { .x= 14.72 , .y= 15 }, 00054 { .x= 12.099 , .y= 20 }, 00055 { .x= 10 , .y= 25 }, 00056 { .x= 8.309 , .y= 30 }, 00057 { .x= 6.939 , .y= 35 }, 00058 { .x= 5.824 , .y= 40 }, 00059 { .x= 4.911 , .y= 45 }, 00060 { .x= 4.16 , .y= 50 }, 00061 { .x= 3.539 , .y= 55 }, 00062 { .x= 3.024 , .y= 60 }, 00063 { .x= 2.593 , .y= 65 }, 00064 { .x= 2.233 , .y= 70 }, 00065 { .x= 1.929 , .y= 75 }, 00066 { .x= 1.673 , .y= 80 }, 00067 { .x= 1.455 , .y= 85 }, 00068 { .x= 1.27 , .y= 90 }, 00069 { .x= 1.112 , .y= 95 }, 00070 { .x= 0.976 , .y= 100 }, 00071 { .x= 0.86 , .y= 105 }, 00072 { .x= 0.759 , .y= 110 }, 00073 { .x= 0.673 , .y= 115 }, 00074 { .x= 0.598 , .y= 120 }, 00075 { .x= 0.532 , .y= 125 }, 00076 }; 00077 00078 Temp_Resistance TR_NTCLP00E3103H_Map[TABLE_SIZE_NTCLP00E3103H] ={ 00079 { .x= 332.094 , .y= -40 }, 00080 { .x= 239.9 , .y= -35 }, 00081 { .x= 175.2 , .y= -30 }, 00082 { .x= 129.287 , .y= -25 }, 00083 { .x= 96.358 , .y= -20 }, 00084 { .x= 72.5 , .y= -15 }, 00085 { .x= 55.046 , .y= -10 }, 00086 { .x= 42.157 , .y= -5 }, 00087 { .x= 32.554 , .y= 0 }, 00088 { .x= 25.339 , .y= 5 }, 00089 { .x= 19.872 , .y= 10 }, 00090 { .x= 15.698 , .y= 15 }, 00091 { .x= 12.488 , .y= 20 }, 00092 { .x= 10 , .y= 25 }, 00093 { .x= 8.059 , .y= 30 }, 00094 { .x= 6.535 , .y= 35 }, 00095 { .x= 5.33 , .y= 40 }, 00096 { .x= 4.372 , .y= 45 }, 00097 { .x= 3.605 , .y= 50 }, 00098 { .x= 2.989 , .y= 55 }, 00099 { .x= 2.49 , .y= 60 }, 00100 { .x= 2.084 , .y= 65 }, 00101 { .x= 1.753 , .y= 70 }, 00102 { .x= 1.481 , .y= 75 }, 00103 { .x= 1.256 , .y= 80 }, 00104 { .x= 1.07 , .y= 85 }, 00105 00106 }; 00107 00108 Temp_Resistance TR_USP10982_Map[TABLE_SIZE_USP10982] ={ 00109 { .x= 336.479 , .y= -40 }, 00110 { .x= 314.904 , .y= -39 }, 00111 { .x= 294.848 , .y= -38 }, 00112 { .x= 276.194 , .y= -37 }, 00113 { .x= 258.838 , .y= -36 }, 00114 { .x= 242.681 , .y= -35 }, 00115 { .x= 227.632 , .y= -34 }, 00116 { .x= 213.61 , .y= -33 }, 00117 { .x= 200.539 , .y= -32 }, 00118 { .x= 188.349 , .y= -31 }, 00119 { .x= 176.974 , .y= -30 }, 00120 { .x= 166.356 , .y= -29 }, 00121 { .x= 156.441 , .y= -28 }, 00122 { .x= 147.177 , .y= -27 }, 00123 { .x= 138.518 , .y= -26 }, 00124 { .x= 130.421 , .y= -25 }, 00125 { .x= 122.847 , .y= -24 }, 00126 { .x= 115.759 , .y= -23 }, 00127 { .x= 109.122 , .y= -22 }, 00128 { .x= 102.906 , .y= -21 }, 00129 { .x= 97.081 , .y= -20 }, 00130 { .x= 91.621 , .y= -19 }, 00131 { .x= 86.501 , .y= -18 }, 00132 { .x= 81.698 , .y= -17 }, 00133 { .x= 77.19 , .y= -16 }, 00134 { .x= 72.957 , .y= -15 }, 00135 { .x= 68.982 , .y= -14 }, 00136 { .x= 65.246 , .y= -13 }, 00137 { .x= 61.736 , .y= -12 }, 00138 { .x= 58.434 , .y= -11 }, 00139 { .x= 55.329 , .y= -10 }, 00140 { .x= 52.407 , .y= -9 }, 00141 { .x= 49.656 , .y= -8 }, 00142 { .x= 47.066 , .y= -7 }, 00143 { .x= 44.626 , .y= -6 }, 00144 { .x= 42.327 , .y= -5 }, 00145 { .x= 40.159 , .y= -4 }, 00146 { .x= 38.115 , .y= -3 }, 00147 { .x= 36.187 , .y= -2 }, 00148 { .x= 34.368 , .y= -1 }, 00149 { .x= 32.65 , .y= 0 }, 00150 { .x= 31.029 , .y= 1 }, 00151 { .x= 29.498 , .y= 2 }, 00152 { .x= 28.052 , .y= 3 }, 00153 { .x= 26.685 , .y= 4 }, 00154 { .x= 25.392 , .y= 5 }, 00155 { .x= 24.17 , .y= 6 }, 00156 { .x= 23.013 , .y= 7 }, 00157 { .x= 21.918 , .y= 8 }, 00158 { .x= 20.882 , .y= 9 }, 00159 { .x= 19.901 , .y= 10 }, 00160 { .x= 18.971 , .y= 11 }, 00161 { .x= 18.09 , .y= 12 }, 00162 { .x= 17.255 , .y= 13 }, 00163 { .x= 16.463 , .y= 14 }, 00164 { .x= 15.712 , .y= 15 }, 00165 { .x= 14.999 , .y= 16 }, 00166 { .x= 14.323 , .y= 17 }, 00167 { .x= 13.681 , .y= 18 }, 00168 { .x= 13.072 , .y= 19 }, 00169 { .x= 12.493 , .y= 20 }, 00170 { .x= 11.942 , .y= 21 }, 00171 { .x= 11.419 , .y= 22 }, 00172 { .x= 10.922 , .y= 23 }, 00173 { .x= 10.45 , .y= 24 }, 00174 { .x= 10 , .y= 25 }, 00175 { .x= 9.572 , .y= 26 }, 00176 { .x= 9.165 , .y= 27 }, 00177 { .x= 8.777 , .y= 28 }, 00178 { .x= 8.408 , .y= 29 }, 00179 { .x= 8.057 , .y= 30 }, 00180 { .x= 7.722 , .y= 31 }, 00181 { .x= 7.402 , .y= 32 }, 00182 { .x= 7.098 , .y= 33 }, 00183 { .x= 6.808 , .y= 34 }, 00184 { .x= 6.531 , .y= 35 }, 00185 { .x= 6.267 , .y= 36 }, 00186 { .x= 6.015 , .y= 37 }, 00187 { .x= 5.775 , .y= 38 }, 00188 { .x= 5.545 , .y= 39 }, 00189 { .x= 5.326 , .y= 40 }, 00190 { .x= 5.117 , .y= 41 }, 00191 { .x= 4.917 , .y= 42 }, 00192 { .x= 4.725 , .y= 43 }, 00193 { .x= 4.543 , .y= 44 }, 00194 { .x= 4.368 , .y= 45 }, 00195 { .x= 4.201 , .y= 46 }, 00196 { .x= 4.041 , .y= 47 }, 00197 { .x= 3.888 , .y= 48 }, 00198 { .x= 3.742 , .y= 49 }, 00199 { .x= 3.602 , .y= 50 }, 00200 { .x= 3.468 , .y= 51 }, 00201 { .x= 3.34 , .y= 52 }, 00202 { .x= 3.217 , .y= 53 }, 00203 { .x= 3.099 , .y= 54 }, 00204 { .x= 2.986 , .y= 55 }, 00205 { .x= 2.878 , .y= 56 }, 00206 { .x= 2.774 , .y= 57 }, 00207 { .x= 2.675 , .y= 58 }, 00208 { .x= 2.579 , .y= 59 }, 00209 { .x= 2.488 , .y= 60 }, 00210 { .x= 2.4 , .y= 61 }, 00211 { .x= 2.316 , .y= 62 }, 00212 { .x= 2.235 , .y= 63 }, 00213 { .x= 2.157 , .y= 64 }, 00214 { .x= 2.083 , .y= 65 }, 00215 { .x= 2.011 , .y= 66 }, 00216 { .x= 1.942 , .y= 67 }, 00217 { .x= 1.876 , .y= 68 }, 00218 { .x= 1.813 , .y= 69 }, 00219 { .x= 1.752 , .y= 70 }, 00220 { .x= 1.693 , .y= 71 }, 00221 { .x= 1.637 , .y= 72 }, 00222 { .x= 1.582 , .y= 73 }, 00223 { .x= 1.53 , .y= 74 }, 00224 { .x= 1.48 , .y= 75 }, 00225 { .x= 1.432 , .y= 76 }, 00226 { .x= 1.385 , .y= 77 }, 00227 { .x= 1.34 , .y= 78 }, 00228 { .x= 1.297 , .y= 79 }, 00229 { .x= 1.255 , .y= 80 }, 00230 }; 00231 00232 float ReadTemp(const Temp_Resistance *table, float value, size_t SIZE) 00233 { 00234 //Search using Binary Search. Logarithmic passes 00235 int result=SIZE, slope=0; 00236 size_t firstPos=0; 00237 size_t lastPos=SIZE; 00238 size_t middlePos=0; 00239 size_t temp_mid=1; 00240 //printf("Value:%f\n\r",value); 00241 while(temp_mid!=middlePos) 00242 { 00243 temp_mid=middlePos; 00244 middlePos = firstPos + (lastPos-firstPos)/2; 00245 if(table[middlePos].x == value) 00246 { 00247 lastPos = middlePos; 00248 result = middlePos; 00249 } 00250 00251 if(table[middlePos].x < value) 00252 { 00253 lastPos = middlePos; 00254 result = middlePos; 00255 } 00256 00257 else if(table[middlePos].x > value) 00258 { 00259 firstPos = middlePos; 00260 } 00261 } 00262 //printf("Result:%d\n\r",result); 00263 if(result == 0) 00264 return table[result].y; 00265 else if(result == SIZE) 00266 return table[result - 1].y; 00267 00268 slope = (table[result].y - table[result-1].y)/(table[result].x - table[result-1].x); 00269 return (slope*(value - table[result].x) + table[result].y); 00270 } 00271 #endif /*_TEMPERATURE_READ_*/
Generated on Sat Aug 13 2022 03:42:38 by
1.7.2