本文转载自:http://www.stduino.com/forum.php?mod=viewthread&tid=27&extra=page%3D1=
关键词:
51、stm32、arduino、stduino、单片机、stduino UNO&Nano、热敏电阻模块
说明:
热敏电阻按照温度系数不同,可以分为正温度热敏电阻器(PTC)和负温度热敏电阻器(NTC)。
热敏电阻典型特点是对温度敏感,不同的温度下表现出不同的电阻值,因此其两端电压随温度变化。正温度系数热敏电阻器(PTC)在温度越高时电阻值越大,负温度系数热敏电阻器(NTC)在温度越高时电阻值越低。
NTC的电阻随温度的变化,可以利用Steinhart-Hart方程来表示:
1/T = A + B•ln® + C•[ln®]
注意:T 为热力学温度,单位为开尔文(k);R 为电阻,单位是欧姆(Ω)。
热力学温度与摄氏温度(t,单位为摄氏度,℃)存在这样的关系:
t=T +273.15
则可知,当前温度(Tsteinhart)的计算公式在C语言中的表达为:
Tsteinhart = 1/(A+Blog(Rth)+Cpow(log(Rth),3))-273.15
这里: T 为绝对温度K(开尔文温度),R 单位是欧姆。
其中系数A\B\C由热敏电阻本身性质决定,本模块采用103电阻(10KΩ),其A\B\C分别为:0.001129148;0.000234125;0.00000008760741。
至于热敏电阻的当前阻值,需要利用欧姆定律来计算。A0测得的是其分压,则有
A0的范围为0~4095,而V总为5V,定值电阻R0为10KΩ,若A0测得数值为RawADC,则可得:
实验目的:
利用热敏电阻器,监测环境温度变化。
实验器材:
Stduino Uno/Nano;热敏电阻模块。
#include
double Thermister(int RawADC)
{
double Temp;
Temp = log((40960000/RawADC)-10000);
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp);
Temp = Temp - 273.15;
return Temp;
}
void setup()
{
pinMode(A0,INPUT_ANALOG);
Serial.begin(9600);
}
void loop()
{
Serial.print("当前温度:");
Serial.print(Thermister(analogRead(A0)));
Serial.println("c");
delay(500);
}