找回密码
 立即注册
查看: 2185|回复: 19

求NTC热敏电阻与温度对照表

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-02 07:30:57

71

主题

84

回帖

216

积分

中级会员

积分
216
发表于 2024-2-3 11:43:15 | 显示全部楼层 |阅读模式
哪位大师有不同阻值负温度系数NTC热敏电阻与温度的对照表可分享?另外请教一下单片机怎样实现对NTC的温度转换?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:522
  • 最近打卡:2025-05-02 00:29:54

10

主题

1159

回帖

5121

积分

论坛元老

积分
5121
发表于 2024-2-3 11:53:57 | 显示全部楼层
给你来一个。

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC 1T Series MCU Demo Programme -------------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
  6. /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* --- Web: www.STCMCUDATA.com  ---------------------------------------*/
  9. /* --- QQ:  800003751 -------------------------------------------------*/
  10. /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序            */
  11. /*---------------------------------------------------------------------*/
  12. /*************  功能说明    **************
  13. 本例程基于STC32G为主控芯片的实验箱进行编写测试。
  14. 使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。
  15. edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。
  16. 读ADC和测温度.
  17. 用STC的MCU的IO方式驱动8位数码管。
  18. 使用Timer0的16位自动重装来产生1ms节拍,程序运行于这个节拍下,用户修改MCU主时钟频率时,自动定时于1ms.
  19. 左边4位数码管显示ADC2接的电压基准TL431的读数, 右边4位数码管显示温度值, 分辨率0.1度.
  20. NTC使用1%精度的MF52 10K@25度.
  21. 测温度时, 使用12位的ADC值, 使用对分查找表格来计算, 小数点后一位数是用线性插补来计算的.
  22. 下载时, 选择时钟 24MHZ (用户可自行修改频率).
  23. ******************************************/
  24. #include "..\..\comm\STC32G.h"
  25. #include "stdio.h"
  26. #include "intrins.h"
  27. typedef         unsigned char        u8;
  28. typedef         unsigned int        u16;
  29. typedef         unsigned long        u32;
  30. #define MAIN_Fosc        24000000UL
  31. /****************************** 用户定义宏 ***********************************/
  32. #define Timer0_Reload   (65536UL -(MAIN_Fosc / 1000))       //Timer 0 中断频率, 1000次/秒
  33. /*****************************************************************************/
  34. #define DIS_DOT     0x20
  35. #define DIS_BLACK   0x10
  36. #define DIS_        0x11
  37. /*************  本地常量声明    **************/
  38. u8 code t_display[]={                       //标准字库
  39. //   0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
  40.     0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
  41. //black  -     H    J    K    L    N    o   P    U     t    G    Q    r   M    y
  42.     0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,
  43.     0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46};    //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1
  44. u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};      //位码
  45. /*************  本地变量声明    **************/
  46. u8  LED8[8];        //显示缓冲
  47. u8  display_index;  //显示位索引
  48. bit B_1ms;          //1ms标志
  49. u16 msecond;
  50. /*************  本地函数声明    **************/
  51. u16 get_temperature(u16 adc);
  52. u16 Get_ADC12bitResult(u8 channel); //channel = 0~15
  53. /**********************************************/
  54. void main(void)
  55. {
  56.     u8  i;
  57.     u16 j;
  58.    
  59.     WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
  60.     EAXFR = 1; //扩展寄存器(XFR)访问使能
  61.     CKCON = 0; //提高访问XRAM速度
  62.     P0M1 = 0x30;   P0M0 = 0x30;   //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
  63.     P1M1 = 0x38;   P1M0 = 0x30;   //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.3 为 ADC 高阻输入口
  64.     P2M1 = 0x3c;   P2M0 = 0x3c;   //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
  65.     P3M1 = 0x50;   P3M0 = 0x50;   //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
  66.     P4M1 = 0x3c;   P4M0 = 0x3c;   //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
  67.     P5M1 = 0x0c;   P5M0 = 0x0c;   //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
  68.     P6M1 = 0xff;   P6M0 = 0xff;   //设置为漏极开路(实验箱加了上拉电阻到3.3V)
  69.     P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口
  70.     display_index = 0;
  71.     ADCTIM = 0x3f;                //设置 ADC 内部时序,ADC采样时间建议设最大值
  72.     ADCCFG = 0x2f;                //设置 ADC 时钟为系统时钟/2/16/16
  73.     ADC_CONTR = 0x80; //使能 ADC 模块
  74.     AUXR = 0x80;    //Timer0 set as 1T, 16 bits timer auto-reload,
  75.     TH0 = (u8)(Timer0_Reload / 256);
  76.     TL0 = (u8)(Timer0_Reload % 256);
  77.     ET0 = 1;    //Timer0 interrupt enable
  78.     TR0 = 1;    //Tiner0 run
  79.     EA = 1;     //打开总中断
  80.    
  81.     for(i=0; i<8; i++)  LED8[i] = 0x10; //上电消隐
  82.    
  83.     while(1)
  84.     {
  85.         if(B_1ms)   //1ms到
  86.         {
  87.             B_1ms = 0;
  88.             if(++msecond >= 300)    //300ms到
  89.             {
  90.                 msecond = 0;
  91. //                j = Get_ADC12bitResult(2);  //参数0~15,查询方式做一次ADC, 返回值就是结果, == 4096 为错误
  92. //               
  93. //                if(j < 4096)
  94. //                {
  95. //                    LED8[0] = j / 1000;     //显示ADC值
  96. //                    LED8[1] = (j % 1000) / 100;
  97. //                    LED8[2] = (j % 100) / 10;
  98. //                    LED8[3] = j % 10;
  99. //                    if(LED8[0] == 0)    LED8[0] = DIS_BLACK;
  100. //                }
  101. //                else    //错误
  102. //                {
  103. //                    for(i=0; i<4; i++)  LED8[i] = DIS_;
  104. //                }
  105.                
  106.                 j = Get_ADC12bitResult(3);  //参数0~15,查询方式做一次ADC, 返回值就是结果, == 4096 为错误
  107.                 if(j < 4096)
  108.                 {
  109.                 /*
  110.                     LED8[0] = j / 1000;     //显示ADC值
  111.                     LED8[1] = (j % 1000) / 100;
  112.                     LED8[2] = (j % 100) / 10;
  113.                     LED8[3] = j % 10;
  114.                     if(LED8[0] == 0)    LED8[0] = DIS_BLACK;
  115.                 */
  116.                     j = get_temperature(j); //计算温度值
  117.                     if(j >= 400)    F0 = 0, j -= 400;       //温度 >= 0度
  118.                     else            F0 = 1, j  = 400 - j;   //温度 <  0度
  119.                     LED8[4] = j / 1000;     //显示温度值
  120.                     LED8[5] = (j % 1000) / 100;
  121.                     LED8[6] = (j % 100) / 10 + DIS_DOT;
  122.                     LED8[7] = j % 10;
  123.                     if(LED8[4] == 0)    LED8[4] = DIS_BLACK;
  124.                     if(F0)  LED8[4] = DIS_;     //显示-
  125.                 }
  126.                 else    //错误
  127.                 {
  128.                     for(i=0; i<8; i++)  LED8[i] = DIS_;
  129.                 }
  130.             }
  131.         }
  132.     }
  133. }
  134. /**********************************************/
  135. //========================================================================
  136. // 函数: u16 Get_ADC12bitResult(u8 channel)
  137. // 描述: 查询法读一次ADC结果.
  138. // 参数: channel: 选择要转换的ADC.
  139. // 返回: 12位ADC结果.
  140. // 版本: V1.0, 2012-10-22
  141. //========================================================================
  142. u16 Get_ADC12bitResult(u8 channel)  //channel = 0~15
  143. {
  144.     ADC_RES = 0;
  145.     ADC_RESL = 0;
  146.         ADC_CONTR = (ADC_CONTR & 0xf0) | channel; //设置ADC转换通道
  147.         ADC_START = 1;//启动ADC转换
  148.     _nop_();
  149.     _nop_();
  150.     _nop_();
  151.     _nop_();
  152.     while(ADC_FLAG == 0);   //wait for ADC finish
  153.     ADC_FLAG = 0;     //清除ADC结束标志
  154.     return  (((u16)ADC_RES << 8) | ADC_RESL);
  155. }
  156. //  MF52E 10K at 25, B = 3950, ADC = 12 bits
  157. u16 code temp_table[]={
  158.         140,    //;-40  0
  159.         149,    //;-39  1
  160.         159,    //;-38  2
  161.         168,    //;-37  3
  162.         178,    //;-36  4
  163.         188,    //;-35  5
  164.         199,    //;-34  6
  165.         210,    //;-33  7
  166.         222,    //;-32  8
  167.         233,    //;-31  9
  168.         246,    //;-30  10
  169.         259,    //;-29  11
  170.         272,    //;-28  12
  171.         286,    //;-27  13
  172.         301,    //;-26  14
  173.         317,    //;-25  15
  174.         333,    //;-24  16
  175.         349,    //;-23  17
  176.         367,    //;-22  18
  177.         385,    //;-21  19
  178.         403,    //;-20  20
  179.         423,    //;-19  21
  180.         443,    //;-18  22
  181.         464,    //;-17  23
  182.         486,    //;-16  24
  183.         509,    //;-15  25
  184.         533,    //;-14  26
  185.         558,    //;-13  27
  186.         583,    //;-12  28
  187.         610,    //;-11  29
  188.         638,    //;-10  30
  189.         667,    //;-9   31
  190.         696,    //;-8   32
  191.         727,    //;-7   33
  192.         758,    //;-6   34
  193.         791,    //;-5   35
  194.         824,    //;-4   36
  195.         858,    //;-3   37
  196.         893,    //;-2   38
  197.         929,    //;-1   39
  198.         965,    //;0    40
  199.         1003,   //;1    41
  200.         1041,   //;2    42
  201.         1080,   //;3    43
  202.         1119,   //;4    44
  203.         1160,   //;5    45
  204.         1201,   //;6    46
  205.         1243,   //;7    47
  206.         1285,   //;8    48
  207.         1328,   //;9    49
  208.         1371,   //;10   50
  209.         1414,   //;11   51
  210.         1459,   //;12   52
  211.         1503,   //;13   53
  212.         1548,   //;14   54
  213.         1593,   //;15   55
  214.         1638,   //;16   56
  215.         1684,   //;17   57
  216.         1730,   //;18   58
  217.         1775,   //;19   59
  218.         1821,   //;20   60
  219.         1867,   //;21   61
  220.         1912,   //;22   62
  221.         1958,   //;23   63
  222.         2003,   //;24   64
  223.         2048,   //;25   65
  224.         2093,   //;26   66
  225.         2137,   //;27   67
  226.         2182,   //;28   68
  227.         2225,   //;29   69
  228.         2269,   //;30   70
  229.         2312,   //;31   71
  230.         2354,   //;32   72
  231.         2397,   //;33   73
  232.         2438,   //;34   74
  233.         2479,   //;35   75
  234.         2519,   //;36   76
  235.         2559,   //;37   77
  236.         2598,   //;38   78
  237.         2637,   //;39   79
  238.         2675,   //;40   80
  239.         2712,   //;41   81
  240.         2748,   //;42   82
  241.         2784,   //;43   83
  242.         2819,   //;44   84
  243.         2853,   //;45   85
  244.         2887,   //;46   86
  245.         2920,   //;47   87
  246.         2952,   //;48   88
  247.         2984,   //;49   89
  248.         3014,   //;50   90
  249.         3044,   //;51   91
  250.         3073,   //;52   92
  251.         3102,   //;53   93
  252.         3130,   //;54   94
  253.         3157,   //;55   95
  254.         3183,   //;56   96
  255.         3209,   //;57   97
  256.         3234,   //;58   98
  257.         3259,   //;59   99
  258.         3283,   //;60   100
  259.         3306,   //;61   101
  260.         3328,   //;62   102
  261.         3351,   //;63   103
  262.         3372,   //;64   104
  263.         3393,   //;65   105
  264.         3413,   //;66   106
  265.         3432,   //;67   107
  266.         3452,   //;68   108
  267.         3470,   //;69   109
  268.         3488,   //;70   110
  269.         3506,   //;71   111
  270.         3523,   //;72   112
  271.         3539,   //;73   113
  272.         3555,   //;74   114
  273.         3571,   //;75   115
  274.         3586,   //;76   116
  275.         3601,   //;77   117
  276.         3615,   //;78   118
  277.         3628,   //;79   119
  278.         3642,   //;80   120
  279.         3655,   //;81   121
  280.         3667,   //;82   122
  281.         3679,   //;83   123
  282.         3691,   //;84   124
  283.         3702,   //;85   125
  284.         3714,   //;86   126
  285.         3724,   //;87   127
  286.         3735,   //;88   128
  287.         3745,   //;89   129
  288.         3754,   //;90   130
  289.         3764,   //;91   131
  290.         3773,   //;92   132
  291.         3782,   //;93   133
  292.         3791,   //;94   134
  293.         3799,   //;95   135
  294.         3807,   //;96   136
  295.         3815,   //;97   137
  296.         3822,   //;98   138
  297.         3830,   //;99   139
  298.         3837,   //;100  140
  299.         3844,   //;101  141
  300.         3850,   //;102  142
  301.         3857,   //;103  143
  302.         3863,   //;104  144
  303.         3869,   //;105  145
  304.         3875,   //;106  146
  305.         3881,   //;107  147
  306.         3887,   //;108  148
  307.         3892,   //;109  149
  308.         3897,   //;110  150
  309.         3902,   //;111  151
  310.         3907,   //;112  152
  311.         3912,   //;113  153
  312.         3917,   //;114  154
  313.         3921,   //;115  155
  314.         3926,   //;116  156
  315.         3930,   //;117  157
  316.         3934,   //;118  158
  317.         3938,   //;119  159
  318.         3942    //;120  160
  319. };
  320. /********************  计算温度 ***********************************************/
  321. // 计算结果: 0对应-40.0度, 400对应0度, 625对应25.0度, 最大1600对应120.0度.
  322. // 为了通用, ADC输入为12bit的ADC值.
  323. // 电路和软件算法设计: Coody
  324. /**********************************************/
  325. #define     D_SCALE     10      //结果放大倍数, 放大10倍就是保留一位小数
  326. u16 get_temperature(u16 adc)
  327. {
  328.     u16 code *p;
  329.     u16 i;
  330.     u8  j,k,min,max;
  331.    
  332.     adc = 4096 - adc;   //Rt接地
  333.     p = temp_table;
  334.     if(adc < p[0])      return (0xfffe);
  335.     if(adc > p[160])    return (0xffff);
  336.    
  337.     min = 0;        //-40度
  338.     max = 160;      //120度
  339.     for(j=0; j<5; j++)  //对分查表
  340.     {
  341.         k = min / 2 + max / 2;
  342.         if(adc <= p[k]) max = k;
  343.         else            min = k;
  344.     }
  345.          if(adc == p[min])  i = min * D_SCALE;
  346.     else if(adc == p[max])  i = max * D_SCALE;
  347.     else    // min < temp < max
  348.     {
  349.         while(min <= max)
  350.         {
  351.             min++;
  352.             if(adc == p[min])   {i = min * D_SCALE; break;}
  353.             else if(adc < p[min])
  354.             {
  355.                 min--;
  356.                 i = p[min]; //min
  357.                 j = (adc - i) * D_SCALE / (p[min+1] - i);
  358.                 i = min;
  359.                 i *= D_SCALE;
  360.                 i += j;
  361.                 break;
  362.             }
  363.         }
  364.     }
  365.     return i;
  366. }
  367. /********************** 显示扫描函数 ************************/
  368. void DisplayScan(void)
  369. {   
  370.     P7 = ~T_COM[7-display_index];
  371.     P6 = ~t_display[LED8[display_index]];
  372.     if(++display_index >= 8)    display_index = 0;  //8位结束回0
  373. }
  374. /********************** Timer0 1ms中断函数 ************************/
  375. void timer0 (void) interrupt 1
  376. {
  377.     DisplayScan();  //1ms扫描显示一位
  378.     B_1ms = 1;      //1ms标志
  379. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:172
  • 最近打卡:2025-04-28 08:49:07
已绑定手机

90

主题

961

回帖

2318

积分

超级版主

积分
2318
QQ
发表于 2024-2-3 11:58:48 | 显示全部楼层
热线19952583534
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-04-29 08:25:45

10

主题

130

回帖

564

积分

高级会员

积分
564
发表于 2024-2-3 13:28:30 | 显示全部楼层
各B值,对照表都不同, 每个厂家也多少有点差异,由配方和工艺差异决定的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:246
  • 最近打卡:2025-04-30 10:10:32

3

主题

155

回帖

537

积分

高级会员

积分
537
发表于 2024-2-20 13:51:58 | 显示全部楼层
这种根据购买的传感器参数去找供应商要就好了,要是网上买的就注意组织和B值参数去网上找
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-04-28 12:10:18

8

主题

87

回帖

130

积分

注册会员

积分
130
发表于 2024-2-20 14:29:51 | 显示全部楼层
送你一个NTC电阻的小工具,相信你会喜欢的

NTCalc.zip

48.99 KB, 下载次数: 255

回复 支持 2 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

冲哥视频教程和各种开源资料QQ交流群884047237,可群

积分
8058
QQ
发表于 2024-2-20 14:46:13 | 显示全部楼层
不同厂家的NTC在不同温度下的电阻值略有差异,虽然有公式可以计算,但是公式都有偏差,实际厂家出厂的时候会对每个型号和批次的进行全范围的测试,好的传感器会有0.0几度测试一次阻值,可以向他们要EXCEL表格,然后根据表格通过分压的公式去计算adc数值,可以去看下我的视频教程,关于NTC的那集,有详细说明
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2024-2-21 22:21:09 | 显示全部楼层
B值不一样的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2025-05-02 09:38:13

109

主题

1900

回帖

5214

积分

论坛元老

积分
5214
发表于 2024-2-22 08:54:36 | 显示全部楼层
我觉得只能参考而已。

ntc热敏电阻与温度对照表(5K、10k、15K、50K、100K RT阻值表).xls

41 KB, 下载次数: 182

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:379
  • 最近打卡:2025-05-02 11:40:42

43

主题

336

回帖

595

积分

高级会员

积分
595
发表于 2024-4-24 14:44:02 来自手机 | 显示全部楼层
xxkj2010 发表于 2024-2-22 08:54
我觉得只能参考而已。

根据你这个表,我做的10k的。大家可以参考一下。
关于NTC热电阻的标定之我的方式
10k NTC  分压电阻10K

温度    电阻        ADC               
-20        97120        2284908        68746        68746        137.492                137.492
-15        72980        2216162        82122        82122        164.244                164.244
-10        55340        2134040        95490        95490        190.98                190.98
-5        42340        2038550        108914        108914        217.828                217.828
0        32660        1929636        121186        121186        242.372                242.372
5        25400        1808450        131027        131027        262.054                262.054
10        19900        1677423        137343        137343        274.686                274.686
15        15710        1540080        140140        140140        280.28                280.28
20        12490        1399940        139163        139163        278.326                278.326
25        10000        1260777        136222        136222        272.444                272.444
30        8058        1124555        128705        128705        257.41                257.41
35        6532        995850        120050        120050        240.1                240.1
40        5326        875800        109615        109615        219.23                219.23
45        4368        766185        98915        98915        197.83                197.83
50        3602        667270        88040        88040        176.08                176.08
55        2986        579230        77530        77530        155.06                155.06
60        2488        501700        67800        67800        135.6                135.6
65        2082        433900        58800        58800        117.6                117.6
70        1751        375100                                       
                                                       


标定方式电阻箱

例子:
if (adc_average<=1399940 && adc_average>1260777)
{       
wendu=200+(1399940-adc_average)/2783.26;
}

输入10K电阻测试时,ADC值 1261484-adc1261489

[13:58:29.459]收←◆adc1261485
xsbl24.9
wendu24.9

[13:58:30.463]收←◆adc1261489
xsbl24.9
wendu24.9

[13:58:31.467]收←◆adc1261487
xsbl24.9
wendu24.9

[13:58:32.471]收←◆adc1261484
xsbl24.9
wendu24.9
真实数据。STC棒棒的。不用放大器超准了。采集600个求平均
// 计算平均值 下面是采集的关键代码
adc_average = adc_calculate_average()*2525000/4096;

效果一会发图

总结一下。网上说了各种的方法。我认为都不可取。应该是结合软件和硬件才可以。硬件电路方面就是10k对10k分压。然后出现0~2.5伏给到AdC脚。然后用电阻箱给对应的电阻值测得相对应的Adc值。然后每隔五度进行线性标定。根据我的经验。测-20-70还是可以的。再高了或者低了可能效果就不好了。也就是说NPC测温度测温范围比较小。这样也容易比较准确。以上只是我自己的观点。希望对你有用。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:40 , Processed in 0.122530 second(s), 109 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表