热电偶放大电路 热电偶放大器

温度是我们经常接触到的物理量,可以被我们直观的感受到。比如天气冷的时候要加衣服,吃的东西太热了要吹。同时,我们还需要精确地测量温度。比如人类的正常体温是37.5℃,纯水在一个大气压下沸腾时的温度是100℃,这就需要我们做实验找出规律。下面我们将详细解释几种常用的温度。

温度传感器,使用Arduino测量温度,包括热敏电阻、LM35、DS18B20、DHT11和热电偶。

1.热敏电阻1.1 热敏电阻简介

热敏电阻是一种半导体传感器,其电阻值随温度而变化。它的典型特点是电阻值对温度非常敏感,在不同的温度下会显示出不同的电阻值,所以可以根据显示的电阻值可逆地推导出环境温度值。它具有灵敏度高、体积小、热容量小、响应快、价格低等优点。根据温度系数不同,可分为正温度系数热敏电阻(PTC)、负温度系数热敏电阻(NTC)和临界负温度系数热敏电阻(CTR)。随着温度的升高,PTC表现出更大的电阻;随着温度的升高,NTC表现出较低的电阻;CTR有负阻突变。在一定温度下,电阻值随温度升高而急剧下降,具有较大的负温度系数。由于特性不同,热敏电阻有不同的用途。PTC一般用作发热元件和过热保护;NTC一般用于温度测量和温度补偿;CTR通常用于温度控制和报警等应用。NTC的测温范围为-60 ~+300℃,标称电阻一般在100MΩ之间。使用精密电阻和热敏电阻的组合可以扩大温度测量的线性范围。图1是NTC的物理图,示出了NTC 10D-9和NTC 5D-7。NTC代表负温度系数热敏电阻,10D-9和5D-7代表其型号,10D-9代表室温(25摄氏度)下电阻为10欧姆,直径为9毫米,5D-7代表室温(25摄氏度)下电阻为5欧姆,直径为7毫米..除了图1所示的形状之外,热敏电阻制成的探针还可以是珠状、棒状、片状、薄膜状等。,包装外壳为玻璃、镍、不锈钢管的套管结构,如图2所示。

热电偶放大电路 热电偶放大器插图

图1 NTC实物图图1 NTC物理图

1.2如何使用NTC NTC的被测温度与其电阻值之间存在非线性的已知关系,因此也可以通过测量NTC的电阻值来计算出被测温度值。NTC的电阻值与温度值之间的关系如下:

Rt = R x e^[B x (1/T1-1/T2)]

其中Rt是热敏电阻在T1温度下的电阻值;r为T2常温下热敏电阻的标称电阻值;b值是热敏电阻的重要参数;T1和T2是指开尔文温度,单位为度K =273.15(绝对温度)+摄氏度。

通过逆向计算获得的热敏电阻的温度值和电阻值之间的关系如下:

T1=1/(ln(Rt/R) /B 1/T2)

一般来说,电阻值的测量是将已知阻值的电阻串联起来,施加一个已知大小的电压,通过测量已知阻值的电阻的分压值,计算出被测电阻的电阻值,如图3所示。设施加的激励电压为Eb,热敏电阻的阻值为Rt,串联电阻的阻值为Rs,则串联电阻的分压值为:

Eout = Eb x Rs/(Rt Rs)

除了串联测量法,还有惠斯通电桥测量法,如图4所示。设电桥的激励电压为Eb,热敏电阻的阻值为Rt,电桥电阻的阻值为R1、R2和R3,则电桥的输出电压为:

out = Eb x R3/(Rt R3)-Eb x R2/(R1 R2)= Eb x[R3/(Rt R3)-R2/(R1 R2)]

1.3使用示例(1)硬件连接

这里采用串联测量法实现热敏电阻测量实验。硬件连接图如图5所示。热敏电阻为NTC 10D-9,串联电阻的阻值为100ω。

(2)编程

程序设计的主要思想:Arduino Uno控制器通过模拟输入口测量串联电阻的电压值,然后通过均流原理计算热敏电阻的电阻值,最后通过公式计算出温度值。

# include & ltmath.h & gt//包含数学库void setup(){ serial . begin(9600);//波特率设置为9600 } void loop(){ double digital _ value = analog read(0);//读取串联电阻上的电压值(数字值)(double voltage _ value =(digital _ value/1023)* 5.00;//电压值转换成模拟双精度RT _ value =(3.3-电压_ value)/电压_ value * 100//计算热敏电阻的阻值//计算感应到的温度并发送给serial . println(1/(log(rt _ value/10)/3000 1/(25 273.15))-273.15,2);延时(1000);//一秒刷新一次}2 LM35LM35是美国NS(国家半导体)生产的模拟温度传感器。其输出电压与摄氏度温度成线性比例。0℃时输出0V,温度每升高1℃,输出电压增加10mV。温度范围为-55℃ ~ 150℃,精度为0.75℃,室温下精度可达0.25℃。常用TO-92封装的引脚排列如图6所示,2℃ ~ 150℃温度测量范围内的典型应用电路如图7所示。

2.3使用示例(1)硬件连接
将LM35模拟温度传感器的Vs和GND分别连接到Arduino Uno控制器的5V和GND,为LM35提供工作电源,LM35的Vout引脚连接到Arduino Uno控制器的模拟输入端口A0,如图8所示。

2)编程

程序设计的主要思想:Arduino Uno控制器通过模拟输入口测量LM35输出的电压值,然后通过10mV/℃的比例系数计算出温度值。同时,在100℃时,LM35的输出电压为1000mV,在Arduino Uno控制器的内部基准电压范围内,因此采用1.1V的内部基准电压。

int Digital _ Value = 0;float temp _ Value = 0;void setup(){ serial . begin(9600);//波特率设置为9600//由于温度范围为0 ~ 100℃,输出电压为0 ~ 1V,所以采用内部1.1V基准电压analog reference(INTERNAL);} void loop(){ Digital _ Value = analog read(A0);//读取电压值(数字量)temp _ value =(float)digital _ value/1023 * 110.00;//转换为摄氏温度serial . print(& # 34;LM35的温度为:& # 34;);Serial.println(temp_Value,2);//发送温度数据延时(1000);//每秒刷新一次}3)实验演示
实际实验硬件连接图如图9所示,串口接收的温度数据如图10所示。

3 DS18B203.1 DS18B20简介DS18B20是美国达拉斯半导体公司的数字单总线智能温度传感器。与传统热敏电阻相比,它可以直接读取被测温度,并可以根据实际要求通过简单编程实现9 ~ 12位数字值的读取方式。从DS18B20中读取或写入信息只需要一条线(单总线)进行读写,总线本身也可以为连接的设备供电,不需要额外供电。

DS18B20的性能特征如下:

(1)单线接口实现双向通信;
(2)电源电压范围:3.0V~ 5.5V,可通过数据线供电;
(3)测温范围:-55 ~ 125℃,固有测温分辨率0.5℃;
(4)通过编程可以实现9 ~ 12位的数字阅读模式;
(5)支持多点组网功能,可以在唯一的单条总线上并联多个DS18B20,实现多点测温。

DS18B20的外形和引脚排列如图11所示。DS18B20的管脚定义如下:(1)DQ是数字信号输入/输出端;(2)GND是权力基础;(3)VDD为外部电源的输入端(寄生电源连接方式接地)。

3.2 DS18B20的编程及库Arduino的使用要实现ds18b 20的操作,需要两个库文件,OneWire和Dallas温控。下载地址是:http://playground.arduino.cc/Learning/OneWire和https://github . com/miles Burton/arduino-temperature-control-library。达拉斯温控函数库是基于OneWire函数库开发的,使用起来更加方便。下面解释主要函数的功能和用法。

(1) void begin(void):初始化,无输入参数,无返回参数。
(2) getDeviceCount(void):获取单条总线上连接的设备总数,无输入参数,返回参数为设备数量。
(3) validAddress(uint8_t*):验证指定地址的设备是否存在,输入参数为设备地址,返回参数为Boolean。
(4) getAddress(uint8_t*,const uint8_t):被验证设备的地址是否与索引值匹配,输入参数为设备地址和索引值,返回参数为布尔值。
(5)Get resolution(uint 8 _ t *):获取指定设备的精度,输入参数为设备地址,返回参数为精度位数。
(6)设置分辨率(uint8_t *,uint8_t):设置设备的精度。输入参数是设备地址和精度数字,没有返回参数。有9、10、11和12位精确数字可供选择。
(7)请求温度(void):向单条总线上的所有设备发送温度转换请求,没有输入参数,也没有返回参数。
(8)Request temperatures by address(uint 8 _ t *):向单总线上指定地址的设备发送温度转换请求,输入参数为设备地址,无返回参数。
(9)requesttemperatureindex(uint 8 _ t):向单总线上指定索引值的设备发送温度转换请求,输入参数为设备索引值,无返回参数。
(10) getTempC(uint8_t*):从设备地址获取摄氏温度,输入参数是设备地址,返回参数是摄氏温度。
(11) getTempF(uint8_t*):通过设备地址获取华氏温度,设备地址作为输入参数,华氏温度作为返回参数。
(12)gettempcbbyindex(uint 8 _ t):通过索引值获取摄氏温度,输入参数为设备索引值,返回参数为摄氏温度。
(13)gettempfbbyindex(uint 8 _ t):通过设备索引值获取华氏温度,输入参数为设备索引值,返回参数为华氏温度。

3.3 使用实例

由于单条总线上可以连接多个DS18B20,不占用Arduino控制器的IO口,因此很容易实现多点测温。下面举两个例子来说明DS18B20和Arduino的用法。

3.3.1 一路温度测量

(1)硬件连接

将DS18B20温度传感器的VCC和GND分别接到Arduino Uno控制器的5V和GND上,为DS18B20供电。DS18B20的DQ引脚连接到Arduino Uno控制器的数字引脚D2,并联一个4.7 kω的上拉电阻,如图12所示。

(2)编程编程主要思路:Arduino Uno控制器可以通过DallasTemperature函数库启动单总线,发送测温请求,读取传感器0的温度,最后通过串口发送。

# include & ltLiquidCrystal.h & gt# include & ltDallasTemperature.h & gt# include & ltOneWire.h & gt#定义ONE_WIRE_BUS 2 //定义单总线连接的端口ONE WIRE ONE WIRE(ONE _ WIRE _ BUS);达拉斯温度传感器(& amponeWire);void setup(void){ serial . begin(9600);serial . println(& # 34;达拉斯温度IC控制库演示& # 34;);sensors . begin();//启动单总线} void loop(void){ serial . print(& # 34;请求温度…");sensors . request temperatures();//发送测温请求命令serial . println(& # 34;完成& # 34;);serial . print(& # 34;设备1(指数0)的温度为:& # 34;);serial . print(sensors . gettempcbyindex(0));//获取0号传感器的温度数据并发送给serial . println(& # 34;℃");延时(1000);//一秒刷新一次}3.3.2多路温度测量(1)硬件连接
将两个DS18B20温度传感器的VCC和GND分别连接到ArduinoUno控制器的5V和GND,为两个DS18B20提供电源。两个DS18B20的DQ引脚连接到Arduino Uno控制器的数字引脚D2,4.7kΩ的上拉电阻并联,如图13所示。

(2)编程
编程主要思路:Arduino Uno控制器可以启动单总线,发送测温请求,通过DallasTemperature函数库读取0号传感器的温度并通过串口发送,读取1号传感器的温度并通过串口发送。

# include & ltLiquidCrystal.h & gt# include & ltDallasTemperature.h & gt# include & ltOneWire.h & gt#定义ONE_WIRE_BUS 2 //定义单总线连接端口ONE WIRE ONE WIRE(ONE _ WIRE _ BUS);达拉斯温度传感器(& amponeWire);void setup(void){ serial . begin(9600);serial . println(& # 34;达拉斯温度IC控制库演示& # 34;);sensors . begin();//启动单总线} void loop(void){ serial . print(& # 34;请求温度…");sensors . request temperatures();//发送测温请求命令serial . println(& # 34;完成& # 34;);serial . print(& # 34;设备1(指数0)的温度为:& # 34;);serial . println(sensors . gettempcbyindex(0));//获取0号传感器的温度数据并发送给serial . print(& # 34;设备2(指数0)的温度为:& # 34;);serial . println(sensors . gettempcbyindex(1));//获取1号传感器的温度数据并发送}3.3.2实验演示单通道实验的实际硬件连接图如图14所示,单通道和双通道实验中串口接收的温度数据分别如图15和16所示。

4 DHT114.1 DHT11简介DHT11是一款带校准数字信号输出的温湿度复合传感器。它采用特殊的数字模块采集技术和温湿度传感技术,具有极高的可靠性和优异的长期稳定性。它包含一个电阻式湿度传感器和一个NTC温度传感器。DHT11传感器已经在实验室进行了标定,标定系数以程序的形式存储在OTP存储器中。这些校准系数要在传感器内部检测信号的过程中调用,采用单线串行接口,使得系统集成简单快捷。超小的体积,极低的功耗,信号传输距离可以达到20米以上。DHT11数字温湿度传感器的物理框图如图17所示。

DHT11的引脚描述如表1所示。电源电压为3.3 ~ 5V,测量范围为湿度20 ~ 90% RH,温度0 ~ 50℃,测量精度为湿度±5% RH,温度±2℃,测量分辨率为湿度±1% RH,温度±1℃。

4.2 DH11编程与库的使用

DHT11的Arduino库文件下载地址:https://github.com/markruys/arduino-DHT. DHT 11库文件有以下函数:dht.setup(int Pin)、DHT . get weather()和dht.getTemperature()。

Dht.setup(int Pin):设置DHT11总线的连接管脚号,输入参数为连接的管脚号,无返回参数。

DHT . get weather():获取DHT11的湿度值,无输入参数,返回值为湿度值,double类型。

Dht.getTemperature():获取DHT11的温度值,无输入参数,返回值为温度值,双精度类型。

4.3 使用实例

下面的DHT11模块用来测量温度和湿度,并通过串口输出。(1)硬件连接:将DHT11温湿度传感器的VCC和GND分别连接到ArduinoUno控制器的5V和GND,为DHT11供电。DHT11模块的DOUT引脚连接到Arduino Uno控制器的数字引脚D2,并联一个5kω的上拉电阻。DHT11模块的NC引脚也连接到GND,如图18所示。

(2)编程的主要思想:Arduino Uno控制器通过DHT11函数库获取湿度和温度数据,并通过串口发送出去。

#包括& # 34;DHT.h & # 34DHT dhtvoid setup(){ serial . begin(9600);DHT . setup(2);//数据引脚2 delay(1000);} void loop(){浮点温度= DHT . gettemperature();浮点湿度= DHT . get weather();serial . print(& # 34;温度是& # 34;);Serial.print(温度,1);serial . println(& # 34;C & # 34);serial . print(& # 34;湿度是& # 34;);Serial.print(湿度,1);serial . println(& # 34;%");延时(3000);(3)实验演示实验中串口接收到的温湿度数据如下图所示。

5热电偶5.1热电偶与MAX6675简介两个不同材料制成的导体或半导体A、B焊接成一个闭合回路。当导体A和B的两个连接点1和2之间存在温差时,它们之间会产生电动势,从而在回路中形成回路电流。这种现象叫做热电效应,这个电动势叫做热电势。热电效应的示意图如图21所示。

热电偶是利用热电原理来测量温度的,其中直接用来测量介质温度的一端称为工作端(也叫测量端),另一端称为冷端(也叫补偿端)。其实就是一个能量转换器,把热能转换成电能,用产生的热电势来测量温度。如图22所示,常用的K型热电偶可以直接测量各种生产中从0℃到1300℃的液体蒸汽、气体介质和固体的表面温度。具有线性好、热电电动势大、灵敏度高、稳定性和均匀性好、抗氧化性强、价格低廉等优点。

根据热电偶测温原理,K型热电偶的输出热电势不仅与测量端温度有关,还与冷端温度有关,这就需要一个温度补偿电路(如图23所示),热电偶的电压和温度是非线性的。MAX6675模块可以放大信号,补偿冷端,校正K型热电偶的非线性。MAX6675有一个简单的3位串行SPI接口;温度信号可转换成12位数字量,温度分辨率可达0.25℃。它包含热电偶断开检测电路。冷端补偿的温度范围为-20℃ ~ 80℃,温度测量范围为0℃~ 1023.75℃,基本满足工业测温的需要。

5.2 MAX6675编程与库的使用

MAX6675的Arduino库文件下载地址:https://github.com/aguegu/ardulibs/tree/master/max6675. max 6675库文件有以下函数:getCelsius()、getFahrenheit()、getKelvin()和setOffset(int offset)。

GetCelsius():获取以摄氏度为单位的温度,没有输入参数,返回值为摄氏度,浮点类型。
Get Fahrenheit():Get Fahrenheit,无输入参数,返回值为Fahrenheit,浮点型。
getKelvin():获取开尔文温度,无输入参数,返回值为开尔文温度,浮点类型。
setOffset(int offset):设置温度偏移量。输入参数为偏移值,最小单位为0.25℃,无返回值。

5.3 使用实例

下面用K型热电偶和MAX6675模块测量高温,通过串口输出。

(1)硬件连接
将MAX6675模块的VCC和GND分别连接到Arduino Uno控制器的5V和GND,为MAX6675提供电源。MAX6675模块的信号引脚SO、CS、CSK接数字引脚5、6、7,K型热电偶的正极和负极分别接MAX6675模块的T和T-,如图24所示。

(2)编程

程序设计的主要思路:Arduino Uno控制器通过MAX6675函数库获取热电偶测量的温度值,完成热电偶输出电压的信号放大、冷端补偿和非线性处理,最终通过串口输出。

#包括& # 34;Max6675.h & # 34Max6675 ts(5,6,7);//定义SO、CS、CSK依次连接的pin号void setup(){ ts . set offset(0);//设置温度偏移量serial . begin(9600);} void loop(){ serial . print(& # 34;温度是& # 34;);Serial.println(ts.getCelsius(),2);//获取摄氏温度,通过串口发送延时(1000);//一秒刷新一次}(3)实验演示
实际实验硬件连接图如图25所示,实验中串口接收到的温度数据如图26所示。

6.摘要:本文介绍了几种常见的温度测量传感器,并从温度测量原理、器件特性、编程以及在Arduino中的使用等方面进行了详细介绍。总结这篇文章,有以下几点:

1.NTC热敏电阻虽然便宜,但是很难得到很高的测量精度,需要大量的优化工作。
2。LM35直接输出模拟电压,使用方便,精度高。适用于热电偶冷端补偿中的环境温度测量。
3。DS18B20是一款单总线数字温度传感器,具有高性价比和高测量精度。同时,多个传感器可以挂在一条总线上。
4。DHT11是一个一总线的温湿度传感器,不占用太多的I/O口,可以同时输出湿度数据,适合同时需要温湿度数据的应用。
5。热电偶和MAX6675配合使用,适用于高温测量,省去了热电偶冷端补偿、线性化和模数转换的工作,使用方便,精度高。对其数据进行二次拟合标定可以获得更高的测量精度。

最后比较热电偶MAX6675模块和DS18B20的响应速度。如图27所示,在基于Arduino和LabVIEW的实验平台上采集了热水中热电偶的数据变化。从图中可以看出,最高温度在60℃左右,热电偶的响应曲线比较直,上升速度也比较快。如图28所示,在基于Arduino和LabVIEW的实验平台上采集了DS18B20对冷热变化的响应曲线。从图中可以看出,最高温度超过80℃,DS18B20的响应曲线相对平缓,温度响应速度随着温差的缩小而变缓。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

本文来自网络,若有侵权,请联系删除,作者:青岛热电,如若转载,请注明出处:https://cnautoinfo.com/1253.html

发表回复

登录后才能评论