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

2023-10-09 15:20

本文主要是介绍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接口实现通信。系统框图架构如下图所示:

项目资源下载请参见: https://download.csdn.net/download/m0_38106923/87694924

3、 硬件环境

将K型热电偶两端接至MAX6675模块的接线座上,确保正负两极连接无误。将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上位机发来的热电偶温度采集命令,并读取MAX6675从而获取热电偶的温度数据,通过串口发送回上位机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 CSKbyte 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秒读取一次热电偶的温度,并显示在前面板上的数值框和波形图。最后,关闭串口通信。

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

本篇博文介绍的热电偶高温监测系统可以实现较宽范围的温度测量,将Arduino Uno与LabVIEW的通信方式更改为RS-485总线,适用于锅炉等工业现场的高温测量。

项目资源下载请参见:https://download.csdn.net/download/m0_38106923/87694924

这篇关于LabVIEW控制Arduino采集热电偶温度数值(进阶篇—2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/173767

相关文章

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

【LabVIEW学习篇 - 21】:DLL与API的调用

文章目录 DLL与API调用DLLAPIDLL的调用 DLL与API调用 LabVIEW虽然已经足够强大,但不同的语言在不同领域都有着自己的优势,为了强强联合,LabVIEW提供了强大的外部程序接口能力,包括DLL、CIN(C语言接口)、ActiveX、.NET、MATLAB等等。通过DLL可以使用户很方便地调用C、C++、C#、VB等编程语言写的程序以及windows自带的大

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

Verybot之OpenCV应用一:安装与图像采集测试

在Verybot上安装OpenCV是很简单的,只需要执行:         sudo apt-get update         sudo apt-get install libopencv-dev         sudo apt-get install python-opencv         下面就对安装好的OpenCV进行一下测试,编写一个通过USB摄像头采

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、