这次我们使用片内ADC和温度传感器LM35实现温度测量,并且串口输出温度值。
LM35是NS公司生产的集成电路温度传感器系列产品之一,具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度成线性比例。【文献1】我们正是利用温度与电压的线性关系,通过测量输出电压来实现温度的测量。
LM35的TO-92封装底视如图1所示,引脚介绍: ①正电源Vcc;②输出;③输出地/电源地。
我们在上一节串口电压表的基础上,添加LM35温度传感器,在元器件搜索栏中输入“LM35”,并添加至元器件选择栏中,如图2所示。修改后的Arduino UNO实验板如图3所示。
Arduino UNO的ADC为10位,默认参考电压为5V,则可分辨的最小变化量为0.00488V,约为0.005V,可以满足LM35每摄氏度输出电压的变化值的测量。
Arduino软件设计,只需要加一条语句,以实现电压值转换至温度值。因为0.01V的电压变化值对应于1℃的温度变化值,所以只需要将原来的电压值乘以100即可实现。此处采用偷懒的办法,直接在原来乘以5.00改为乘以500即可。
Arduino程序程序清单:
int sensorValue=0;//AD转换后的数字量
float float_sensorValue;//把10位数字量换算成浮点电压量
void setup() {
}
void loop() {
}
编译成功之后,导入proteus仿真软件。通过调节LM35的温度值,可以看到输出的电压和温度的关系,以及串口输出的温度值。温度为0℃、25℃、50℃和100℃的仿真图如图4、5、6、7所示。
由温度为0℃、25℃、50℃和100℃的仿真图可以看出,LM35的测温精度约为0.5℃,100℃时的精度为0.7℃,一方面是LM35自身的精度决定了,另一方便也可能是仿真得不准确性,但是LM35能够满足1℃的测量的要求。
当然,还可以利用标准传感器对LM35进行系数修正,提高其测量精度。
最后奉上Proteus仿真视频。