NTC 100k的温感度采集。

采用的是深圳市敏创电子的25℃下的温感阻值为100k:NTC 100K B值3950 R/

每个型号和每个公司的的相同类型阻值表都不一样

硬件接线图如下

使用的是12位ADC  4096采集。本文只写原理,和处理程序。采集程序只需要例程测试。

由硬件可以知道:通过串联分压测量R88的电压就是温感电压:当前温度的电压分度=中心值/(中心值+串联电阻)*3300mv*(4096/3300mv)。如下红色就是计算出来的

温感T_R表已经处理好的

 使用查表法,并且数据用表先处理好。1、可以减少ARM的运算量,提高实时效率。2、设计工程比较大,可以节省单片机内存。因为NTC本身是热敏电阻电阻误差大,所以温度误差控制在1摄氏度比较准确。

如下表就是不同温度下的温感阻值表。温度Temp、阻值中心值Rnor、阻值最大值Rmax、阻值最小值Rmin。

深圳市敏创电子有限公司
深圳中心值电压在3300用的数据
Temp.RmaxRnorRmin中心值Ω串联电阻欧姆中心值/(中心值+串联电阻)*3300mv*(4096/3300mv)去掉小数点
(deg. C)(k Ohms)(k Ohms)(k Ohms)
-301858.69271787.97971719.7849178797971000004073.2188754073 
-291744.9371679.60171616.551167960174071.75764072 
-281638.89121578.50611520.194157850614070.2147674070 
-271539.98471484.15841430.2129148415844068.5865744069 
-261447.69291396.06621346.1459139606624066.8690814067 
-251361.53151313.77541267.5675131377544065.0581954065 
-241281.0561236.86851194.0856123686854063.1497034063 
-231205.85611164.95981125.3381116495984061.1392334061 
-221135.55321097.69411060.9911109769414059.0222824059 
-211069.79921034.74321000.7358103474324056.7941934057 
-201008.2715975.8038944.287197580384054.450154054 
-19950.6732920.5962891.381792059624051.9852064052 
-18896.7294868.8615841.775486886154049.3942494049 
-17846.1864820.3603795.242882036034046.6720164047 
-16798.8093774.871751.57577487104043.813084044 
-15754.381732.1889710.578673218894040.8118944041 
-14712.7005692.1238672.074169212384037.662714038 
-13673.5814654.4999635.895465449994034.359664034 
-12636.8513619.154601.888361915404030.8967034031 
-11602.3502585.9346569.909558593464027.2676264027 
-10569.9298554.7016539.826255470164023.4661174023 
-9539.4526525.3245511.515352532454019.4856624019 
-8510.7906497.6821484.861549768214015.319594015 
-7483.8254471.6621459.758647166214010.9611314011 
-6458.4467447.1599436.107344715994006.403344006 
-5434.5519424.0781413.815342407814001.63914002 
-4412.046402.3264392.796840232643996.6612243997 
-3390.8401381.8204372.971638182043991.4623093991 
-2370.8519362.4818354.265336248183986.0348963986 
-1352.0045344.2375336.608334423753980.3713613980 
0334.2264327.0195319.93632701953974.4640063974 
1317.4508310.764304.187731076403968.3048723968 
2301.6157295.4121289.307229541213961.8861263962 
3286.6631280.9084275.241828090843955.1996663955 
4272.5389267.2014261.942326720143948.2373993948 
5259.1926254.2428249.362625424283940.9910463941 
6246.577241.9877237.460124198773933.4523843933 
7234.6482230.394226.194323039403925.6130523926 
8223.365219.4224215.527821942243917.4646873917 
9212.689209.0361205.425520903613908.9988623909 
10202.584199.2007195.854419920073900.2071563900 
11193.0167189.8841186.783618988413891.081253891 
12183.9552181.0559178.184418105593881.6124833882 
13175.3704172.6881170.029817268813871.7927313872 
14167.2345164.754162.294216475403861.6133773862 
15159.5216157.229154.953915722903851.0664063851 
16152.2075150.0898147.986715008983840.1435993840 
17145.2694143.3144141.371614331443828.8365763829 
18138.6861136.8825135.088913688253817.1376443817 
19132.4375130.7749129.120213077493805.039043805 
20126.5049124.9734123.448212497343792.5327983793 
21120.8705119.4612118.056411946123779.6117693780 
22115.518114.2223112.929811422233766.2685433766 
23110.4316109.2417108.053710924173752.4960083752 
24105.5969104.5053103.414710450533738.28733738 
251011009910000003723.6363643724 
2696.712795.713294.71469571323708.5365613709 
2792.630691.633390.63789163333692.9824853693 
2888.742687.749286.75838774923676.9684383677 
2985.038684.050583.06558405053660.489293660 
3081.50980.527479.54978052743643.5403033644 
3178.144677.170776.20127717073626.1173443626 
3274.93773.971773.01157397173608.2166163608 
3371.877970.922269.97217092223589.8348193590 
3468.959868.014467.07526801443570.9687243571 
3566.175565.241164.31346524113551.6166783552 
3663.518262.595461.67986259543531.7769233532 
3760.981460.070759.16776007073511.4475413511 
3858.559157.66156.7715766103490.6291073491 
3956.245655.360454.48375536043469.3208493469 
4054.035553.163552.30045316353447.5242193448 
4151.923551.065150.21585106513425.2404343425 
4249.904949.060248.2254906023402.4703473402 
4347.975247.144346.32324714433379.2180993379 
4446.129845.31344.50624531303355.486923355 
4544.364943.562142.76964356213331.280173331 
4642.676441.887841.10964188783306.604423307 
4741.060740.286239.52244028623281.4624133281 
4839.514338.753938.00443875393255.8620833256 
4938.033937.287636.55243728763229.8109783230 
5036.616335.884235.16313588423203.3179873203 
5135.258734.540533.83353454053176.3875123176 
5233.958233.253832.56083325383149.0311793149 
5332.712132.021431.34233202143121.2585593121 
5431.517830.840830.17543084083093.081353093 
5530.373129.709629.05762970963064.5113933065 
5629.275528.625327.98682862533035.5551623036 
5728.22327.58626.96072758603006.2325333006 
5827.213526.589525.97722658952976.5531642977 
5926.24525.633825.03432563382946.5295532947 
6025.315624.717124.13032471712916.1779532916 
6124.423723.837623.26332383762885.5122592886 
6223.567522.993722.43152299372854.5508752855 
6322.745422.183621.63362218362823.3021042823 
6421.95621.406120.86782140612791.7947662792 
6521.197720.659420.13282065942760.031262760 
6620.469219.942419.42721994242728.0401842728 
6719.769319.253718.74971925372695.8352352696 
6819.096618.59218.0991859202663.4314492663 
6918.449917.956217.4741795622630.8509452631 
7017.828217.345216.87351734522598.1137162598 
7117.230416.757816.29651675782565.2314022565 
7216.655416.19315.74191619302532.2234182532 
7316.102315.649915.20871564992499.1126832499 
7415.570215.127614.69611512762465.9199292466 
7515.058114.625114.20321462512432.6565012433 
7614.565214.141713.72911414172399.3506342399 
7714.090713.676413.27291367642366.0072652366 
7813.633913.228612.83411322862332.6565352333 
7913.19412.797612.41181279762299.3196482299 
8012.770312.382512.00531238252265.9988832266 
8112.362211.982811.61391198282232.7250762233 
8211.968911.597811.23721159782199.5105432200 
8311.5911.22710.87431122702166.3820612166 
8411.224710.869710.52481086972133.3460092133 
8510.872710.525410.18811052542100.4237872100 
8610.533210.19359.86371019352067.6245332068 
8710.20599.87369.5511987362034.9743182035 
889.89029.56529.2499956522002.4870282002 
899.58589.26788.9594926781970.1734921970 
909.2928.98098.6794898091938.041211938 
919.00858.70428.4094870421906.1175141906 
928.7358.43738.1489843731874.4165791874 
938.4718.17977.8977817971842.9375181843 
948.21617.93127.6554793121811.7133931812 
957.977.69127.4215769121780.7246091781 
967.73247.45967.1958745961750.0126921750 
977.50297.2366.978723601719.5785571720 
987.28127.02016.7677702011689.4336461689 
997.0676.81156.5647681151659.5725551660 
1006.86016.61016.3686661011630.03051630 
1016.66016.41556.1793641551600.7972951601 
1026.46686.22745.9964622741571.8741391572 
1036.27996.04575.8197604571543.2911751543 
1046.09935.87015.6489587011515.0458791515 
1055.92465.70035.4839570031487.1326541487 
1065.75575.53625.3245553621459.5766791460 
1075.59235.37755.1703537751432.368071432 
1085.43435.2245.0213522401405.5112981406 
1095.28145.07554.8772507551379.0088551379 
1105.13344.93194.7379493191352.8795671353 
1114.99034.7934.6031479301327.1228281327 
1124.85174.65864.4727465861301.7358821302 
1134.71754.52854.3466452851276.7137691277 
1144.58774.40264.2245440261252.0690431252 
1154.46194.28074.1064428071227.7932591228 
1164.34014.16273.9921416271203.8960931204 
1174.22224.04843.8815404841180.3654791180 
1184.10793.93783.7743393781157.2291751157 
1193.99723.83063.6706383061134.4509711134 
1203.893.72683.5702372681112.0561821112 
1213.78613.62633.4729362631090.0482741090 
1223.68543.52893.3787352891068.4072171068 
1233.58773.43453.2874343451047.1332761047 
1243.49313.3433.199334301026.2255861026 
1253.40143.25433.1133325431005.6821411006 
1263.31243.16833.030231683985.4997836985 
1273.22613.0852.949730850965.6981276966 
1283.14243.00422.871730042946.2483813946 
1293.06132.92582.79629258927.1439137927 
1302.98252.84982.722728498908.4017494908 
1312.90612.77612.651527761890.0138227890 
1322.8322.70452.582627045871.9455311872 
1332.76012.63522.515726352854.2626314854 
1342.69022.56782.450725678836.8774805837 
1352.62252.50252.387825025819.855229820 
1362.55672.43912.326724391803.1572702803 
1372.49282.37752.267423775786.7695415787 
1382.43082.31782.209823178770.7308773771 
1392.37052.25982.15422598754.9993311755 
1402.3122.20342.099722034739.5583526740 
1412.25522.14872.047121487724.4458419724 
1422.22.09561.99620956709.6446311710 
1432.14632.0441.946320440695.1364995695 
1442.09421.99391.898119939680.9306731681 
1452.04361.94521.851319452667.0076014667 
1461.99431.89781.805818978653.3467364653 
1471.94651.85181.761618518639.9848799640 
1481.91.80711.718718071626.9008986627 
1491.85471.76371.67717637614.1022977614 
1501.81081.72151.636417215601.5666937602 
1511.7681.68041.59716804589.2707784589 
1521.72641.64051.558716405577.2508054577 
1531.6861.60171.521516017565.4829206565 
1541.64671.5641.485315640553.9730197554 
1551.60841.52731.450115273542.696104543 
1561.57121.49151.415814915531.6263325532 
1571.53491.45681.382514568520.8306682521 
1581.49971.4231.350114230510.2519478510 
1591.46541.39011.318613901499.8946102500 
1601.4321.35821.28813582489.7947914490 
1611.39951.3271.258213270479.8615697480 
1621.36781.29671.229212967470.162366470 
1631.3371.26721.200912672460.6691281461 
1641.3071.23851.173412385451.3855052451 
1651.27781.21061.146712106442.3150946442 
1661.24941.18331.120711833433.3959386433 
1671.22171.15681.095311568424.6964004425 
1681.19471.1311.070611310416.1868655416 
1691.16841.10591.046611059407.8702672408 
1701.14281.08141.023210814399.716137400 
1711.11791.05761.000410576391.760382392 
1721.09351.03430.978210343383.938519384 
1731.06981.01170.956610117376.3200232376 
1741.04670.98960.93559896368.8397758369 
1751.02420.96810.9159681361.533684362 
1761.00230.94720.8959472354.4039754354 
1770.98090.92680.87569268347.4185306347 
1780.96010.90690.85669069340.5791196341 
1790.93970.88750.83818875333.8874856334 
1800.91990.86860.828686327.3453435327 
1810.90060.85010.80248501320.919586321 
1820.88170.83210.78538321314.6464305315 
1830.86330.81460.76868146308.5275091309 
1840.84540.79750.75237975302.5292892303 
1850.82790.78080.73647808296.6530128297 
1860.81080.76460.72097646290.9352507291 
1870.79410.74870.70587487285.3066138285 
1880.77790.73320.69117332279.8035255280 
1890.7620.71810.67677181274.4271466274 
1900.74650.70340.66277034269.1786161269 
1910.73140.6890.6496890264.0232014264 
1920.71660.67490.63566749258.9617139259 
1930.70220.66120.62266612254.0309909254 
1940.68820.64790.60996479249.2320927249 
1950.67440.63480.59756348244.4936247244 
1960.6610.62210.58536221239.8886849240 
1970.64790.60960.57356096235.3454984235 
1980.63510.59750.5625975230.9374853231 
1990.62270.58560.55075856226.592503227 
2000.61050.5740.53975740222.3476452222 
2010.59850.56270.5295627218.2036032218 
2020.58690.55170.51855517214.1610546214 
2030.57550.54090.50825409210.1837983210 
2040.56440.53030.49825303206.2722619206 
2050.55360.520.48845200202.4638783202 
2060.5430.50990.47895099198.7221953199 
2070.53260.50010.46965001195.0847706195 
2080.52250.49050.46044905191.5149898192 
2090.51260.48110.45154811188.0132429188 
2100.50290.47190.44284719184.5799139185 
2110.49340.4630.43434630181.2527956181 
2120.48420.45420.4264542177.9574908178 
2130.47510.44560.41794456174.7317148175 
2140.46630.43720.414372171.5758249172 
2150.45760.4290.40224290168.4901716168 
2160.44920.4210.39464210165.4750984165 
2170.44090.41320.38724132162.5309415163 
2180.43280.40550.384055159.6202009160 
2190.42490.3980.37293980156.7809194157 
2200.41710.39070.3663907154.0134158154 
2210.40960.38360.35923836151.3180015151 
2220.40210.37650.35253765148.6188985149 
2230.39490.36970.34613697146.030377146 
2240.38780.3630.33973630143.4765994143 
2250.38090.35640.33353564140.9577073141 
2260.37410.350.32743500138.5120773139 
2270.36740.34370.32153437136.1017044136 
2280.36090.33760.31573376133.7650518134 
2290.35450.33150.313315131.42564131 
2300.34830.32570.30453257129.1987178129 
2310.34220.31990.2993199126.9692923127 
2320.33620.31420.29373142124.7758624125 
2330.33040.30870.28853087122.6570955123 
2340.32460.30330.28343033120.5746508121 
2350.3190.2980.27842980118.5286463119 
2360.31350.29280.27352928116.5191979117 
2370.30810.28780.26872878114.5851202115 
2380.30290.28280.2642828112.6491617113 
2390.29770.27790.25942779110.7500949111 
2400.29270.27320.25492732108.9268388109 
2410.28770.26850.25052685107.1019136107 
2420.28290.26390.24622639105.3141983105 
2430.27810.25940.2422594103.5637952104 
2440.27340.2550.23792550101.8508045102 
2450.26890.25070.23382507100.1753246100 
2460.26440.24650.2298246598.5374518199 
2470.260.24240.2259242496.9372803297 
2480.25570.23840.2221238495.3749023395 
2490.25150.23440.2184234493.8113030694 
2500.24740.23050.2148230592.2856165492 
2510.24330.22670.2112226790.7979309191 
2520.23940.2230.2077223089.3483321989 
2530.23550.21930.2042219387.8976837988 
2540.23170.21570.2009215786.4852335186 
2550.22790.21220.1976212285.1110632485 
2560.22430.20880.1943208883.7752527284 
2570.22070.20540.1911205482.4385521482 

程序处理原理:

1、首先ADC是采集好的,只需要一阶滞后滤波处理ADC信号

2、把处理好的ADC信号,每秒进行去对比一次上表得红色的部分,也就是温感当前电压。进行逐个从上到下对比,对比次数++,对比次数初始值对应的是表的第一个。对于第一个大于当前值的就是此时的温度值。

如对比次数初始为-30,而当前采集到的电压分度为3728。也就是刚好大于于25度时的红色的值,也是理想下的25度温感电压分度。3728一直从对比直到第一个大于的数组元素(25度的电压分度值),次数从-30累加到25,然后返回的累加值就是当前温度,也就是25度。

程序:

   u16  ad[6];//ad[ ]为采集到的各个采集脚的ADC存储数组,温感的是采集脚5存到ad[5],全局变量

   void ADC_temper()

[

   static u16 sum[6]//一个临时数组,用到sum[5],存储滤波后的值

    sum[5]=0.9*ad[5]+0.1*sum[5];//一阶滞后滤波,这个也发布有一个文章;
    if(caclulate_Temperature(&sum[5])) gs.io.in.bit.Temperature = sum[5];

}

对比次数初始为0,只用到了0--256摄氏度。如下是温度处理子程序

u8 caclulate_Temperature(u16 * Temperature)//传递ADc的地址
{
  u16 i = 0 ,temp = 0 ;//,state_calculate;
  
  static TIMER_STRUCT time_Temperature; TimeMs(&time_Temperature);//定时器

//传进来的实参是分度值,精度不需要小数点
  const u16  T_data[256] = {//0到255温度,的分度值
                            3974,3968,3962,3955,3948,3941,3933,3926,3917,3909,3900,3891,3882,3872,3862,3851,3840,3829,3817,3805,3793,3780,3766,3752,3738,3724,3709,3693,3677,3660,
                            3644,3626,3608,3590,3571,3552,3532,3511,3491,3469,3448,3425,3402,3379,3355,3331,3307,3281,3256,3230,3203,3176,3149,3121,3093,3065,3036,3006,2977,2947,
                            2916,2886,2855,2823,2792,2760,2728,2696,2663,2631,2598,2565,2532,2499,2466,2433,2399,2366,2333,2299,2266,2233,2200,2166,2133,2100,2068,2035,2002,1970,
                            1938,1906,1874,1843,1812,1781,1750,1720,1689,1660,1630,1601,1572,1543,1515,1487,1460,1432,1406,1379,1353,1327,1302,1277,1252,1228,1204,1180,1157,1134,
                            1112,1090,1068,1047,1026,1006, 985, 966, 946, 927, 908, 890, 872, 854, 837, 820, 803, 787, 771, 755, 740, 724, 710, 695, 681, 667, 653, 640, 627, 614,
                             602, 589, 577, 565, 554, 543, 532, 521, 510, 500, 490, 480, 470, 461, 451, 442, 433, 425, 416, 408, 400, 392, 384, 376, 369, 362, 354, 347, 341, 334,
                             327, 321, 315, 309, 303, 297, 291, 285, 280, 274, 269, 264, 259, 254, 249, 244, 240, 235, 231, 227, 222, 218, 214, 210, 206, 202, 199, 195, 192, 188, 
                             185, 181, 178, 175, 172, 168, 165, 163, 160, 157, 154, 151, 149, 146, 143, 141, 139, 136, 134, 131, 129, 127, 125, 123, 121, 119, 117, 115, 113, 111,
                             109, 107, 105, 104, 102, 100,  99,  97,  95,  94,  92,  91,  89,  88,  86,  85};
  
  if(time_Temperature.Delay >= 1000) //时间为1000ms,就进行判断一次。
  {      
         time_Temperature.Delay = 0;
         for(i = 0;i < 256;i++)//计数初始值为0,对比当前的元素之后,满足当前值刚好大于元素值,返回计数值
         {  
                if(*Temperature > T_data[i])  //如果读取到的分度值大于扫到的数组元素i
                {  
                      if(i == 0){*Temperature = 0;break;}     //保证温度范围在0--255
                      if(i == 255){*Temperature = 255;break;}
                       temp=(T_data[i - 1] - T_data[i])/2;    //在元素[i] 元素[i-1] 之间差/2,判断当前分度在后半部分i,前半部分是i-1;
                      if(T_data[i]+temp > *Temperature)     
                      {*Temperature = i;break;}          
                      else {*Temperature = i-1;break;}
                }
            
         
         }return 1;
  }return 0;
}

温度测试第二种方法:快速计算法,模糊计算:因为要保证单片机速度,进行快速读温。

换了另一个公司的一个传感器温度范围-40到125度,也是100kB值的传感器。

  • 把0到4096的分度值。分成256份。每一个份都有一个温度值,这个温度值不是有规律的,每个份和相邻份的里面的温度值可能很大差值。
  • 如图1:图中的温度值不是实际的温度值,是为了让看明白。但是实际上的温感分成256份,大部分误差只在1-2度以内

图1

1、把以上图的每一份的分度中心值,做成一个256大小数组。记作数组a1【】

补充:也可以想成只用12位分度值的高8位进行模糊计算。

2、把每个份的温度做成一个表:

首先先把温度阻值表,做出一个分度值的表:表2

3、用分度值的表,打印成一个数组;记作数组f1

4、再用一个a1数组每一个去对比f1每一个值,得到温度数组,得到一个T表数组

5、把T放进单片机程序,把每次采集的ADC/16的值,作为数组序号。数组序号的值就是温度。

 表2

最小值中心值最大值
R_Min (Kohm)R_Cent (Kohm)R_Max (Kohm)中心值Ω分度值=中心值/(中心值+串联电阻)*4096
3,299.2753,452.753,613.00034527484084 
3,086.5073,227.9093,375.45132279094083 
2,888.9163,019.2473,155.14330192474082 
2,705.3202,825.4942,950.71128254944082 
2,534.6362,645.4862,760.90826454864081 
2,375.8742,478.1612,584.59424781614080 
2,228.1232,322.5422,420.72023225424078 
2,090.5492,177.7362,268.33321777364077 
1,962.3862,042.9222,126.55020429224076 
1,842.9301,917.3471,994.56919173474075 
1,731.5351,800.3191,871.64918003194073 
1,627.6051,691.2031,757.11016912034072 
1,530.5931,589.4141,650.33015894144070 
1,439.9961,494.4131,550.73214944134069 
1,355.3491,405.7071,457.79114057074067 
1,276.2251,322.8391,371.01913228394065 
1,202.0691,245.2221,289.79512452224063 
1,132.7041,172.6621,213.90811726624061 
1,067.7891,104.7981,142.97611047984059 
1,007.0121,041.2981,076.64410412984057 
950.083981.8541,014.5869818544055 
896.736926.182956.5009261824052 
846.723874.020902.1078740204050 
799.816825.125851.1518251254047 
755.802779.274803.3937792744044 
714.487736.257758.6147362574041 
675.688695.883716.6106958834038 
639.237657.974677.1936579744035 
604.978622.365640.1876223654031 
572.767588.902605.4325889024028 
542.468557.444572.7765574444024 
513.958527.858542.0815278584020 
487.119500.023513.2175000234016 
461.844473.824486.0654738244011 
438.034449.155460.5134491554007 
415.595425.920436.4584259204002 
394.410403.995413.7724039953997 
374.434383.332392.4033833323992 
355.589363.850372.2663638503986 
337.807345.475353.2833454753981 
321.020328.139335.3823281393975 
305.185311.793318.5133117933969 
290.224296.357302.5902963573962 
276.083281.775287.5572817753956 
262.713267.995273.3572679953949 
250.067254.969259.9402549693941 
238.082242.628247.2362426283934 
226.741230.956235.2272309563926 
216.007219.915223.8722199153918 
205.845209.467213.1322094673909 
196.220199.576202.9691995763901 
187.106190.215193.3571902153891 
178.469181.348184.2551813483882 
170.278172.943175.6321729433872 
162.511164.976167.4621649763862 
155.141157.420159.7181574203851 
148.144150.250152.3721502503840 
141.502143.448145.4061434483829 
135.195136.991138.7971369913817 
129.205130.862132.5261308623805 
123.514125.041126.5741250413793 
118.106119.511120.9221195113780 
112.964114.257115.5541142573766 
108.075109.264110.4541092643753 
103.425104.515105.6071045153738 
99.000100.000101.0001000003724 
94.70595.70496.704957043709 
90.62191.61792.614916173693 
86.73587.72688.719877263677 
83.03684.02185.009840213660 
79.51680.49381.475804933643 
76.16477.13378.107771333626 
72.97273.93274.897739323608 
69.93170.88171.837708813590 
67.03467.97368.918679733571 
64.27265.19966.133651993551 
61.63862.55463.476625543531 
59.12760.03060.941600303511 
56.73257.62158.519576213490 
54.44655.32256.207553223469 
52.26453.12753.999531273447 
50.18151.03051.889510303425 
48.19349.02849.873490283402 
46.29447.11547.945471153379 
44.47945.28546.102452853355 
42.74543.53744.340435373331 
41.08941.86742.656418673306 
39.50740.27041.045402703281 
37.99338.74339.503387433256 
36.54637.28138.027372813230 
35.16135.88236.614358823203 
33.83634.54335.261345433176 
32.56733.26033.965332603149 
31.35332.03232.723320323122 
30.19030.85631.533308563093 
29.07629.72930.392297293065 
28.01028.64929.299286493036 
26.98827.61328.251276133007 
26.00826.62027.245266202977 
25.06925.66926.280256692948 
24.16824.75525.355247552917 
23.30623.88124.468238812887 
22.47923.04223.616230422856 
21.68622.23722.799222372825 
20.92521.46422.014214642794 
20.19420.72121.261207212763 
19.49120.00720.535200072731 
18.81619.32119.838193212699 
18.16718.66119.167186612667 
17.54418.02818.523180282635 
16.94617.41917.903174192602 
16.37416.83617.310168362570 
15.82416.27616.740162762537 
15.29515.73816.192157382505 
14.78615.22015.664152202472 
14.29814.72115.156147212439 
13.82614.24014.666142402406 
13.37213.77714.194137772373 
12.93513.33213.739133322340 
12.51512.90313.301129032308 
12.11012.49012.880124902275 
11.72212.09312.475120932242 
11.34811.71112.084117112209 
10.98811.34311.708113432177 
10.64110.98811.346109882144 
10.30610.64610.996106462112 
9.98410.31610.659103162080 
9.6739.99910.33499992048 
9.3749.69210.02096922016 
9.0859.3969.71793961984 
8.8069.1119.42591111953 
8.5388.8369.14388361921 
8.2798.5708.87185701890 
8.0298.3148.60983141859 
7.7878.0668.35580661829 
7.5557.8288.11078281798 
7.3307.5987.87475981768 
7.1147.3767.64673761739 
6.9067.1627.42771621709 
6.7046.9557.21469551680 
6.5096.7557.00867551651 
6.3216.5616.81065611623 
6.1396.3746.61863741594 
5.9636.1946.43261941567 
5.7936.0196.25260191539 
5.6295.8506.07958501512 
5.4705.6865.91056861485 
5.3175.5285.74755281458 
5.1685.3755.59053751432 
5.0255.2275.43852271406 
4.8865.0845.29050841381 
4.7514.9455.14749451355 
4.6204.8115.00948111330 
4.4944.6814.87546811306 
4.3724.5554.74545551282 
4.2544.4334.61944331258 
4.1414.3164.49843161235 
4.0304.2024.38142021212 
3.9234.0924.26740921189 
3.8203.9854.15739851167 
3.7203.8814.05038811145 
3.6223.7813.94637811124 
3.5283.6843.84536841103 
3.4373.5893.74835891082 
3.3493.4983.65334981061 
3.2633.4093.56234091041 

在vc2019中使用如下程序;复制最后行的分度值输入,然后提成数组备用。

	for (i = 0; i < 166; i++)
	{
		scanf_s("%d ",&RT_Rarray[i]);
	}
	printf("\r\n ");
	for (i = 0 ,tatol = 1; i < (166); i++,tatol++)
	{
		printf("%d ,",RT_Rarray[i]);
		if (tatol % 10 == 0)printf("\r\n ");
	}

提取到的数组为

unsigned int RT_Rarray[166] = { //按顺序的-40-125摄氏度的分度值

 4084 ,4083 ,4082 ,4082 ,4081 ,4080 ,4078 ,4077 ,4076 ,4075 ,
 4073 ,4072 ,4070 ,4069 ,4067 ,4065 ,4063 ,4061 ,4059 ,4057 ,
 4055 ,4052 ,4050 ,4047 ,4044 ,4041 ,4038 ,4035 ,4031 ,4028 ,
 4024 ,4020 ,4016 ,4011 ,4007 ,4002 ,3997 ,3992 ,3986 ,3981 ,
 3975 ,3969 ,3962 ,3956 ,3949 ,3941 ,3934 ,3926 ,3918 ,3909 ,
 3901 ,3891 ,3882 ,3872 ,3862 ,3851 ,3840 ,3829 ,3817 ,3805 ,
 3793 ,3780 ,3766 ,3753 ,3738 ,3724 ,3709 ,3693 ,3677 ,3660 ,
 3643 ,3626 ,3608 ,3590 ,3571 ,3551 ,3531 ,3511 ,3490 ,3469 ,
 3447 ,3425 ,3402 ,3379 ,3355 ,3331 ,3306 ,3281 ,3256 ,3230 ,
 3203 ,3176 ,3149 ,3122 ,3093 ,3065 ,3036 ,3007 ,2977 ,2948 ,
 2917 ,2887 ,2856 ,2825 ,2794 ,2763 ,2731 ,2699 ,2667 ,2635 ,
 2602 ,2570 ,2537 ,2505 ,2472 ,2439 ,2406 ,2373 ,2340 ,2308 ,
 2275 ,2242 ,2209 ,2177 ,2144 ,2112 ,2080 ,2048 ,2016 ,1984 ,
 1953 ,1921 ,1890 ,1859 ,1829 ,1798 ,1768 ,1739 ,1709 ,1680 ,
 1651 ,1623 ,1594 ,1567 ,1539 ,1512 ,1485 ,1458 ,1432 ,1406 ,
 1381 ,1355 ,1330 ,1306 ,1282 ,1258 ,1235 ,1212 ,1189 ,1167 ,
 1145 ,1124 ,1103 ,1082 ,1061 ,1041 
 };

第四步:使用VC2019程序如下

#include"stdio.h"
unsigned int RT_Rarray[166] = { //按顺序的-40-125摄氏度的分度值

 4084 ,4083 ,4082 ,4082 ,4081 ,4080 ,4078 ,4077 ,4076 ,4075 ,
 4073 ,4072 ,4070 ,4069 ,4067 ,4065 ,4063 ,4061 ,4059 ,4057 ,
 4055 ,4052 ,4050 ,4047 ,4044 ,4041 ,4038 ,4035 ,4031 ,4028 ,
 4024 ,4020 ,4016 ,4011 ,4007 ,4002 ,3997 ,3992 ,3986 ,3981 ,
 3975 ,3969 ,3962 ,3956 ,3949 ,3941 ,3934 ,3926 ,3918 ,3909 ,
 3901 ,3891 ,3882 ,3872 ,3862 ,3851 ,3840 ,3829 ,3817 ,3805 ,
 3793 ,3780 ,3766 ,3753 ,3738 ,3724 ,3709 ,3693 ,3677 ,3660 ,
 3643 ,3626 ,3608 ,3590 ,3571 ,3551 ,3531 ,3511 ,3490 ,3469 ,
 3447 ,3425 ,3402 ,3379 ,3355 ,3331 ,3306 ,3281 ,3256 ,3230 ,
 3203 ,3176 ,3149 ,3122 ,3093 ,3065 ,3036 ,3007 ,2977 ,2948 ,
 2917 ,2887 ,2856 ,2825 ,2794 ,2763 ,2731 ,2699 ,2667 ,2635 ,
 2602 ,2570 ,2537 ,2505 ,2472 ,2439 ,2406 ,2373 ,2340 ,2308 ,
 2275 ,2242 ,2209 ,2177 ,2144 ,2112 ,2080 ,2048 ,2016 ,1984 ,
 1953 ,1921 ,1890 ,1859 ,1829 ,1798 ,1768 ,1739 ,1709 ,1680 ,
 1651 ,1623 ,1594 ,1567 ,1539 ,1512 ,1485 ,1458 ,1432 ,1406 ,
 1381 ,1355 ,1330 ,1306 ,1282 ,1258 ,1235 ,1212 ,1189 ,1167 ,
 1145 ,1124 ,1103 ,1082 ,1061 ,1041 
 };


int main()
{
	unsigned short buff[256] = { 0 };
	short buff_temper[256] = { 0 };
	int i = 0,j = 0 ,temper=8;
	int tatol = 1;


/************************ XLSX表格 输入得到数组表    ******************************************/
	//for (i = 0; i < 166; i++)
	//{
	//	scanf_s("%d ",&RT_Rarray[i]);
	//}
	//printf("\r\n ");
	//for (i = 0 ,tatol = 1; i < (166); i++,tatol++)
	//{
	//	printf("%d ,",RT_Rarray[i]);
	//	if (tatol % 10 == 0)printf("\r\n ");
	//}

/*****************************************************************/


/********************分度值,求温度***********************/

	for (i = 1; i < 256; i++)
	{
		temper += 16;
		buff[i] = temper;
	}
	/*     使用分度值,对比以上的的分度值             */
	for (i = 0; i < 256; i++)
	{
		for (j = 0; j < 161; j++)
		{
			if (buff[i] < RT_Rarray[160])buff_temper[i] = 125;

			if (buff[i] > RT_Rarray[j])
			{
				buff_temper[i] = j - 40;
				break;
			}
		}
	}

	for (i = 0, tatol = 1; i < 256; i++, tatol++)
	{
		printf("%d ,", buff_temper[i]);
		if (tatol % 10 == 0)printf("\r\n");
	}

/*********************************************************/


}

得到T表数组

T表数组

南京时恒的100KNTC 分度值除16的,分度值0--4096的顺序  对应温度表,最终表


125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,120 ,119 ,118 ,118 ,117 ,116 ,116 ,115 ,
114 ,114 ,113 ,112 ,112 ,111 ,110 ,110 ,109 ,109 ,
108 ,107 ,107 ,106 ,106 ,105 ,104 ,104 ,103 ,103 ,
102 ,101 ,101 ,100 ,100 ,99 ,99 ,98 ,98 ,97 ,
97 ,96 ,95 ,95 ,94 ,94 ,93 ,93 ,92 ,92 ,
91 ,91 ,90 ,90 ,89 ,89 ,88 ,88 ,87 ,87 ,
86 ,86 ,85 ,85 ,84 ,84 ,83 ,83 ,82 ,82 ,
81 ,81 ,80 ,80 ,79 ,79 ,78 ,78 ,77 ,77 ,
76 ,76 ,75 ,75 ,75 ,74 ,74 ,73 ,73 ,72 ,
72 ,71 ,71 ,70 ,70 ,69 ,69 ,68 ,68 ,67 ,
67 ,66 ,66 ,65 ,65 ,64 ,64 ,63 ,63 ,62 ,
61 ,61 ,60 ,60 ,59 ,59 ,58 ,58 ,57 ,57 ,
56 ,56 ,55 ,54 ,54 ,53 ,53 ,52 ,52 ,51 ,
50 ,50 ,49 ,49 ,48 ,47 ,47 ,46 ,45 ,45 ,
44 ,43 ,43 ,42 ,41 ,40 ,40 ,39 ,38 ,37 ,
37 ,36 ,35 ,34 ,33 ,33 ,32 ,31 ,30 ,29 ,
28 ,27 ,26 ,25 ,24 ,22 ,21 ,20 ,19 ,17 ,
16 ,14 ,13 ,11 ,9 ,7 ,5 ,3 ,0 ,-2 ,
-6 ,-9 ,-14 ,-20 ,-28 ,-40 

第5步

这个放单片机的程序,临时手打的。但是原理就是这样的。

singned char caclualate(u16 * wendu_adc)
{
   singned char temper=0; 
   singned char f1[256]={
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,125 ,
125 ,125 ,120 ,119 ,118 ,118 ,117 ,116 ,116 ,115 ,
114 ,114 ,113 ,112 ,112 ,111 ,110 ,110 ,109 ,109 ,
108 ,107 ,107 ,106 ,106 ,105 ,104 ,104 ,103 ,103 ,
102 ,101 ,101 ,100 ,100 ,99 ,99 ,98 ,98 ,97 ,
97 ,96 ,95 ,95 ,94 ,94 ,93 ,93 ,92 ,92 ,
91 ,91 ,90 ,90 ,89 ,89 ,88 ,88 ,87 ,87 ,
86 ,86 ,85 ,85 ,84 ,84 ,83 ,83 ,82 ,82 ,
81 ,81 ,80 ,80 ,79 ,79 ,78 ,78 ,77 ,77 ,
76 ,76 ,75 ,75 ,75 ,74 ,74 ,73 ,73 ,72 ,
72 ,71 ,71 ,70 ,70 ,69 ,69 ,68 ,68 ,67 ,
67 ,66 ,66 ,65 ,65 ,64 ,64 ,63 ,63 ,62 ,
61 ,61 ,60 ,60 ,59 ,59 ,58 ,58 ,57 ,57 ,
56 ,56 ,55 ,54 ,54 ,53 ,53 ,52 ,52 ,51 ,
50 ,50 ,49 ,49 ,48 ,47 ,47 ,46 ,45 ,45 ,
44 ,43 ,43 ,42 ,41 ,40 ,40 ,39 ,38 ,37 ,
37 ,36 ,35 ,34 ,33 ,33 ,32 ,31 ,30 ,29 ,
28 ,27 ,26 ,25 ,24 ,22 ,21 ,20 ,19 ,17 ,
16 ,14 ,13 ,11 ,9 ,7 ,5 ,3 ,0 ,-2 ,
-6 ,-9 ,-14 ,-20 ,-28 ,-40 
                           }


  temper= f1[*wendu_adc/16];
 return temper;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值