【项目4-任务4-小组09】用模拟温度传感器LM35实现温度测量

1.如何通过http://www.alldatasheetcn.com/网站检索LM35的datasheet(说明书)

2.如何对照datasheet来分辨LM35的引脚和了解工作原理

(1)引脚

底面视图



基本摄氏温度传感器(+2℃至+150℃)



全范围摄氏温度传感器

(2)工作原理

        温度传感器电路将测量到的温度信号转换成电压信号输出到信号放大电路,与温度值对应的电压信号经放大后输出至A/D转换电路,把电压信号转换成数字量送给单片机系统,单片机系统根据显示需要对数字量进行处理,再送温度显示系统进行显示。

        内部结构中有V15和V16是感温元件,这两个三极管的物理结构有着特定的要求,V15的发射结面积是V16发射结面积的10倍。它们的集电极负载电阻完全一致,如果流过这两个电阻的电流不同,V15和V16的集电极电压也不同,通过差分放大器放大,内阻也变化,那么流过R的电流也会变化,V+和V-之间的电压亦会改变,这个电压的变化量也就是随温度而变化的。

3.用万用表测量LM35电压输出引脚的电压并手动换算温度(不接Arduino的情况下,用万用表测量LM35输出引脚的电压并手动换算温度,改变LM35所处环境的温度,观察电压的变化)


不连电阻的情况下进行测量

换算公式公式:

(1)

0.28*1000/10=28℃

(2)

0.21*1000/10=21℃

(3)

0.02*1000/10=2℃

4.实现温度测量(Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码,map函数的用法)

(1)Fritzing绘制的电路图

(2)工作原理的说明


(3)注释源代码

int LM35 = A0; //指定A0端口读取LM35

float Vin; //存储传感器电压

float temperature; //存储温度测量结果

void setup()

{

Serial.begin(9600); //初始化串口连接

}

void loop()

{

Vin = analogRead(LM35) * 5.0 / 1024; //计算出A0的电压,单位为V

temperature = Vin * 1000.0 / 10.0; //将A0电压要转换成mV,根据LM35转换系数10mV/°C,除以10,得出温度

Serial.print("Temperature: "); //在串口监视器输出结果

Serial.print(temperature);

Serial.println(" *C");

delay(500); //延时0.5s

}

(4)map函数的用法

map(value, fromLow,fromHigh,toLow,toHigh)

value: 给map的值

fromLow: 值现在的下界

fromHigh: 值现在的上界

toLow: 值目标范围的下界

toHigh: 值目标范围的上界

把一个数从一个范围变换到另一个范围

不会把值强制限制在范围之内,因为超范围的值经常也是有用的。如果需要的范围做一限制。可以在这个函数之前或之后使用constrain()函数。

•注意,两个范围中的“下界”要比“上界”大或下,这样map()可以用来反转一个范围,例如y = map(x, 1, 50, 50, 1);

•函数也可以处理负数,例如y = map(x, 1, 50, 50, -100);

map()函数使用整型,所以不会产生分数,分数将会被截去,并不是全面的或平均值

•Example

void setup() {}

void loop()

{

int val = analogRead(0);     //读取0口的值

val =map(val, 0,1023, 0, 255);    //从0-1023映射到0-255

analogWrite(9, val);      //把映射后的值写给9口

}

你可能感兴趣的:(【项目4-任务4-小组09】用模拟温度传感器LM35实现温度测量)