工程师在开发项目,如果遇到温度的采集,一般是怎么处理的呢?

温度采集?那肯定需要用到温度传感器啊,这还要讲啊,真是无语~~~

对的,是要用到温度传感器。只是温度传感器,你能想到有几种类型呢?

是NTC热敏电阻?还是PTC热敏电阻?还是DS18B20温度传感器?

NTC热敏电阻,它是一种模拟量的温度传感器,它利用的是热敏电阻的阻值与温度的关系,温度越高,电阻的阻值反而越小。

PTC热敏电阻,与NTC热敏电阻是类似的,只是温度越高,PTC热敏电阻的阻值也会越高。

而DS18B20温度传感器,它是一种数字接口的温度传感器,采集到的温度信号是通过单总线的形式向外输出的。

这三种类型的温度传感器都是可以在电路中测量温度的,是没有问题的。除了这三种类型,芯片哥这几天在做一个关于温度的项目,在方案设计上就用了另外一种类型。

ZNI1000芯片

ZNI1000芯片,它也是一种温度传感器。之所以把它叫做“芯片”,是因为它的封装尺寸外形长得像一个芯片,是一个SOT-23的封装。

as358m芯片引脚电压(测量温度的电路方案)(1)

ZNI1000芯片封装外形

如果用它来测量温度,在电路上是可以把它当做PTC热敏电阻的,它也是一种电阻类型的,输出的阻值与温度是成“正比例”关系的。

温度越高,阻值越大。工程师就是通过电路检测它的阻值,就能测量出它的温度值。

as358m芯片引脚电压(测量温度的电路方案)(2)

ZNI1000芯片

OK,ZNI1000芯片虽然是SOT-23封装,有3个引脚,但它的Pin1和Pin2是功能相同的。于是,在电路中,我们就可以把它等效画成一个“电阻”了。

硬件电路

如何用这个ZNI1000芯片来采集温度呢?

因为它的原理是和PTC热敏电阻类似的,所以在硬件电路上,也是和工程师熟悉的PTC热敏电阻测量温度的电路是一样的。

as358m芯片引脚电压(测量温度的电路方案)(3)

ZNI1000芯片应用电路

只需要接一个上拉电阻1.5K,与ZNI1000芯片的电阻构成一个分压电路,再接上一个104/50V的滤波电容,就OK了。

单片机只需要读取分压电路的电压就能测量出它的温度了。

可能有工程师发出疑问,为什么上拉电阻R1的阻值是1.5K?

这是因为,在温度为0℃~100℃的时候,ZNI1000芯片的阻值是1K~1.6K。为了更好地进行分压,也为了更好地被单片机ADC采集读取到,才选了一个1.5K的上拉电阻。

软件开发

有了硬件电路,工程师就可以对它进行软件代码的开发了。

软件上,单片机读到ADC采集的电压,就可以通过分压电路计算出ZNI1000芯片的电阻阻值。问题是,知道阻值,如何去计算它测量的温度值呢?

这是代码程序开发的一个关键性问题。

就ZNI1000芯片,它测量的温度与输出的阻值,有一个对应关系,可以表示为

R = R0 * (1 A*T B*T*T C*T*T*T*T D*T*T*T*T*T*T)

其中R是输出的阻值,R0是ZNI1000芯片在0℃输出的阻值,是一个固定值1K,式子中的ABCD也都是一个固定值。

as358m芯片引脚电压(测量温度的电路方案)(4)

关系式与R0ABCD的固定值

这样计算是不是有些复杂,而且单片机处理起来这些数据也有些难度。这怎么办呢?软件上有什么其他的办法吗?

可以使用它的阻值---温度曲线

as358m芯片引脚电压(测量温度的电路方案)(5)

阻值---温度曲线

在这个曲线中,横坐标是测量的温度,纵坐标是ZNI1000芯片输出的阻值。是不是近似地可以把它看成一条直线呢?

在误差允许的范围内,这样做是可以行,能大大减轻软件的开发工作量。如果把它看成一条直线,也就是温度和阻值的关系,是呈线性比例关系的。

这样,是不是就能计算出它测量的温度值呢?哈哈哈哈~~~

当然,除了这个方法,还可以在软件上用查表法来测量温度。通过将每个温度与阻值的对应关系提前存放在EEPROM中或者是Flash中,然后利用单片机的ADC采集读到的电压,计算出它的阻值,再通过查表法,去计算它的温度。

是不是也可以呢?

请持续关注【芯片哥】,后面会定期更新有关于电子元器件和芯片,包括一些电子产品项目开发案例的相关内容。

,