设为首页收藏本站

极客工坊

 找回密码
 注册

只需一步,快速开始

查看: 11359|回复: 32

Ardunio MEGA+MAX6675热电偶测温

  [复制链接]
发表于 2013-5-13 13:55:54 | 显示全部楼层 |阅读模式
本帖最后由 nust_奔跑 于 2013-5-13 13:59 编辑

1、热电偶工作原理
      两种不同成份的导体两端接合成回路,当两个接合点的温度不同时,在回路中就会产生电动势,这种现象称为热电效应,而这种电动势称为热电势。
       热电偶就是利用热点效应原理进行温度测量的,其中,直接用作测量介质温度的一端叫做工作端(也称为测量端),另一端叫做冷端(也称为补偿端);冷端与显示仪表或配套仪表连接,显示仪表会指出热电偶所产生的热电势。
203fb80e7bec54e7b1aad6b3b9389b504ec26add.jpg

      热电偶实际上是一种能量转换器,它将热能转换为电能,用所产生的热电势测量温度,对于热电偶的热电势,应注意如下几个问题:
       1、热电偶的热电势是热电偶工作端的两端温度函数的差,而不是热电偶冷端与工作端,两端温度差的函数;
       2、热电偶所产生的热电势的大小,当热电偶的材料是均匀时,与热电偶的长度和直径无关,只与热电偶材料的成份和两端的温差有关;
       3、当热电偶的两个热电偶丝材料成份确定后,热电偶热电势的大小,只与热电偶的温度差有关;若热电偶冷端的温度保持一定,这时候的热电偶热电势仅是工作端温度的单值函数。
      将两种不同材料的导体或半导体A和B焊接起来,构成一个闭合回路。当导体A和B的两个执着点1和2之间存在温差时,两者之间便产生电动势,因而在回路中形成一个大小的电流。
       根据热电偶测温原理,热电偶的输出热电势不仅与测量端的温度有关,而且与冷端的温度有关,需要测量出冷端温度,从而才能准确地测量出真实的温度。下面将介绍集成冷端补偿的芯片MAX6675。
2、MAX6675工作原理
       MAX6675是MAXIM公司的K型热电偶串行模数转换器,它能独立完成信号放大、冷端补偿、线性化、A/D转换及SPI串口数字化输出功能。
       MAX6675内部集成有冷端补偿电路;带有简单的3位串行SPI接口;可将温度信号转换成12位数字量,温度分辨率达0.25℃;内含热电偶断线检测电路。冷端补偿的温度范围-20℃~80℃,可以测量0℃~1023.75℃的温度。
       MAX6675为SO-8脚封装,工作电压为+5V直流电压,功耗为47.1mW,电流为50mA,适用于体积不大,不利散热的装置条件下使用,其引脚图如图1所示。其中SO为SPI串行输出端口引脚; CS为片选信号;SCK为串行时钟输入;T+、T-分别接热电偶的测量端和冷端。

未命名4321.jpg


3、Arduino程序
MAX6675的库文件自带的串口输出示例,将采样间隔改为2S。
  1. #include "Max6675.h"

  2. Max6675 ts(8, 9, 10);
  3. // Max6675 module: SO on pin #8, SS on pin #9, CSK on pin #10 of Arduino UNO
  4. // Other pins are capable to run this library, as long as digitalRead works on SO,
  5. // and digitalWrite works on SS and CSK

  6. void setup()
  7. {
  8.         ts.setOffset(0);
  9.         // set offset for temperature measurement.
  10.         // 1 stannds for 0.25 Celsius

  11.         Serial.begin(9600);
  12. }

  13. void loop()
  14. {
  15.         Serial.print(ts.getCelsius(), 2);
  16.         Serial.print(" C / ");
  17.         Serial.print(ts.getFahrenheit(), 2);
  18.         Serial.print(" F / ");
  19.         Serial.print(ts.getKelvin(), 2);
  20.         Serial.print(" K\n");
  21.         delay(2000);
  22. }
复制代码

4、实物实验演示
MAX6675模块实物图
2013-05-13_13-13-44_78_副本.jpg

MEGA+MAX6675的实物图
2013-05-13_13-37-43_55_副本.jpg

采用用串口助手接收温度数据,数据如下:
1、 放置在空气中,常温环境下

2013-05-13_13-38-16_687_副本.jpg

未命名.jpg


可以看出,温度还是很稳定的,还说明南京很热,都30℃了。

2、放置于一杯热水中,高温环境

2013-05-13_13-37-51_614_副本.jpg

未命名321.jpg

水温稳定在57℃左右,看起来温度不是很高,但是我端水杯还是感觉很烫的。
附上MAX6675的库文件

Max6675.rar

3.09 KB, 下载次数: 553

MAX6675库文件

回复

使用道具 举报

发表于 2013-5-13 17:08:49 | 显示全部楼层
人体感受到烫的温度为50-60度,所以还是蛮准的
回复 支持 反对

使用道具 举报

发表于 2013-5-14 09:08:10 | 显示全部楼层
教程和我之前写的差不多,支持啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-14 16:10:29 | 显示全部楼层
迷你强 发表于 2013-5-13 17:08
人体感受到烫的温度为50-60度,所以还是蛮准的

南京的天气太热了~~~
回复 支持 反对

使用道具 举报

发表于 2013-7-15 13:59:52 | 显示全部楼层
如果要多用的话要如何操作?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-15 14:56:29 | 显示全部楼层
无为 发表于 2013-7-15 13:59
如果要多用的话要如何操作?

多路热电偶?
增加一个片选信号即可~
回复 支持 反对

使用道具 举报

发表于 2013-7-16 08:08:55 | 显示全部楼层
nust_奔跑 发表于 2013-7-15 14:56
多路热电偶?
增加一个片选信号即可~

这个知道,但不知如何操作,因为多路用的时候,SO,CS都是连在一起的,不知库是否也要多次调用?用I2C总线为每个模块的片选,需要用到数据位的D2位,检测热电偶是否断线,楼主给的库好像不能检测,断开后显示1023.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 11:38:14 | 显示全部楼层
无为 发表于 2013-7-16 08:08
这个知道,但不知如何操作,因为多路用的时候,SO,CS都是连在一起的,不知库是否也要多次调用?用I2C总线 ...

你还可以通过多路开关,也就是断电和上电,实现多个MAX6675的切换。
回复 支持 反对

使用道具 举报

发表于 2013-7-16 11:56:22 | 显示全部楼层
nust_奔跑 发表于 2013-7-16 11:38
你还可以通过多路开关,也就是断电和上电,实现多个MAX6675的切换。

这个……。要是我将两个模块连在板上,同时上电,如:SO连在一起,接至2脚,CSK连在一起,接至3脚,CS1接在4脚,CS2接在5脚,这个程序需要调用两次库吗?如不需要,则此项:Max6675 ts(8, 9, 10);需要做何更改?
回复 支持 反对

使用道具 举报

发表于 2013-7-17 11:02:18 | 显示全部楼层
已经搞定了,多谢楼主!
回复 支持 反对

使用道具 举报

高级模式  
您需要登录后才可以回帖 登录 | 注册  

本版积分规则

Archiver|联系我们|极客工坊 ( 浙ICP备09023225号 )  

GMT+8, 2017-8-23 04:47 , Processed in 0.043753 second(s), 10 queries , File On.

Powered by Discuz! X3.3 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表