用arduino和热敏电阻做电子体温计

来源:互联网 发布:win10禁止卸载软件 编辑:程序博客网 时间:2024/04/29 05:39
由于需要做一个睡眠质量监测的小东西(体温+三轴),所以需要测量体温,然而把电路搭好之后才发现ds18b20根本就不能测体温。。也是醉。。而且普通的热敏电阻也干不了这活。

因此又买了专门测体温的热敏电阻,某宝上有,型号是MEB-503E-3950

具体参数的解释可以参考这篇文章:
http://blog.sina.com.cn/s/blog_6182b82201012ii1.html

热敏电阻计算公式 Rt = R *EXP(B*(1/T1-1/T2)) 对上式解释如下: 
(具体可以参考百度,很多的)

1.        Rt 是热敏电阻在T1温度下的阻值; 

2.        R是热敏电阻在T2常温下的标称阻值; 

3.        B值是热敏电阻的重要参数; 

4.        EXP是e的n次方; 

5.        这里T1和T2指的是K度即开尔文温度,K度=273.15(绝对温度)+摄氏度; 


例如我手头有一个 MF58502F327型号的热敏电阻 

MF58—— 型号玻璃封装 

502 —— 常温25度的标称阻值为5K 

F —— 允许偏差为±1% 

327 —— B值为3270K的NTC热敏电阻 


而我买的型号是MEB-503E-3950因此它的

常温下阻值R1=50*10^3=50k欧;

常温T12=273.15+25=298.15;

参数B=3950;

       这时候代入T1温度就可以求出相应温度下热敏电阻的阻值,注意温度单位的转换,摄氏度与开尔文。

 

至于热敏电阻的用法,其实就是串联一个阻值和它差不多(最好)的电阻,从而通过分压比确定热敏电阻的阻值,从而确定测量温度(详情可百度,很多的),下面只给出电路和代码:

我是用的arduino UNO的开发板,电路接法如下:

代码如下:
/* * 热敏电阻的型号是MEB-503E-3950 * 常温25摄氏度(298.15K)下阻值为50k欧*/#include<math.h>const float voltagePower=3.3;const float Rs=21.5;//采样电阻为21.5千欧const int B=3950;const double T1=273.15+25;//常温const double R1=50;//常温对应的阻值,注意单位是千欧void setup() {  Serial.begin(9600);}void loop() {    //获得A1处的电压值  double digitalValue=analogRead(1);  double voltageValue=(digitalValue/1023)*5;  Serial.print("Current voltage value=");  Serial.println(voltageValue);    //通过分压比获得热敏电阻的阻值  double Rt=((voltagePower-voltageValue)*Rs)/voltageValue;  Serial.print("Current registor value=");  Serial.println(Rt);  //换算得到温度值  Serial.print("Current temperature value=");  Serial.println(((T1*B)/(B+T1*log(Rt/R1)))-273.15);//  Serial.println();    //每3秒输出,更改此处修改频率  delay(3000);  }


可看到输出如下


注:如果需要精确的测量,还要考虑购买的热敏电阻档位以及误差率等等(数据手册),本人只是简单做个原型,所以参考的童鞋注意啦

2 0