使用MAX6675芯片和A型热电偶,您可以轻松测量 自芯片以来,使用任何微控制器从0°C到1024°C的温度 通过SPI接口输出数据 - 在这里,我们将使用它 Arduino Uno.
热电偶的巨大优势是测量时的易用性 高温和唯一的其他方式是使用非联系方式 热温枪测量红外光接收,但这是非常的 expensive option.
该芯片专门设计用于k型热电偶和 没有别的,这不是一个大问题,因为k是最受欢迎的 反正。芯片为您提供所有努力,您所做的就是连接 热电偶并从SPI接口读取输出!
热电偶由两个不同的金属形成在一起 温度传感端 - 另一端应该浸入冰浴中 它保持在0°C。如果这样做,那么跨越温差 从端到端的热电偶线导致要产生的电压( Seebeck效果 - 由Thomas Seebeck的1821年左右发现)比例 到温差。下图显示了非冰浴 连接见下面的原因。
产生的电压非常小(〜41uV /°C),并且不同于 不同类型的热电偶,因此需要放大器来转动 读成可用形式。你不'真的想用冰弄乱 浴(除非你想要更好的精度),所以一个叫做的技术 使用冷结补偿(CJC)。
基本上你测量了(较冷)的末端的温度 热电偶,并弄清楚热电偶在的电压 该温度,并将此电压添加到热电偶电压(您工作 向后找到一端在温度的时相等电压 0°C)即补偿非传感末端的环境温度 全温读数可用。
使用您需要的热电偶:
这是MAX6675的位置,因为它具有内置的一切 already for 你;内置放大器,冷 - 结补偿器(CJC)和ADC。 实际上芯片使用了 Type-k热电偶普通,如上面包含在芯片中 you don'甚至必须检索ADC生成ADC的模拟值 数字输出作为12位串行序列发送。
MAX6675的输出格式为SPI - 数字时钟,只读,
接口提供12个输出数据位。
下载max6675数据表。
范围 | 价值 |
---|---|
电压电源(VCC) |
3.0V〜5.5V. |
ABS。最大V.DD. | -0.3V〜6.0v. |
界面 |
spi. |
供电电流(典型,最大) |
0.7mA,1.5mA |
范围 | 0°C至1024°C |
分辨率(12bit) |
0.25°C. |
精度(20°C至80°C)(**) | ±3°C |
* - 所以引脚的最大输出为50mA,但您赢了't design it that 你呢?如果将SO outpout源进入正常的微控制器输入 (由于这是一个CMOS输入)几乎不会被绘制的任何电流 您将留下MAX6675的1.5mA最大电源电流。
** - 另请参阅不同温度范围的误差分析 这里 (in this page).
由于MAX6675包装为方形轮廓(SO8)设备A表面 安装部分,您需要一个突破板来访问其引脚。突破 板通常具有用于连接热电偶和标头的螺钉端子 通过杜邦连接器连接到Arduino的引脚。
这个系统的硬件真的很简单;所有你需要的是:
可选的:
该项目从USB端口供电。
上面的可选部分允许您了解热电偶操作的程度 在环境温度下。我只是希望看到对正在发生的事情进行比较。
下面的示意图显示了MAX6675突破板的连接 DS18B20温度传感器。这用于显示精确的温度 对于较低的温度,因此您可以感受到热电偶的方式 操作I.E. A可以比较温度。
goto arduino菜单:素描 - >Include Library-->Library Manager.
然后在搜索框中输入MAX6675,显示结果:
MAX6675通过ADAFRUIT版本1.0.0 - 单击“安装”。
您可以看到图库是通过进入菜单安装的: Sketch-->包含库,滚动在出现的下拉框中 您将看到标有标有的条目:MAX6675库。
有两个图书馆:
如MAX6675库所描述的安装/检查安装。
以下代码输出热电偶温度,然后输出 DS18B20温度。如果你不'T有后者,然后评论DS18B20 code.
// Prototypes
void ds18B_setup(void);
void do_max6675_loop(void);
void do_ds18B_loop(void);
// Defines
//#define ThermoOnly 1 // For use with IDE Tools --> Serial Plotter
#include <Wire.h>
// Sample Arduino MAX6675 Arduino Sketch
#include "max6675.h"
在 t ktcSO = 8;
在 t ktcCS = 9;
在 t ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
void do_max6675_loop(void) {
// basic readout test
#ifndef 温泉
Serial.print("Temp = ");
Serial.print(ktc.readCelsius());
Serial.print("\t Deg F = ");
Serial.print(ktc.readFahrenheit());
Serial.print(" Deg C");
#else
Serial.println(ktc.readCelsius());
#endif
}
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port 2 on the Arduino
#定义 ONE_WIRE_BUS 4
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature DallasSensors(&oneWire);
void setup(void)
{
// start serial port
Serial.begin(9600);
#ifndef 温泉
Serial.println("Dallas Temperature IC Control Library Demo");
Serial.println("...and MAX6675 Thermocouple.");
// Start up the library
DallasSensors.begin();
#endif
// give the MAX a little time to settle
delay(500);
}
void do_ds18B_loop(void)
{
// call DallasSensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print("Requesting 1-wire devices...");
DallasSensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.print(DallasSensors.getTempCByIndex(0));
Serial.println(" Deg C");
}
void loop(void) {
#ifndef 温泉
Serial.println("\n-START-");
Serial.println("Thermocouple Temp.");
do_max6675_loop();
Serial.println("\nRoom Temp.");
do_ds18B_loop();
Serial.print("-END-");
Serial.print("\n");
#else
do_max6675_loop(); // Only o/p thermocouple data.
#endif
delay(500);
}
绘制热电偶的输出随着时间的推移非常容易使用
Arduino IDE作为内置的工具,可以创建一个显示的条带图表
数据的最后一个数据。要使用它,您需要将温度输出为a
数字没有添加文本。
定义"ThermoOnly" does this for
您 - 取消注释它以允许这种操作模式。
通过允许定义"ThermoOnly"激活(未评论 以下代码):
#定义 thermoonly 1.
...然后重新编译。草图将从中输出温度值 热电偶(没有其他文字)。
从菜单中激活绘图仪 - >Tools-->串行绘图仪查看 output.
该芯片使得在巨大的温度读数方便 温度范围0°C至1024°C,采用最流行的热电偶 (k)。您还可以检测小于0.25°C的小温度变化 (12位分辨率ADC给出这种能力[1024.0 / POW(2,12)= 0.25°C]。
芯片还使互相简单的接口,因为它已内置 ADC,CJC和AMP和数字串行输出(SPI)。
温度范围 | 错误(PSU 3V3) | 错误(PSU 5V) | %err(3v3) | 额外的寒冷 comp error ±3.00°C |
---|---|---|---|---|
0〜45°C | ±1.00°C | ±1.25°C | 1°C错误 | 4°C错误 |
0°C〜+ 700°C | ±2.00°C | ±2.25°C | @ 700〜0.29%err | @ 700〜0.7%err |
+ 700°C〜1024°C | ±4.25°C | ±4.75°C | @ 700〜0.7%err, @1000 ~ 0.4% err |
@ 700〜1.0%err, @1000 ~ 0.7% err |
芯片的唯一缺点是其精度依赖于晶体管
基于温度测量,可仅限于±3.00°C
芯片的温度范围(-20°C〜85°C)。此错误将是其中之一
总贡献者对总错误预算。
然而,热电偶不是 无论如何(指定为2.2°C),那么ADC有错误 从1°C到4.75°C的内容(取决于温度范围和芯片 电源电压)。所以你可能有3 + 4.75 + 2.2〜11°C的错误。记住 这不一定太糟糕了,因为它会产生百分比的错误 与正在测量的大温度相比仍然很小。
然而,在室温下,晶体管CJC可能会产生最小的 误差。 0°C误差(仅由ME测试仅夹持)和低于700°C 错误是2.25°C +热电偶误差2.2°C,所以您可以说出错 将是4.47°C,但这取决于它的使用。
6675是放大热电电压的线性装置 〜41UV /°C常数并数字计算结果。来自的产出 放大器被馈入12位ADC,导致分辨率为0.25°C及其 主要优点是它在芯片内部做了这项工作(放大了 极低的信号变为可用电压,变成了数字 output).
有两种轻微缺点:
如果您只想将温度范围0°C至1024°C操作 MAX6675是一个不错的选择(如果您接受错误级别),但您不能 在该温度范围内使用芯片。
我正在寻找有关热电偶的更多信息,并找到了这一点 有趣的信息。如果你曾经有大头大篷车,你会知道 冰箱可以从三个来源供电;电源,12V和天然气。当你使用时 你必须按下起动器按钮的气体(使用a点亮气体 压电打火机,但你也必须暂时握住按钮)。为什么是 那? - 我从未想过问真的'就像魔法一样,它有效! - 真的很奇怪我们如何接受我们周围技术的操作 质疑它!
事实证明,热电偶用于产生电压源 (这就是为什么你必须长时间保持按钮15-30s)所以 热电偶有时间热身。一旦它完成了,这非常小的电压 (数十毫伏的顺序)用于为非常小的螺线管供电 单独采用保持电流(注意:电磁阀的保持电流 可以远小于激活电流,在这种情况下的行为 按下按钮是电磁阀的激活操作,所以没有高功率 是需要的,只是你的拇指!只要火焰继续保持电流 生成(热电偶输出) - 螺线管保持打开。
注意:增加热电偶电压输出结合多个 热电偶一起制作所谓的热电堆。
测量温度输出:
当然,一旦你可以测量某些东西,那么你可以控制它e .g 烤箱,炉,高温冶炼,HVAC,烙铁等
提示:设置"#define ThermoOnly"在示例代码中取消注释然后重建代码,然后重建代码 从Arduino IDE中选择菜单以绘制温度: Menu-->Tools-->串行绘图仪。这将绘制出来的价值 实时温度在图上。 (如果你不't看到菜单安装 来自Arduino.cc的IDE,因为有两个版本可用)。
使用ADS1115精度16位ADC进行教程进行低功耗。
arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。
了解DigitalWrite()的工作原理......现在使用17倍宏宏!
如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。
使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。
HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。
新的! Comments
让你说到你刚刚阅读的东西!留下下面的框中的评论。