资讯详情

LabVIEW控制Arduino采集热电偶温度数值(进阶篇—2)

1、项目概述

2、项目架构

3、硬件环境

4、Arduino功能设计

5、LabVIEW功能设计

5.1.前面板设计

5.2.程序框图设计


1、项目概述

在之前的博文中,介绍了LabVIEW控制Arduino采集LM35温度传感器值LabVIEW控制Arduino采集热敏电阻温度值的方法。本文将基于热电偶建立温度监测系统。

热电偶测温具有技术成熟、测温范围广、测量精度高、性能稳定、结构简单、动态响应好、价格相对便宜等优点。

热电偶是两种不同材料的导体或半导体A和B当导体A和B当两个连接点1和2之间存在温差时,两者之间会产生电势,从而在电路中形成电路电流。这种现象称为热电效应,这种电势称为热电势。热电效应原理图如下图所示:

热电偶采用热电原理测量温度,其中直接用于测量介质温度的一端称为工作端(也称为测量端),另一端称为冷端(也称为补偿端)。

热电偶实际上是一种能量转换器,它将热能转化为电能,用产生的热电势测量温度。热电偶的热电势应注意以下问题:

1.热电偶的热电势是热电偶工作端两端温度函数的差异,而不是热电偶冷端与工作端温度差的函数;

2.当热电偶材料均匀时,热电偶产生的热电势的大小与热电偶的长度和直径无关,仅与热电偶材料的成分和两端的温差有关;

3.当确定热电偶的两个热电偶丝材料成分时,热电偶的热电势只与热电偶的温差有关;如果热电偶冷端温度保持一定,热电偶的热电势只是工作端温度的单值函数。

热电偶测温原理详见博文:热敏电阻,RTD、热电偶的原理和特点_不脱发的程序猿博客

2、项目架构

本文主要介绍热电偶,MAX6675、Arduino Uno与LabVIEW来实现上下位机高温监测系统。其中,MAX6675实现热电偶线性化和冷端补偿,Arduino Uno负责下位机MAX6675读写和数据传输,LabVIEW作为上位机编写的监控软件,上下位机使用USB-TTL接口通信。系统框图架构如下图所示:

下载项目资源请参见:LabVIEW控制Arduino收集热电偶温度值-单片机文档资源

3、硬件环境

K型热电偶的两端MAX在6675模块的接线座上,确保正负两极连接正确。MAX6675模块的VCC、GND、SO、CS、SCK分别接至Arduino Uno控制板上的 5V、GND、数字端口5、6、7。热电偶高温监测系统的硬件连接如下图所示:

4、Arduino功能设计

Arduino下部需要完成以下功能:温度测量和温度传输,Arduino Uno控制板通过USB—TTL接收上位机的命令,完成相应的温度测量,并将测量的温度数据返回LabVIEW上位机软件。

温度测量通过Arduino Uno控制器操作MAX6675读取K型热电偶的温度数据MAX6675完成K型热电偶信号的模数转换、冷端补偿和线性化。

Arduino Uno控制器负责读取LabVIEW上位机发出的热电偶温度采集命令,读取MAX从而获取热电偶的温度数据,并通过串口发送回上位机LabVIEW软件。Arduino Uno控制器的程序代码如下:

#include "Max6675.h"  Max6675 ts(8, 9, 10); // Max6675 module: SO on pin #8, SS on pin #9, CSK on pin #10 of Arduino UNO // Other pins are capable to run this library, as long as digitalRead works on SO, // and digitalWrite works on SS and CSK  byte comdata[3]={0};      //定义数组数据,存储串口命令数据 int LED = 13;                 //定义LED连接的管脚  void receive_data(void);      //接受串口数据 void test_do_data(void);         //测试串口数据是否正确,并更新数据   void setup() {   Serial.begin(9600);         pinMode(LED, OUTPUT);   ts.setOffset(0);   // set offset for temperature measurement.   // 1 stannds for 0.25 Celsius }   void loop() {   while (Serial.available() > 0)   ///不断检测串口是否有数据    {         receive_data();            //接受串口数据         test_do_data();               //测试数据是否正确并更新数据    } }   void receive_data(void)        {    int i ;    for(i=0;i<3;i  )    {       comdata[i] =Serial.read();       ///延迟一会,为下一个字节做好串口缓存准备,不延迟可能会导致数据丢失,        delay(2);    } }  void test_do_data(void) {   if(comdata[0] == 0x55)            //0x55和0xAA判断有效命令是否有效    {      if(comdata[1] == 0xAA)      {         if(comdata[2] == 0xff)           {                  Serial.print(ts.getCelsius(), 2);           }       }    } }

5、LabVIEW功能设计

LabVIEW上位机部分需要完成以下功能:将数据和接收数据发送到下位机并显示在前面板上,Arduino Uno控制板通过串口接收上位机命令,完成相应的温度测量,并将数据返回上位机。

5.1.前面板设计

LabVIEW前板分为两部分:当前温度数据显示和温度波形数据显示,波形数据主要用于显示温度变化趋势,LabVIEW上位机前面板设计如下图所示:

5.2.程序框图设计

LabVIEW上位机主程序的结构是顺序结构 While循环。首先,在顺序结构的第一帧中,串口通过设置的串口号初始化。然后,程序进入While在循环中,每隔1秒读取一次热电偶的温度,并在前面板上显示值框和波形图。最后,关闭串口通信。

在数据帧中设置0,以确保通信的正确性X55和0XAA的校验帧,0XFF收集热电偶温度的命令码。LabVIEW上位机程序框图如下图所示:

本文介绍的热电偶高温监测系统可以实现广泛的温度测量Arduino Uno与LabVIEW通信方式改为RS-485总线适用于锅炉等工业场所的高温测量。

下载项目资源请参见:LabVIEW控制Arduino收集热电偶温度值-单片机文档资源

标签: 型板端连接器f耐磨耐腐型热电偶电阻0400热电偶传感器热电偶电阻平坝ts4温度传感器rtd温度传感器模块

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台