"); //-->
1
项目概述
DS18B20是美国DALLAS半导体公司的数字化单总线智能温度传感器,与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。从DS18B20读出信息或写入信息仅需要一根线(单总线)读写,总线本身也可以向所挂接的设备供电,而无需额外电源。
本篇博文将实现LabVIEW控制Arduino采集多路DS18B20温度数值,关于LabVIEW控制Arduino在基础篇已经讲解过很多种类温度传感器的采集方法。具体可参见以下链接:
LabVIEW控制Arduino采集LM35温度传感器数值(基础篇—12)
LabVIEW控制Arduino采集热敏电阻温度数值(基础篇—13)
2
项目架构
本项目将介绍使用2个DS18B20传感器、Arduino Uno和LabVIEW组成多路温度数字测量系统,多路温度数字测量系统框图如下图所示:

其中,2个DS18B20温度传感器并联接至单总线,Arduino Uno作为下位机,负责DS18B20的读写以及数据传输;LabVIEW编写的显示软件作为上位机,上下位机利用USB-TTL接口实现通信。
3
硬件环境
将DS18B20温度传感器的Vcc和GND分别连接至Arduino Uno控制器的+5V和GND,以给DS18B20提供电源,DS18B20的DQ引脚接至Arduino Uno控制器数字引脚D2,且连接4.7KΩ的上拉电阻,因为DS18B20的DQ引脚正常工作需要添加上拉电阻。多路温度数字测量系统硬件连接图如下图所示:

4
Arduino功能设计
在基于Arduino与LabVIEW的上下位机温度监测系统中,Arduino Uno控制板需要完成以下功能:接收和判断命令与采集和传输温度数据,Arduino Uno控制板通过串口接收上位机发来的命令,分析得到有效命令,读写DS18B20传感器以获取温度,并将温度数据上传至LabVIEW软件。
Arduino Uno控制器负责读取LabVIEW上位机发来的温度采集命令,并读取对应的DS18B20传感器从而获取温度数据,通过串口发送回上位机LabVIEW软件。Arduino Uno控制器的程序代码如下所示:
#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2 //DS18B20接至Arduino数字口2
#define T1_COMMAND 0x80 //采集命令字#define T2_COMMAND 0x81 //采集命令字
OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire); byte comdata[3]={0}; //定义数组数据,存放串口命令数据void receive_data(void); //接收串口数据void test_do_data(void); //测试串口数据是否正确并执行命令 void setup(){ Serial.begin(9600); // Start up the library sensors.begin();} 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) { switch (comdata[2]) { case T1_COMMAND: sensors.requestTemperatures(); //ratures Serial.print(sensors.getTempCByIndex(0)); break; case T2_COMMAND: sensors.requestTemperatures(); // Set temperatures Serial.print(sensors.getTempCByIndex(1)); break; } } }}5
LabVIEW功能设计
LabVIEW上位机部分需要完成以下功能:向下位机Arduino控制器发送温度采集命令,Arduino控制器通过串口接收上位机命令,完成温度数据的采集之后将数据回传,LabVIEW软件将回传的温度数据显示在前面板上。
5.1、前面板设计
LabVIEW前面板分为温度显示和传感器选择端,传感器选择端用于决定当前监测的传感器,波形数据用于显示温度数据的变化趋势,多路温度数字测量系统的LabVIEW上位机前面板如下图所示:

5.2、程序框图设计
LabVIEW上位机主程序的结构为顺序结构+While循环。首先,在顺序结构中的第帧中,通过设置的串口号来初始化串口通信,并将波形图清空。然后,程序进入While循环和平铺式顺序结构,向Arduino Uno控制器发送传感器1或传感器2温度测量的命令码,等待100ms,接收到返回的温度之后,显示在前面板上并显示出温度波形。最后关闭串口通信。
通过前面板上单选按钮来选择所需测量的传感器,然后向Arduino Uno控制器发送对应的温度采集命令码,传感器1命令码为0x55AA80,传感器2命令码为0x55AA81,并通过延时800毫秒,以达到每秒采样1次的功能。传感器1和传感器2对应的程序框图如下图所示:


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
LabView教材
二十年过去 Arduino已经远不止是Arduino了
简体中文版LabVIEW 8.20—— 母语编程,方便高效
自由度直升机控制系统视频演示
使用OPC连接LabVIEW到任意PLC
高通收购Arduino,开源社区持怀疑态度
使用LabVIEW 8.5的“多核”功能
LabVIEW 8.20技术资料大全简介
基于LabVIEW的多路仪器温度测控系统
基于LabVIEW的USB实时数据采集处理系统的实现
LABVIEW,VXWORKS,ICCAVR,ADS
LabVIEW 8.5新特性演示
讨论 labview!!!
labview入门教材
LABVIEW讲义稿
高通收购硬件公司Arduino,深耕机器人领域
高通收购Arduino带来了全新的氛围——UNO Q上的人工智能与信号处理
Arduino UNO Q登陆DigiKey,现已开放预订
基于Arduino的双模科学计算器设计
基于LPC1768 & LabVIEW技术的智能电网谐波分析仪电路图
[讨论]LABVIEW,VXWORKS,ICCAVR,ADS
贸泽电子开售Arduino UNO Q为实时响应的AI驱动机器视觉与声音解决方案提供支持
Arduino硬件模拟器 vs 实物零件:哪个更合适?
什么是LabVIEW?
使用Arduino和EMG的错误姿势和肌肉拉伤监测器,带实时蓝牙警报
基于Portenta的农业和草坪管理
关于labview!!
LabVIEW 8.5在各行业的应用集锦
关于LabVIEW
基于LabView的虚拟仪器实现频率稳定度的测量(图)