找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 79640|回復(fù): 187
打印 上一主題 下一主題
收起左側(cè)

開源4個(gè)元件打造NTC10K溫度計(jì)

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 9 黑幣 回復(fù)本帖可獲得 3 黑幣獎(jiǎng)勵(lì)! 每人限 1 次(中獎(jiǎng)概率 80%)
跳轉(zhuǎn)到指定樓層
樓主
ID:123732 發(fā)表于 2016-10-25 19:32 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1.最近發(fā)現(xiàn)壇里對(duì)熱敏電阻測溫系統(tǒng)呼聲很高,剛好我手里有個(gè)NTC10K的熱敏電阻,于是乎我就打算做個(gè)熱敏電阻溫度計(jì)。
2.我首先了解了NTC熱敏電阻的特性,阻值隨溫度的升高而減小。通過廠商提供的溫度和電阻對(duì)應(yīng)的關(guān)系表就可以知道阻值對(duì)應(yīng)的溫度,要想測溫度就要測出熱敏電阻的阻值,知道了原理就好辦多了。


3.閉上眼開始思考測量電阻的方法,不可能直接拿萬用表測吧,首先想到初中物理學(xué)到的R=U/I(電阻的阻值等于加在它兩端的電壓除以流過它的電流)。只要在熱敏電阻上加上電,測出電壓和電流就行了。


4.測量電壓可以用ADC測量,可是電流怎么測量呢?于是想到串聯(lián)電路電流相等,把一個(gè)已知阻值的精密電阻和熱敏電阻串聯(lián),根據(jù)I=U/R測到已知電阻上分得的電壓就可以知道電路中的電流了。


5.系統(tǒng)原理:NTC 10k熱敏電阻和10k精密電阻串聯(lián)接入VCC—GND,利用單片機(jī)內(nèi)部的ADC模塊測出NTC電阻上分的電壓ADC_V以及系統(tǒng)的供電電壓POWER_V,從而得到10k精密電阻上的電壓R_V=(POWER_V-ADC_V),根據(jù)電阻串聯(lián)電流相等可以知道NTC電阻中的電流I=R_V/10K,,再根據(jù)U=I*R可得到熱敏電阻的阻值NTC_R=ADC_V/I,通過查表找出此阻值對(duì)應(yīng)的溫度。此系統(tǒng)由于使用了STC單片機(jī)內(nèi)部的電壓基準(zhǔn)為參考,所以測溫精度不受系統(tǒng)電壓VCC的影響。


6.為了簡化NTC10k測溫系統(tǒng)的硬件制作難度,我盡量優(yōu)化設(shè)計(jì),只需NTC熱敏電阻+10k精密電阻+STC單片機(jī)+數(shù)碼管公4個(gè)元件。單片機(jī)依然采用STC15W408ASS,溫度顯示只有兩位所以數(shù)碼管采用3位共陰數(shù)碼管(把數(shù)碼管旋轉(zhuǎn)180度顛倒過來使用,前兩位顯示溫度第三位顯示“”符號(hào)),10k電阻盡量選擇精密一點(diǎn)的。
下圖為測得的室溫21度


下圖為數(shù)碼管正放時(shí)的顯示,實(shí)際使用時(shí)要旋轉(zhuǎn)180度放
(這樣就可以顯示溫度符號(hào)℃)


下圖為原理圖截圖(源文件見附件PADS layout)


下圖為買熱敏電阻時(shí)賣家提供的阻值與溫度對(duì)應(yīng)關(guān)系表




請?jiān)u分支持一下謝謝
  1. /********************************************/
  2. //2016.10.24日編寫完成
  3. //作者:劉海龍 (讀單片機(jī)內(nèi)部BandGap基準(zhǔn)電壓值參考的STC官網(wǎng)程序)
  4. //硬件:STC15W408AS+3位共陰數(shù)碼管+1個(gè)10K的電阻(最好選用精密電阻)+NTC10K熱敏電阻
  5. //晶振選12M或11.0952M
  6. /*原理:NTC 10k熱敏電阻和10k精密電阻串聯(lián)接入VCC—GND,利用單片機(jī)內(nèi)部的ADC
  7. 模塊測出NTC電阻上分的電壓ADC_V以及系統(tǒng)的供電電壓POWER_V,從而得到10k精密電阻上
  8. 的電壓R_V=(POWER_V-ADC_V),根據(jù)電阻串聯(lián)電流相等可以知道NTC電阻中的電流I=R_V/10K,
  9. ,再根據(jù)U=I*R可得到熱敏電阻的阻值NTC_R=ADC_V/I,通過查表找出此阻值對(duì)應(yīng)的溫度。*/
  10. #include <STC15W.h>//STC15W408AS頭文件
  11. #include <intrins.h>
  12. unsigned int NTC_R;//定義熱敏電阻阻值變量
  13. unsigned char temperature;//定義溫度存儲(chǔ)變量
  14. unsigned int code Ttable[106][2]={//溫度與電阻阻值對(duì)應(yīng)關(guān)系表格
  15. 0,3274,//0度對(duì)應(yīng)阻值32.74k
  16. 1,3111,//1度對(duì)應(yīng)阻值31.11k
  17. 2,2957,//2度對(duì)應(yīng)阻值29.57k
  18. 3,2812,//
  19. 4,2674,//
  20. 5,2545,
  21. 6,2422,
  22. 7,2306,
  23. 8,2196,
  24. 9,2092,
  25. 10,1993,
  26. 11,1900,
  27. 12,1811,
  28. 13,1728,
  29. 14,1648,
  30. 15,1573,
  31. 16,1501,
  32. 17,1433,
  33. 18,1369,
  34. 19,1308,
  35. 20,1250,
  36. 21,1194,
  37. 22,1142,
  38. 23,1092,
  39. 24,1045,
  40. 25,1000,//25度對(duì)應(yīng)阻值10k               
  41. 26,957,//26度對(duì)應(yīng)阻值9.57k
  42. 27,916,
  43. 28,877,
  44. 29,840,
  45. 30,805,
  46. 31,771,
  47. 32,739,
  48. 33,709,
  49. 34,679,
  50. 35,652,
  51. 36,625,
  52. 37,600,
  53. 38,576,
  54. 39,553,
  55. 40,531,
  56. 41,510,
  57. 42,490,
  58. 43,471,
  59. 44,453,
  60. 45,435,
  61. 46,418,
  62. 47,402,
  63. 48,387,
  64. 49,372,
  65. 50,358,
  66. 51,345,
  67. 52,332,
  68. 53,320,
  69. 54,308,
  70. 55,297,
  71. 56,286,
  72. 57,276,
  73. 58,266,
  74. 59,256,
  75. 60,247,
  76. 61,238,
  77. 62,230,
  78. 63,222,
  79. 64,214,
  80. 65,207,
  81. 66,199,
  82. 67,193,
  83. 68,186,
  84. 69,180,
  85. 70,174,
  86. 71,168,
  87. 72,162,
  88. 73,157,
  89. 74,        152,
  90. 75,        147,
  91. 76,        142,
  92. 77,        137,
  93. 78,        133,
  94. 79,        128,
  95. 80,        124,
  96. 81,        120,
  97. 82,        116,
  98. 83,        113,
  99. 84,        109,
  100. 85,        106,
  101. 86,        102,//86度對(duì)應(yīng)阻值1.02k
  102. 87,        99,//87度對(duì)應(yīng)阻值0.99k
  103. 88,        96,
  104. 89,        93,
  105. 90,        90,
  106. 91,        88,
  107. 92,        85,
  108. 93,        82,
  109. 94,        80,
  110. 95,        78,
  111. 96,        75,
  112. 97,        73,
  113. 98,        71,
  114. 99,        69,
  115. 100,67,
  116. 101,65,
  117. 102,63,
  118. 103,61,
  119. 104,59,
  120. 105,58//105度對(duì)應(yīng)阻值0.58k
  121.          

  122. };        
  123. #include<4LED_YIN.H>//數(shù)碼管驅(qū)動(dòng)顯示程序
  124. #include <BandGap.H>//包含讀單片機(jī)內(nèi)部BandGap基準(zhǔn)電壓值
  125. void T_dis(){//溫度處理函數(shù)采集到的阻值與二維數(shù)組的阻值進(jìn)行比較,從而獲得相對(duì)應(yīng)的溫度值。
  126.          unsigned char i;
  127.          for(i=105;i<106;i--)  {
  128.                 if(NTC_R >= Ttable[i][1] && NTC_R < Ttable[i-1][1]){
  129.                    temperature=(Ttable[i][0]+1);
  130.                    break;
  131.                 }
  132.         }
  133. }
  134. /********************************/
  135. void main (void)
  136. {        Delay20ms();//待系統(tǒng)穩(wěn)定
  137.     InitADC();//初始化ADC
  138.     P1M1=0X80;//P1.7高阻輸入
  139.         init();//IO口設(shè)置初始化
  140.     while (1)
  141.     {
  142.         ShowResult(7);//測量NTC熱敏電阻上的電壓并根據(jù)電壓計(jì)算出阻值
  143.                 T_dis();//測量到的阻值進(jìn)行查表對(duì)比找到阻值對(duì)應(yīng)的溫度值
  144.                 disp();        //數(shù)碼管顯示溫度值
  145.     }
  146. }
復(fù)制代碼





NTC10K溫度計(jì)02.png (757.21 KB, 下載次數(shù): 414)

NTC10K溫度計(jì)02.png

NTC10K溫度計(jì)源程序 原理圖.rar

2.34 MB, 下載次數(shù): 1233, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 22黑幣 +188 收起 理由
秦12315 + 11 很給力!
lzh1762 + 5 贊一個(gè)!
100860903 + 5 贊一個(gè)!
slhslhhao + 5 贊一個(gè)!
YJGG + 12 很給力!
凌凈清河 + 16 非常精煉,看著舒服,感謝
zhanghoub + 5
h198513 + 5 贊一個(gè)!
天涯無芳 + 3 很給力!
sirf3 + 3
GUOXUAN + 15 絕世好帖!
lishiliang + 6 很給力!
brave_ruan + 10 很給力!
3760609865 + 12 很給力!
zhaok2013 + 5 贊一個(gè)!
nscj1998 + 5 贊一個(gè)!
davg1 + 35 共享資料的黑幣獎(jiǎng)勵(lì)!
ssfc + 5 很給力!
隨易而安 + 5 共享資料的黑幣獎(jiǎng)勵(lì)!
titan90921 + 5 很給力!
滴~電子小白 + 5 贊一個(gè)!
維超 + 10 贊一個(gè)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏88 分享淘帖 頂20 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:46999 發(fā)表于 2016-10-26 08:59 | 只看該作者
很好的一個(gè)學(xué)習(xí)例程。
回復(fù)

使用道具 舉報(bào)

板凳
ID:96682 發(fā)表于 2016-10-26 16:24 | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

用四位數(shù)碼管測溫范圍會(huì)更寬
回復(fù)

使用道具 舉報(bào)

地板
ID:123732 發(fā)表于 2016-10-26 16:50 | 只看該作者
wc86110 發(fā)表于 2016-10-26 16:24
用四位數(shù)碼管測溫范圍會(huì)更寬

此制作僅為拋磚引玉,壇友可以加入更好的創(chuàng)意進(jìn)去。
回復(fù)

使用道具 舉報(bào)

5#
ID:143848 發(fā)表于 2016-10-27 12:57 來自手機(jī) | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

請問按照你的原理,因?yàn)槟愕膯纹瑱C(jī)里已經(jīng)包含了AD轉(zhuǎn)換模塊,若必須分離出來那么這樣行嗎?NTC 10k熱敏電阻和10k精密電阻串聯(lián),然后將它接入A/D轉(zhuǎn)換器,例如ADC0804然后通過DB1~DB2將數(shù)字信號(hào)送入單片機(jī),而這個(gè)數(shù)就是NTC的分壓值,之后由再計(jì)算那個(gè)NTC的電阻,再查表求溫度,可以不?
回復(fù)

使用道具 舉報(bào)

6#
ID:123732 發(fā)表于 2016-10-27 13:56 | 只看該作者
七顆星星 發(fā)表于 2016-10-27 12:57
請問按照你的原理,因?yàn)槟愕膯纹瑱C(jī)里已經(jīng)包含了AD轉(zhuǎn)換模塊,若必須分離出來那么這樣行嗎?NTC 10k熱敏電阻 ...

可以的
回復(fù)

使用道具 舉報(bào)

7#
ID:143848 發(fā)表于 2016-10-27 14:21 來自手機(jī) | 只看該作者
劉海龍 發(fā)表于 2016-10-27 13:56
可以的

那這個(gè)程序應(yīng)該怎么寫呀,我只會(huì)寫簡單的,這個(gè)我不太會(huì),還有今天課間問了老師這個(gè)電路,老師說按原理可以實(shí)現(xiàn),要我仿真看看,他說加到AD的電路的電壓前面靈敏度會(huì)不夠,可能要加一個(gè)電壓放大器,這應(yīng)該怎么連接呢
回復(fù)

使用道具 舉報(bào)

8#
ID:85925 發(fā)表于 2016-10-27 15:13 | 只看該作者
可以直接用EXCEL 做個(gè)溫度表  5v  =1024   2.5v=512 然后查表來做溫度變換 這樣來更快。
/*************************************************************
*        NTC=3950   10K                                 
*        取樣電阻   R=10K
*      
*************************************************************/
const unsigned char temp_table[ ]=
{
   //60
     60,63,65,67,70,72,75,78,80,83,                 //0-9
     85,88,91,94,97,100,102,105,108,111,         //10-19
     114,117,120,122,125,128,131,134,136,139,    //20-29
     142,145,147,150,152,155,157,160,162,165,    //30-39
     167,170,172,174,176,178,180,183,185,186,    //40-49
     188,190,192,194,196,197,199,201,202,204,    //50-59
     205,207,208,209,211,212,213,214,216,217,    //60-69
     218,219,220,221,222,223,224,225,226,227,    //70-79
     227,228,229,230,231,231,232,233,233,234,    //80-89
     234,235,236,237,237,238,238,239,239,240,240     //90-99              
};   

//===================================================
//   NTC  AD 采樣
//
//
//===================================================
void  ntc_ad(void)
{
  uchar i,j;
  DISI();
  AISR=0x08;                                    //P53 IS AD INPUT
  ADCON=0x0B;                                        //VREFS=VDD,CKR1/CKR0=00,ADPD=1,ADIS1/ADIS0=P53
  ADRUN=1;
  for(count=0;count<9;count++)
   {
     while(ADRUN)                        //WAIT ADC END
            {
                 WDTC();
                }
          ad_val[count]=ADDATA;          
          ADRUN=1;
   }          
   
//========================冒泡======================================  
    count=9;
         for(i=0;i<count;i++)
          {
           for(j=0;j<(count-i);j++)
            {
            if (ad_val[j]>ad_val[j+1])
              {
                        temp=ad_val[j+1];
                        ad_val[j+1]=ad_val[j];
                        ad_val[j]=temp;
               }
             }
           }
           if(ad_val[4]<=60)   
            {
               tt_new=0;
               return;
            }        
           if(ad_val[4]>=240)
            {
               tt_new=99;
               return;
            }  
            
           tt_2=temp_table[tt_new+1];
       tt_1=temp_table[tt_new-1];     
       if((ad_val[4]<=tt_1)||(ad_val[4]>=tt_2))
        {
          count1++;
          if(count1>5)
            {
              count1=0;
              tt_new=0;
                  do                                
                {
                  if(temp_table[tt_new]>=ad_val[4])
                   {
                     break;
                   }
                  tt_new++;     
                }while(tt_new<100);
            }
        }
      else
        {
            count1=0;
        }
    ENI();
}

我用的是義隆的芯片  AD 是8位

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
GUOXUAN + 15 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

9#
ID:123732 發(fā)表于 2016-10-27 21:52 | 只看該作者
七顆星星 發(fā)表于 2016-10-27 14:21
那這個(gè)程序應(yīng)該怎么寫呀,我只會(huì)寫簡單的,這個(gè)我不太會(huì),還有今天課間問了老師這個(gè)電路,老師說按原理可 ...

根據(jù)這個(gè)程序的思路自己改改
回復(fù)

使用道具 舉報(bào)

10#
ID:41090 發(fā)表于 2016-11-21 11:01 | 只看該作者
不錯(cuò),謝謝分享
回復(fù)

使用道具 舉報(bào)

11#
ID:146834 發(fā)表于 2016-11-22 09:16 | 只看該作者
這個(gè)要看看。0度一下不顯?
回復(fù)

使用道具 舉報(bào)

12#
ID:149399 發(fā)表于 2016-11-22 10:54 | 只看該作者
很有用
回復(fù)

使用道具 舉報(bào)

13#
ID:90816 發(fā)表于 2016-11-23 14:57 | 只看該作者
非常實(shí)用!感謝分享學(xué)習(xí)中!
回復(fù)

使用道具 舉報(bào)

14#
ID:152422 發(fā)表于 2016-12-5 21:49 | 只看該作者
真的值得學(xué)習(xí),,,。
回復(fù)

使用道具 舉報(bào)

15#
ID:152839 發(fā)表于 2016-12-8 15:57 | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

不錯(cuò) 不錯(cuò) 不錯(cuò)的
回復(fù)

使用道具 舉報(bào)

16#
ID:91691 發(fā)表于 2016-12-9 06:10 | 只看該作者
真的值得學(xué)習(xí)!謝謝分享
回復(fù)

使用道具 舉報(bào)

17#
ID:154362 發(fā)表于 2016-12-13 11:11 | 只看該作者

 很好的一個(gè)學(xué)習(xí)例程。
回復(fù)

使用道具 舉報(bào)

18#
ID:151661 發(fā)表于 2016-12-13 19:54 | 只看該作者

 很好的一個(gè)學(xué)習(xí)例程。
回復(fù)

使用道具 舉報(bào)

19#
ID:24486 發(fā)表于 2016-12-14 20:22 | 只看該作者
不錯(cuò),謝謝分享。
回復(fù)

使用道具 舉報(bào)

20#
ID:155151 發(fā)表于 2016-12-15 22:59 | 只看該作者
不錯(cuò),謝謝
回復(fù)

使用道具 舉報(bào)

21#
ID:98767 發(fā)表于 2016-12-18 22:39 | 只看該作者
回復(fù)

使用道具 舉報(bào)

22#
ID:79034 發(fā)表于 2016-12-19 08:43 | 只看該作者
參考學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

23#
ID:123732 發(fā)表于 2016-12-20 13:19 | 只看該作者
kkfy888 發(fā)表于 2016-12-18 22:39
負(fù)溫如何顯示呢?

數(shù)碼管換成4位的,程序改改。
回復(fù)

使用道具 舉報(bào)

24#
ID:151661 發(fā)表于 2016-12-20 15:20 | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

回帖有錢
回復(fù)

使用道具 舉報(bào)

25#
ID:158407 發(fā)表于 2017-2-7 18:45 | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

請問讀取一次溫度值大約需要多長時(shí)間?
回復(fù)

使用道具 舉報(bào)

26#
ID:123732 發(fā)表于 2017-2-7 20:14 | 只看該作者
bpdy168 發(fā)表于 2017-2-7 18:45
請問讀取一次溫度值大約需要多長時(shí)間?

讀取一次1秒內(nèi)
回復(fù)

使用道具 舉報(bào)

27#
ID:158248 發(fā)表于 2017-2-8 08:42 | 只看該作者
不錯(cuò)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

28#
ID:157063 發(fā)表于 2017-2-9 15:59 | 只看該作者
贊一個(gè)!
回復(fù)

使用道具 舉報(bào)

29#
ID:157063 發(fā)表于 2017-2-9 16:01 | 只看該作者
很好的一個(gè)學(xué)習(xí)例程。
回復(fù)

使用道具 舉報(bào)

30#
ID:165174 發(fā)表于 2017-2-17 21:07 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

31#
ID:166817 發(fā)表于 2017-2-27 00:04 | 只看該作者
樓主太棒了,謝謝分享
回復(fù)

使用道具 舉報(bào)

32#
ID:82421 發(fā)表于 2017-2-27 10:05 | 只看該作者
6666666666666  等一下試一下
回復(fù)

使用道具 舉報(bào)

33#
ID:167292 發(fā)表于 2017-3-1 10:10 | 只看該作者
謝謝樓主!
回復(fù)

使用道具 舉報(bào)

34#
ID:21740 發(fā)表于 2017-3-7 21:50 | 只看該作者
程序這個(gè)好!學(xué)習(xí)了。謝謝分享!。。。。。。。。。!
回復(fù)

使用道具 舉報(bào)

35#
ID:165046 發(fā)表于 2017-3-7 22:22 | 只看該作者

回帖獎(jiǎng)勵(lì) +3 黑幣

這個(gè)貌似需要AD/DA轉(zhuǎn)換吧,單片機(jī)自帶功能嗎?
回復(fù)

使用道具 舉報(bào)

36#
ID:151348 發(fā)表于 2017-3-8 11:15 | 只看該作者
不錯(cuò)的制作,存這么多數(shù)據(jù)有些耗內(nèi)存
回復(fù)

使用道具 舉報(bào)

37#
ID:123732 發(fā)表于 2017-3-9 03:12 | 只看該作者
zhaok2013 發(fā)表于 2017-3-7 22:22
這個(gè)貌似需要AD/DA轉(zhuǎn)換吧,單片機(jī)自帶功能嗎?

這塊單片機(jī)自帶ADC
回復(fù)

使用道具 舉報(bào)

38#
ID:114207 發(fā)表于 2017-3-9 07:56 | 只看該作者
真心是好文章!
回復(fù)

使用道具 舉報(bào)

39#
ID:99130 發(fā)表于 2017-3-10 17:37 | 只看該作者
為毛我的做出來顯示亂碼
回復(fù)

使用道具 舉報(bào)

40#
ID:123732 發(fā)表于 2017-3-11 20:51 | 只看該作者
越快樂越墮落 發(fā)表于 2017-3-10 17:37
為毛我的做出來顯示亂碼

把數(shù)碼管倒過來看
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表