欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 開源4個元件打造NTC10K溫度計 [打印本頁]

作者: 劉海龍    時間: 2016-10-25 19:32
標題: 開源4個元件打造NTC10K溫度計
1.最近發現壇里對熱敏電阻測溫系統呼聲很高,剛好我手里有個NTC10K的熱敏電阻,于是乎我就打算做個熱敏電阻溫度計。
2.我首先了解了NTC熱敏電阻的特性,阻值隨溫度的升高而減小。通過廠商提供的溫度和電阻對應的關系表就可以知道阻值對應的溫度,要想測溫度就要測出熱敏電阻的阻值,知道了原理就好辦多了。


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


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


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


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


下圖為數碼管正放時的顯示,實際使用時要旋轉180度放
(這樣就可以顯示溫度符號℃)


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


下圖為買熱敏電阻時賣家提供的阻值與溫度對應關系表




請評分支持一下謝謝
  1. /********************************************/
  2. //2016.10.24日編寫完成
  3. //作者:劉海龍 (讀單片機內部BandGap基準電壓值參考的STC官網程序)
  4. //硬件:STC15W408AS+3位共陰數碼管+1個10K的電阻(最好選用精密電阻)+NTC10K熱敏電阻
  5. //晶振選12M或11.0952M
  6. /*原理:NTC 10k熱敏電阻和10k精密電阻串聯接入VCC—GND,利用單片機內部的ADC
  7. 模塊測出NTC電阻上分的電壓ADC_V以及系統的供電電壓POWER_V,從而得到10k精密電阻上
  8. 的電壓R_V=(POWER_V-ADC_V),根據電阻串聯電流相等可以知道NTC電阻中的電流I=R_V/10K,
  9. ,再根據U=I*R可得到熱敏電阻的阻值NTC_R=ADC_V/I,通過查表找出此阻值對應的溫度。*/
  10. #include <STC15W.h>//STC15W408AS頭文件
  11. #include <intrins.h>
  12. unsigned int NTC_R;//定義熱敏電阻阻值變量
  13. unsigned char temperature;//定義溫度存儲變量
  14. unsigned int code Ttable[106][2]={//溫度與電阻阻值對應關系表格
  15. 0,3274,//0度對應阻值32.74k
  16. 1,3111,//1度對應阻值31.11k
  17. 2,2957,//2度對應阻值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度對應阻值10k               
  41. 26,957,//26度對應阻值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度對應阻值1.02k
  102. 87,        99,//87度對應阻值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度對應阻值0.58k
  121.          

  122. };        
  123. #include<4LED_YIN.H>//數碼管驅動顯示程序
  124. #include <BandGap.H>//包含讀單片機內部BandGap基準電壓值
  125. void T_dis(){//溫度處理函數采集到的阻值與二維數組的阻值進行比較,從而獲得相對應的溫度值。
  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();//待系統穩定
  137.     InitADC();//初始化ADC
  138.     P1M1=0X80;//P1.7高阻輸入
  139.         init();//IO口設置初始化
  140.     while (1)
  141.     {
  142.         ShowResult(7);//測量NTC熱敏電阻上的電壓并根據電壓計算出阻值
  143.                 T_dis();//測量到的阻值進行查表對比找到阻值對應的溫度值
  144.                 disp();        //數碼管顯示溫度值
  145.     }
  146. }
復制代碼





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

NTC10K溫度計02.png

NTC10K溫度計源程序 原理圖.rar

2.34 MB, 下載次數: 1233, 下載積分: 黑幣 -5


作者: 維超    時間: 2016-10-26 08:59
很好的一個學習例程。
作者: wc86110    時間: 2016-10-26 16:24
用四位數碼管測溫范圍會更寬
作者: 劉海龍    時間: 2016-10-26 16:50
wc86110 發表于 2016-10-26 16:24
用四位數碼管測溫范圍會更寬

此制作僅為拋磚引玉,壇友可以加入更好的創意進去。
作者: 七顆星星    時間: 2016-10-27 12:57
請問按照你的原理,因為你的單片機里已經包含了AD轉換模塊,若必須分離出來那么這樣行嗎?NTC 10k熱敏電阻和10k精密電阻串聯,然后將它接入A/D轉換器,例如ADC0804然后通過DB1~DB2將數字信號送入單片機,而這個數就是NTC的分壓值,之后由再計算那個NTC的電阻,再查表求溫度,可以不?
作者: 劉海龍    時間: 2016-10-27 13:56
七顆星星 發表于 2016-10-27 12:57
請問按照你的原理,因為你的單片機里已經包含了AD轉換模塊,若必須分離出來那么這樣行嗎?NTC 10k熱敏電阻 ...

可以的

作者: 七顆星星    時間: 2016-10-27 14:21
劉海龍 發表于 2016-10-27 13:56
可以的

那這個程序應該怎么寫呀,我只會寫簡單的,這個我不太會,還有今天課間問了老師這個電路,老師說按原理可以實現,要我仿真看看,他說加到AD的電路的電壓前面靈敏度會不夠,可能要加一個電壓放大器,這應該怎么連接呢
作者: siman275    時間: 2016-10-27 15:13
可以直接用EXCEL 做個溫度表  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位
作者: 劉海龍    時間: 2016-10-27 21:52
七顆星星 發表于 2016-10-27 14:21
那這個程序應該怎么寫呀,我只會寫簡單的,這個我不太會,還有今天課間問了老師這個電路,老師說按原理可 ...

根據這個程序的思路自己改改
作者: hi海龜    時間: 2016-11-21 11:01
不錯,謝謝分享
作者: 急不可待    時間: 2016-11-22 09:16
這個要看看。0度一下不顯?
作者: 2527    時間: 2016-11-22 10:54
很有用
作者: ma070432    時間: 2016-11-23 14:57
非常實用!感謝分享學習中!
作者: gshuxiao8    時間: 2016-12-5 21:49
真的值得學習,,,!!
作者: 簡單點愛情    時間: 2016-12-8 15:57
不錯 不錯 不錯的
作者: adls    時間: 2016-12-9 06:10
真的值得學習!謝謝分享
作者: titan90921    時間: 2016-12-13 11:11

 很好的一個學習例程。
作者: 隨易而安    時間: 2016-12-13 19:54

 很好的一個學習例程。
作者: kevintang    時間: 2016-12-14 20:22
不錯,謝謝分享。
作者: yeemes    時間: 2016-12-15 22:59
不錯,謝謝
作者: kkfy888    時間: 2016-12-18 22:39
負溫如何顯示呢?
作者: 邰夏留    時間: 2016-12-19 08:43
參考學習下
作者: 劉海龍    時間: 2016-12-20 13:19
kkfy888 發表于 2016-12-18 22:39
負溫如何顯示呢?

數碼管換成4位的,程序改改。
作者: 隨易而安    時間: 2016-12-20 15:20
回帖有錢
作者: bpdy168    時間: 2017-2-7 18:45
請問讀取一次溫度值大約需要多長時間?

作者: 劉海龍    時間: 2017-2-7 20:14
bpdy168 發表于 2017-2-7 18:45
請問讀取一次溫度值大約需要多長時間?

讀取一次1秒內
作者: zeng_fanlong    時間: 2017-2-8 08:42
不錯不錯
作者: ts01001    時間: 2017-2-9 15:59
贊一個!
作者: ts01001    時間: 2017-2-9 16:01
很好的一個學習例程。
作者: zjdt    時間: 2017-2-17 21:07
謝謝分享
作者: xieyajun888    時間: 2017-2-27 00:04
樓主太棒了,謝謝分享
作者: 奶油霄神    時間: 2017-2-27 10:05
6666666666666  等一下試一下
作者: nscj1998    時間: 2017-3-1 10:10
謝謝樓主!
作者: zying    時間: 2017-3-7 21:50
程序這個好!學習了。謝謝分享!!!!!!!!!!!!
作者: zhaok2013    時間: 2017-3-7 22:22
這個貌似需要AD/DA轉換吧,單片機自帶功能嗎?
作者: imxuheng    時間: 2017-3-8 11:15
不錯的制作,存這么多數據有些耗內存
作者: 劉海龍    時間: 2017-3-9 03:12
zhaok2013 發表于 2017-3-7 22:22
這個貌似需要AD/DA轉換吧,單片機自帶功能嗎?

這塊單片機自帶ADC
作者: dwwzl    時間: 2017-3-9 07:56
真心是好文章!
作者: 越快樂越墮落    時間: 2017-3-10 17:37
為毛我的做出來顯示亂碼
作者: 劉海龍    時間: 2017-3-11 20:51
越快樂越墮落 發表于 2017-3-10 17:37
為毛我的做出來顯示亂碼

把數碼管倒過來看
作者: 越快樂越墮落    時間: 2017-3-12 12:32
劉海龍 發表于 2017-3-11 20:51
把數碼管倒過來看

不是這個問題 已經解決了 有引腳短路了。。。
作者: xllin    時間: 2017-4-9 20:17
用EXCEL做個公式來計算,應該好些
作者: fuckjg    時間: 2017-5-3 10:33
新人,學習一下
作者: dpzc1234    時間: 2017-5-9 09:58
搞得不錯 ,學習一下 正好用到。
作者: 弱水三千@    時間: 2017-6-1 19:16
越快樂越墮落 發表于 2017-3-10 17:37
為毛我的做出來顯示亂碼

大佬能不能把上面那個程序發給我,我下載不了,郵箱591757523@qq.com,多謝了
作者: 3760609865    時間: 2017-6-4 08:12
我用此程序原碼,修改部份程序后做了個簡潔溫度計,發張實物圖,我用stc15w404As弄的。再次感謝樓主分享。
作者: 3760609865    時間: 2017-6-4 08:16
把照片發漏了,補上。

1496535188552..jpg (41.82 KB, 下載次數: 589)

1496535188552..jpg

作者: doudow    時間: 2017-6-7 15:31
感謝分享。
作者: doudow    時間: 2017-6-8 14:38
樓主太棒了,謝謝分享
作者: play_emma    時間: 2017-7-29 09:47
這個不錯,可以參考一下,以前用的都是DS18B20.
作者: zhongjinhua1    時間: 2017-8-28 19:57


謝謝,學習學習
作者: 2387536488    時間: 2017-9-12 17:14
感謝!
作者: 2387536488    時間: 2017-9-12 17:15
好論壇,好人啊!
作者: lboy    時間: 2017-9-13 16:14
謝謝樓主分享
作者: 銘創    時間: 2017-9-14 10:43
學習中,學習中,
作者: join22life    時間: 2017-9-21 16:03
很好的資料,非常感謝樓主
作者: 獨孤俠    時間: 2017-10-11 18:09
是我需要的.謝謝樓主無私奉獻!
作者: majestslx    時間: 2017-10-12 09:11
非常感謝 最近也在做這個 支持lz
作者: tqmtonychen    時間: 2017-10-12 16:08
不錯啊,準備做一個試試
作者: 大骨頭    時間: 2017-10-13 22:41
非常不錯,正在找這樣的文章,可是不知道ADC怎么用!
作者: join22life    時間: 2017-10-16 14:32
非常的感謝你的分享,其他主題也很受用
作者: linxiangrong15    時間: 2017-10-31 23:22
給力!
作者: linxiangrong15    時間: 2017-10-31 23:23
給力!good。
作者: GUOXUAN    時間: 2017-12-8 21:31
樓主老師做的很細,這是絕世好貼!神貼呀!
我之前用過N多的NTC電阻,10K和20K的,用它加運放來制做溫控風扇.我怎么就沒想到用單片機的ADC通過查表來實現呢?
作者: wy382    時間: 2017-12-25 14:30
很好的一個學習例程。
作者: GGG160375123645    時間: 2017-12-25 15:30
謝謝分享!
作者: 撼地神牛雨    時間: 2018-1-6 19:20
學習一下。
作者: acp1234567    時間: 2018-2-8 13:54
非常不錯。。。。。。。。。。。。。
作者: 神劍無敵    時間: 2018-2-19 18:48
挺好的 下載借鑒一下
作者: 2369526254    時間: 2018-3-8 14:52
謝謝分享剛好有這些東西可以驗證一下謝謝
作者: 2369526254    時間: 2018-3-8 14:58
學習值得借鑒
作者: loobing    時間: 2018-3-8 17:24
這樣也能工作?單片機不用晶振,不用復位?
作者: 神劍無敵    時間: 2018-4-2 20:40
好像重復下載也一樣收黑幣的
作者: 劉海龍    時間: 2018-4-2 21:30
loobing 發表于 2018-3-8 17:24
這樣也能工作?單片機不用晶振,不用復位?

STC15W408AS單片機自帶內部高精準晶振,內部自帶復位電路‘
作者: 言必信行必果    時間: 2018-4-9 20:06
很好的一個學習例程。
作者: znddcc    時間: 2018-5-4 15:21
感謝分享,學習了
作者: njgwx    時間: 2018-5-6 21:13
kan kan kan.
作者: njgwx    時間: 2018-5-6 21:14
很好的一個學習例程
作者: 天涯無芳    時間: 2018-5-8 09:44
這個很好作者給了開源支持,正好適合我們初學者
作者: 1943681359    時間: 2018-5-8 22:22
謝謝分享,已用上
作者: mcuz    時間: 2018-5-19 19:10
感謝分享,讓初學者少走彎路。
作者: omer    時間: 2018-5-21 16:59
感謝分享;
家里的機械調節電烤箱溫度控制不準確,準備diy個NTC的測溫及溫度設置,學習了。
作者: dukecheng    時間: 2018-5-23 15:56
學習了
作者: nanning321    時間: 2018-5-24 16:02
DIY4位數碼管加按鍵可控預定溫度,加熱溫度到預定溫度停止輸出
作者: allen2016    時間: 2018-5-30 13:43
下來玩玩哦,好!
作者: TKJT    時間: 2018-6-4 07:36
感謝分享
作者: mxsohu    時間: 2018-6-5 14:31
謝謝樓主分享,樓主制作和上傳辛苦了
作者: wzs909    時間: 2018-6-11 15:20
贊一個!
作者: msydyf    時間: 2018-6-12 12:52
謝謝分享。
作者: priam    時間: 2018-7-1 18:59
謝謝樓主分享
作者: second_chan    時間: 2018-7-4 17:04
點贊一個,感謝樓主分享
作者: second_chan    時間: 2018-7-4 19:24
感謝樓主分享,看能否下載學習一下
作者: 17681899568    時間: 2018-7-11 13:03
真的好

作者: lxl941122    時間: 2018-7-11 14:39
在實際做電路時,建議在熱敏電阻兩端加上104,防止干擾,這樣做對單片機好。
作者: fenghaihuac    時間: 2018-7-16 23:07
不錯學習
作者: lee40039    時間: 2018-7-19 08:53
學習!值得借鑒
作者: zhouqiang    時間: 2018-7-20 20:10
多謝分享!
作者: 40560335    時間: 2018-8-1 10:30
本帖最后由 40560335 于 2018-8-1 10:55 編輯

不錯,學習了!
作者: kongjkd    時間: 2018-8-14 08:46
先下載 表示感謝  正好前幾天做了一個18b20的測溫  不過價格太貴了,所以想用這個試試看
作者: hbdj1234    時間: 2018-8-24 09:25
很好的資料,非常感謝樓主!準備做一個試試看!




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1