找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

NTC熱敏電阻測(cè)溫的Proteus仿真與Arduino源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:149389 發(fā)表于 2018-5-25 20:51 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)




arduino源碼:
  1. /*********************************************************
  2. *         Rt= 10K                RES=4700
  3. *   GND----/\/\/\/\----/\/\/\/\----VCC=5V
  4. * Rt = R *EXP(B*(1/T1-1/T2))
  5. * 對(duì)上面的公式解釋如下:
  6. *
  7. * 1.Rt 是熱敏電阻在T1溫度下的阻值;
  8. * 2.R是熱敏電阻在T2常溫下的標(biāo)稱(chēng)阻值;
  9. * 3.B值是熱敏電阻的重要參數(shù);
  10. * 4.EXP是e的n次方;
  11. * 5.這里T1和T2指的是K度即開(kāi)爾文溫度,K度=273.15(絕對(duì)溫度)+攝氏度;
  12. *********************************************************/

  13. #include <math.h>
  14. #define RES 4700
  15. #include <Wire.h>
  16. #include <LiquidCrystal_I2C.h>
  17. LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

  18. double Water_temp;
  19. void setup(){
  20.   Serial.begin(9600);
  21.   lcd.init();                      // initialize the lcd
  22.   // Print a message to the LCD.
  23.   lcd.backlight();

  24.   lcd.clear();
  25.   lcd.setCursor(0, 0);
  26.   lcd.print("Temperature ");
  27. }



  28. void loop(){
  29.   double AD_val=analogRead(0);        //0-1023的范圍

  30.   double GetVoltage=(AD_val/1023)*5.0;        //采樣電壓值

  31.   // 歐姆定律 Rt/RES=GetVoltage/(5.0-GetVoltage),電流一致

  32.   double Rt=GetVoltage*RES/(5.0-GetVoltage);
  33.   //熱力學(xué)絕對(duì)溫度
  34.   //T1=1/(ln(Rt/R) /B + 1/T2   )
  35.   // Serial.println( 1/(  log(Rt/RES) /3000 + 1/(25+273.15)   ));
  36.   Water_temp=1/(log(Rt/10000) /3950 + 1/(25+273.15))-273.15;
  37.   if(Water_temp>-100.0)
  38.   {

  39.     Serial.print("RES= ");
  40.     Serial.print(RES);
  41.     Serial.print(" RT=  :");
  42.     Serial.println(Rt);
  43.     Serial.print("The temperature is :");  
  44.     Serial.print(Water_temp);
  45.     Serial.println(" ~C");

  46.     lcd.setCursor(0, 1);
  47.     lcd.print("T1=");
  48.     lcd.print(Water_temp);
  49.     lcd.print("  ");
  50.   }
  51.   else
  52.   {
  53.     Serial.println("Error! check sensor!");
  54.   }
  55.   delay(1000);
  56. }

復(fù)制代碼
全部資料51hei下載地址:
NTC測(cè)溫實(shí)驗(yàn).rar (37.16 KB, 下載次數(shù): 176)

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:361231 發(fā)表于 2019-5-18 01:09 | 只看該作者
樓主方便把.hex文件摘出來(lái)么
回復(fù)

使用道具 舉報(bào)

板凳
ID:149389 發(fā)表于 2019-5-18 14:15 | 只看該作者
doudoudou123 發(fā)表于 2019-5-18 01:09
樓主方便把.hex文件摘出來(lái)么

你要的HEX文件, NTC.rar (8.13 KB, 下載次數(shù): 32)
回復(fù)

使用道具 舉報(bào)

地板
ID:361231 發(fā)表于 2019-5-19 18:02 | 只看該作者

謝謝啦,不過(guò)我昨天安裝了Aduino,自己摘出來(lái)了
回復(fù)

使用道具 舉報(bào)

5#
ID:619565 發(fā)表于 2019-10-5 20:44 | 只看該作者
arduino uno可以用嗎?剛學(xué)這個(gè)
回復(fù)

使用道具 舉報(bào)

6#
ID:640409 發(fā)表于 2019-11-12 14:32 | 只看該作者
NTC 10K   arduino +1602顯示模塊,可以正常顯示工作
回復(fù)

使用道具 舉報(bào)

7#
ID:566448 發(fā)表于 2020-3-3 20:32 | 只看該作者
樓主你的proteus工程打不開(kāi)啊 我用的pro8
回復(fù)

使用道具 舉報(bào)

8#
ID:566448 發(fā)表于 2020-3-3 21:14 | 只看該作者
樓主,求proteus的keil源工程文件,tks
回復(fù)

使用道具 舉報(bào)

9#
ID:725882 發(fā)表于 2020-4-9 22:30 | 只看該作者
請(qǐng)問(wèn)我下載了以后 打不開(kāi)仿真怎么辦
回復(fù)

使用道具 舉報(bào)

10#
ID:725882 發(fā)表于 2020-4-9 22:34 | 只看該作者
怎么打開(kāi)仿真啊
回復(fù)

使用道具 舉報(bào)

11#
ID:725882 發(fā)表于 2020-4-10 08:17 | 只看該作者
樓主 怎么打開(kāi)仿真啊 我下載了壓縮包 打不開(kāi)里面的仿真
回復(fù)

使用道具 舉報(bào)

12#
ID:508488 發(fā)表于 2025-5-19 11:56 | 只看該作者
可以同時(shí)輸出的代碼,用跑馬燈代替輸出
回復(fù)

使用道具 舉報(bào)

13#
ID:508488 發(fā)表于 2025-5-19 11:57 | 只看該作者
可以輸出的代碼,跑馬燈代表輸出
#include <math.h>         //包含數(shù)學(xué)庫(kù)
//熔絲位配置如下:
//外置晶體 16MH 主頻 低位 9F 高位 C9
//外置晶體 12MH 主頻 低位 9F 高位 C9
//內(nèi)置RC  8MH  主頻 低位 D4   高位 C9


// 定義跑馬燈編號(hào):

int LED0=6;//定義數(shù)字接口8為跑馬燈電源
int LED1=5;// 定義數(shù)字接口為1號(hào)跑馬燈
int LED2=10;// 定義數(shù)字接口為2號(hào)跑馬燈
int LED3=11;// 定義數(shù)字接口為3號(hào)跑馬燈
int LED4=12;// 定義數(shù)字接口為4號(hào)跑馬燈
int LED5=13;// 定義數(shù)字接口為5號(hào)跑馬燈
int LED6=14;// 定義數(shù)字接口為6號(hào)跑馬燈
int LED7=15;// 定義數(shù)字接口為7號(hào)跑馬燈
int LED8=0;// 定義數(shù)字接口為8號(hào)跑馬燈
int LED9=1;// 定義數(shù)字接口為9號(hào)跑馬燈
int LED10=16;// 定義數(shù)字接口2為10號(hào)跑馬燈
int LED11=3;// 定義數(shù)字接口3為11號(hào)跑馬燈
int LED12=4;// 定義數(shù)字接口4為12號(hào)跑馬燈

unsigned long time; //定義變量 time 類(lèi)型

void setup()
{

int i; //定義變量
for(i=0;i<=21;i++)
pinMode(i,OUTPUT);  //設(shè)置0~21 引腳為輸出模式

int j;
for(j=0;j<=21;j++){  //全滅
digitalWrite(j,1);   
  }

digitalWrite(LED0,LOW); //開(kāi)啟電源

}


// 使用循環(huán)函數(shù)重復(fù)運(yùn)行
void loop() {
Serial.begin(115200); // 打開(kāi)串口,設(shè)置速率為115200 bps 注:開(kāi)啟串口,會(huì)使 0 和 1 號(hào)邏輯端口失效(7、8號(hào)跑馬燈不亮),原因不名!
/*
Serial.print("程序已運(yùn)行");
time = millis();  // 賦值運(yùn)行時(shí)間給變量time
Serial.print(time/1000); // 輸出程序運(yùn)行時(shí)間
Serial.println("秒");
Serial.end(); // 關(guān)閉串口

delay(10000); // 等待10秒

digitalWrite(LED1,LOW); // 第一個(gè)跑馬燈亮
digitalWrite(LED2,0); //第二個(gè)跑馬燈亮
digitalWrite(LED3,0); //第三個(gè)跑馬燈亮
digitalWrite(LED4,0); //第四個(gè)跑馬燈亮
digitalWrite(LED5,0); //第五個(gè)跑馬燈亮
digitalWrite(LED6,0); //第六個(gè)跑馬燈亮
digitalWrite(LED7,0); //第七個(gè)跑馬燈亮
digitalWrite(LED8,0); //第八個(gè)跑馬燈亮
digitalWrite(LED9,0); //第九個(gè)跑馬燈亮
digitalWrite(LED10,0); //第十個(gè)跑馬燈亮
digitalWrite(LED11,0); //第十一個(gè)跑馬燈亮
digitalWrite(LED12,0); //第十二個(gè)跑馬燈亮

delay(5000); // 等待5秒

digitalWrite(LED1,HIGH); //第一個(gè)跑馬燈滅
digitalWrite(LED2,1); //第二個(gè)跑馬燈滅
digitalWrite(LED3,1); //第三個(gè)跑馬燈滅
digitalWrite(LED4,1); //第四個(gè)跑馬燈滅
digitalWrite(LED5,1); //第五個(gè)跑馬燈滅
digitalWrite(LED6,1); //第六個(gè)跑馬燈滅
digitalWrite(LED7,1); //第七個(gè)跑馬燈滅
digitalWrite(LED8,1); //第八個(gè)跑馬燈滅
digitalWrite(LED9,1); //第九個(gè)跑馬燈滅
digitalWrite(LED10,1); //第十個(gè)跑馬燈滅
digitalWrite(LED11,1); //第十一個(gè)跑馬燈滅
digitalWrite(LED12,1); //第十二個(gè)跑馬燈滅
*/
// if (Serial.available() > 0)  { // 只在收到數(shù)據(jù)時(shí)發(fā)送數(shù)據(jù)
   
double Digital_Value=analogRead(0);   //讀取串聯(lián)電阻上的電壓值(數(shù)字量)
double Voltage_Value=(Digital_Value/1023)*5.00;//換算成模擬量的電壓值
double Rt_Value=(3.3-Voltage_Value)/Voltage_Value*100;  //計(jì)算出熱敏電阻的阻值
Serial.println(1/(log(Rt_Value/10)/3000 + 1/( 25 + 273.15)) - 273.15,2); //計(jì)算所感知的溫度并發(fā)送到串口
Serial.print("\t\r\n"); //\t是制表,\r\n 回車(chē)換行
Serial.println("ok");
Serial.print("\t\r\n"); //\t是制表,\r\n 回車(chē)換行
delay(10000);   //十秒刷新一次
//  }
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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