久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10381|回復: 8
打印 上一主題 下一主題
收起左側

NTC熱敏電阻溫度Arduino采樣程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:510165 發表于 2019-4-12 08:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1. 硬件平臺: Arduino UNO(ATMega328P);   2. 編譯器(IDE): Arduino 1.88
3. 電路連接方式:+5V----10K上拉電阻----NTC(10K,B3950)----GND

單片機源程序如下:
  1. /************************************************************
  2.   Copyright (C), 2019-2019, xxxx Co., Ltd.
  3.   FileName:
  4.   Description:     // AD_NTC測試  
  5.   Version:         // 版本信息:1.0
  6.   Function List:   //
  7.    
  8. ************************************************************/

  9. // 硬件: Arduino UNO(ATMega328P);   編譯器(IDE): Arduino 1.88
  10. #include <avr/pgmspace.h>
  11. #include <MsTimer2.h>

  12. #define RS232_DUBEG           //開啟/關閉 串口調試

  13. /* ATMega328(比如UNO)有三個計時器timer 0-2, 一些延時語句比如delay(), millis() micros() 用的是timer0,
  14. 6個PWM輸出腳當然也要用這些計時器,它們是這樣分配的:
  15. Pins 5 and 6: timer0
  16. Pins 9 and 10: timer1
  17. Pins 11 and 3: timer2
  18. */

  19. #define PWM1_PIN       9          //3PIN PWMOUT
  20. #define PWM2_PIN       10         //5PIN PWMOUT
  21. #define AD_IN          A0         //電路連接方式:+5V----10K上拉電阻----NTC(10K,B3950)----GND

  22. #define NANO_LED       13         //NANO板載LED連接13腳




  23. //定義數據傳輸時間 (ATMega328P運行在16MHz下,一個時鐘周期的時間為1/16,000,000s = 1/16,000m s= 1/16us = 62.5ns ,一個nop是62.5ns)
  24. #define NOP           asm("nop")


  25. boolean _1msFlg = 0;
  26. boolean bBlinkSta = 0;
  27. unsigned int uiAD_Value;
  28. unsigned char ucPWM_Value;
  29. char cNTC_Temp = 0;

  30. struct NTC_TEMP
  31. {
  32.         char cTemp;
  33.         unsigned int uiAD;
  34. };

  35. const struct NTC_TEMP NTC_Temp_Tab[] PROGMEM =    //電路連接方式:+5V----10K上拉電阻----NTC(10K,B3950)----GND
  36. {
  37.         {-40,0x3E3},{-39,0x3E1},{-38,0x3DF},{-37,0x3DD},{-36,0x3DA},{-35,0x3D8},{-34,0x3D5},{-33,0x3D3},{-32,0x3D0},{-31,0x3CD},
  38.         {-30,0x3CA},{-29,0x3C6},{-28,0x3C3},{-27,0x3BF},{-26,0x3BB},{-25,0x3B8},{-24,0x3B3},{-23,0x3AF},{-22,0x3AA},{-21,0x3A6},
  39.         {-20,0x3A1},{-19,0x39C},{-18,0x396},{-17,0x391},{-16,0x38B},{-15,0x385},{-14,0x37F},{-13,0x378},{-12,0x372},{-11,0x36B},
  40.         {-10,0x364},{-9 ,0x35C},{-8 ,0x355},{-7 ,0x34D},{-6 ,0x345},{-5 ,0x33D},{-4 ,0x334},{-3 ,0x32C},{-2 ,0x323},{-1 ,0x31A},
  41.         {0  ,0x310},{1  ,0x307},{2  ,0x2FD},{3  ,0x2F3},{4  ,0x2E9},{5  ,0x2DF},{6  ,0x2D5},{7  ,0x2CA},{8  ,0x2C0},{9  ,0x2B5},
  42.         {10 ,0x2AA},{11 ,0x29F},{12 ,0x294},{13 ,0x289},{14 ,0x27D},{15 ,0x272},{16 ,0x267},{17 ,0x25B},{18 ,0x250},{19 ,0x244},
  43.         {20 ,0x239},{21 ,0x22D},{22 ,0x222},{23 ,0x217},{24 ,0x20B},{25 ,0x200},{26 ,0x1F5},{27 ,0x1EA},{28 ,0x1DF},{29 ,0x1D4},
  44.         {30 ,0x1C9},{31 ,0x1BE},{32 ,0x1B3},{33 ,0x1A9},{34 ,0x19E},{35 ,0x194},{36 ,0x18A},{37 ,0x180},{38 ,0x176},{39 ,0x16D},
  45.         {40 ,0x163},{41 ,0x15A},{42 ,0x151},{43 ,0x148},{44 ,0x13E},{45 ,0x137},{46 ,0x12E},{47 ,0x126},{48 ,0x11E},{49 ,0x116},
  46.         {50 ,0x10E},{51 ,0x107},{52 ,0x100},{53 ,0xF8 },{54 ,0xF1 },{55 ,0xEB },{56 ,0xE4 },{57 ,0xDE },{58 ,0xD7 },{59 ,0xD1 },
  47.         {60 ,0xCB },{61 ,0xC5 },{62 ,0xC0 },{63 ,0xBA },{64 ,0xB5 },{65 ,0xB0 },{66 ,0xAB },{67 ,0xA6 },{68 ,0xA1 },{69 ,0x9C },
  48.         {70 ,0x98 },{71 ,0x93 },{72 ,0x8F },{73 ,0x8B },{74 ,0x87 },{75 ,0x83 },{76 ,0x80 },{77 ,0x7C },{78 ,0x78 },{79 ,0x75 },
  49.         {80 ,0x72 },{81 ,0x6E },{82 ,0x6B },{83 ,0x68 },{84 ,0x65 },{85 ,0x62 },{86 ,0x60 },{87 ,0x5D },{88 ,0x5A },{89 ,0x58 },
  50.         {90 ,0x55 },{91 ,0x53 },{92 ,0x51 },{93 ,0x4E },{94 ,0x4C },{95 ,0x4A },{96 ,0x48 },{97 ,0x46 },{98 ,0x44 },{99 ,0x42 },
  51.         {100,0x41 },{101,0x3F },{102,0x3D },{103,0x3B },{104,0x3A },{105,0x38 },
  52. };

  53. /*********************************************
  54. //NTC-溫度轉換
  55. *********************************************/
  56. char NTC2Temp(unsigned int NTC_AD_Value)
  57. {
  58.         unsigned char i;
  59.         char temp = 0;      // -40 --- 105 C
  60.        
  61.         for(i = 0; i < sizeof(NTC_Temp_Tab) / (sizeof(NTC_Temp_Tab[0].cTemp) + sizeof(NTC_Temp_Tab[0].uiAD)); i++)
  62.         {
  63.           if(pgm_read_word(&NTC_Temp_Tab[i].uiAD) <= NTC_AD_Value)
  64.                 {
  65.                         temp = pgm_read_byte(&NTC_Temp_Tab[i].cTemp);
  66.                         break;
  67.                 }
  68.         }
  69.         return(temp);
  70. }



  71. /*********************************************
  72. //TIMER2中斷任務
  73. *********************************************/
  74. void Timer2Task(void)
  75. {
  76.   _1msFlg = 1;
  77. }

  78. /*********************************************
  79. //初始化
  80. *********************************************/
  81. void setup()
  82. {
  83.   #ifdef RS232_DUBEG
  84.   Serial.begin(9600);
  85.   #endif
  86.   
  87.   pinMode(PWM1_PIN,OUTPUT);
  88.   pinMode(PWM2_PIN,OUTPUT);
  89.   pinMode(NANO_LED,OUTPUT);
  90.   pinMode(AD_IN,INPUT);
  91.   
  92.   MsTimer2::set(1, Timer2Task); // 1ms
  93.   MsTimer2::start();
  94.   
  95.   
  96. }


  97. /*********************************************
  98. //主程序
  99. *********************************************/
  100. void loop()
  101. {
  102.   if ( _1msFlg)
  103.   {
  104.           #define _500MS_CNT    500
  105.           #define _100MS_CNT    100
  106.           static unsigned int ui500msCnt = _500MS_CNT;
  107.           static unsigned char uc100msCnt = _100MS_CNT;
  108.           unsigned char i;
  109.           
  110.      _1msFlg = 0;
  111.          
  112.          
  113.          if (--ui500msCnt == 0)
  114.          {
  115.                  ui500msCnt = _500MS_CNT;
  116.                  
  117.                  if (bBlinkSta)
  118.                  {
  119.                          bBlinkSta = 0;
  120.                          digitalWrite(NANO_LED,0);
  121.                  }
  122.                  else
  123.                  {
  124.                          bBlinkSta = 1;
  125.                          digitalWrite(NANO_LED,1);
  126.                  }
  127.                  
  128.                  uiAD_Value = analogRead(AD_IN);
  129.                 //ucPWM_Value = (unsigned char)(uiAD_Value >> 2);
  130.                 //analogWrite(PWM1_PIN,ucPWM_Value);                       
  131. ……………………

  132. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
AD_NTC.rar (2.2 KB, 下載次數: 125)





評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏5 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:510165 發表于 2019-4-12 09:35 | 只看該作者
NTC與AD采樣值對應表:http://www.zg4o1577.cn/bbs/dpj-156080-1.html
回復

使用道具 舉報

板凳
ID:14408 發表于 2019-5-14 15:04 | 只看該作者
謝謝你的資料,非常感謝!
回復

使用道具 舉報

地板
ID:586438 發表于 2019-8-6 16:55 | 只看該作者
前來學習  很需要這份資料。 非常感謝!
回復

使用道具 舉報

5#
ID:619565 發表于 2019-10-5 19:19 | 只看該作者
正好在學習這個
回復

使用道具 舉報

6#
ID:619565 發表于 2019-10-5 20:49 | 只看該作者
請問一下{100,0x41 },{101,0x3F },{102,0x3D },{103,0x3B },{104,0x3A },{105,0x38 },這種數據是怎么得出來的呢
假如我要得到200的數據應該是多少呢
回復

使用道具 舉報

7#
ID:234938 發表于 2020-1-14 23:24 | 只看該作者
先收藏了,將來應該可以用到;感謝樓主分享。
回復

使用道具 舉報

8#
ID:475084 發表于 2020-4-15 09:44 | 只看該作者
感謝up
回復

使用道具 舉報

9#
ID:846761 發表于 2020-11-25 21:45 | 只看該作者
有接線圖么
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美九九| 九九热在线精品视频 | 亚洲免费在线观看 | 中文字幕一区二区三区乱码在线 | 久久精品a | 日本男人天堂 | 免费国产视频在线观看 | 日韩黄色免费 | 2018中文字幕第一页 | 浮生影院免费观看中文版 | 97精品超碰一区二区三区 | 国产精品三级 | 9久久精品 | 羞羞的视频在线观看 | 国产剧情一区二区三区 | 91中文字幕 | 国产精品一区二区三区免费观看 | 欧美一区二区三区在线观看 | av综合站| 国产一区二区三区精品久久久 | 久久国产精品久久久久久久久久 | 欧美小视频在线观看 | 欧美性大战久久久久久久蜜臀 | 欧美日韩精品一区二区三区四区 | 国产一区电影 | 国产精品国产三级国产aⅴ无密码 | 99精品免费久久久久久久久日本 | 亚洲va在线va天堂va狼色在线 | 日日爱夜夜操 | 日日噜噜噜夜夜爽爽狠狠视频, | 日本天堂一区二区 | 91精品国产综合久久婷婷香蕉 | 黄色一级在线播放 | 在线不卡 | 91视频国产精品 | 久久免费看 | 91久久久久久久久久久久久 | 精品一区av | 亚洲一区二区在线免费观看 | 亚洲精品久久久久久一区二区 | 国产乱码精品一区二区三区中文 |