单片机温湿度测量程序编程

简介: 单片机温湿度测量程序编程

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?


博客写作背景----项目中解决的问题

公司有一个使用单片机多路采集温湿度的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用labview呢,因为LabVIEW是美国国家仪器公司(NI)的创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于G语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。LabVIEW并不局限于虚拟仪器的开发,它的作用是为大型复杂测试系统提供通用的软件开发平台。目前,LabVIEW已经成为测试领域应用最广泛和最有前途的软件开发平台之一。


下面是我最近写程序的一些知识,进行了部分的整理,发出来和大家一起分享,也方便我以后查找自己的编程过程。


编程知识点–基于labview的温湿度测量


在多数情况下,测量温度的同时需要测量湿度,本节将介绍使用DHT11温湿度传感器、Arduino Uno和LabVIEW组成温湿度测量系统,可用于粮仓等场合的温湿度监控。


温湿度测量系统框图如图所示

dc3786a7979c497e9d2c71e55749f456.png

在整个系统中,Arduino Uno作为下位机,负责DHT11的读写以及数据传输;LabVIEW编写的显示软件作为上位机;上下位机利用USB-TTL接口实现通信。


DHT11数字温湿度传感器,是一款含有已校准数字信号输出的温湿度复合传感器,采用专用的数字模块采集技术和温湿度传感技术,具有极高的可靠性与卓越的长期稳定性,内部包含一个电阻式感湿元件和一个NTC测温元件。DHT11传感器都经过实验室校准,校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。采用单线制串行接口,超小的体积、极低的功耗,使系统集成变得简易快捷,信号传输距离可达20米以上

eaf3c6118d3b4c2bb67faced313a3979.png

DHT11的供电电压为3.3~5V,测量范围为湿度20%~90%RH,温度0~50℃,测量精度为湿度±5%RH,温度±2℃,测量分辨率为湿度1%RH,温度1℃。需要注意的是,DHT11传感器上电之后,要等待1s以越过不稳定状态,在此期间无需发送任何指令。电源引脚(VCC,GND)之间可增加一个100nF的电容,用以去耦滤波。引脚说明如表所示


38aa29ddcaad4ec2a0ee565e209afc5a.png


DOUT用于微处理器与DHT11之间的通信和同步,采用单总线数据格式,一次通信时间4ms左右。主机发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,主机可选择读取部分数据。在高速模式下,DHT11接收到开始信号即触发一次温湿度采集,如果没有接收到主机发送的开始信号,DHT11不会主动进行温湿度采集。


DHT11的Arduino库文件下载地址为:https://github.com/markruys/arduino-DHT。DHT11库文件有3个函数:dht.setup(int Pin)、dht.getHumidity()、dht.getTemperature()。


❑dht.setup(int Pin):设置DHT11总线的连接管脚号,输入参数为所连接的管脚号,无返回参数。


❑dht.getHumidity():获取DHT11的湿度值,无输入参数,返回值为湿度值,double类型。


❑dht.getTemperature():获取DHT11的温度值,无输入参数,返回值为温度值,double类型。


如果使用的是DHT11模块,则将DHT11温湿度模块的VCC、GND、DOUT引脚分别接至Arduino Uno控制板上的+5V、GND、数字端口2。


如果使用的是DHT11传感器,则还需要在DOUT与VCC之间串联5kΩ的上拉电阻。温湿度测量系统硬件连接

79a146bd127644f58778f9c07d9baf1a.png

LabVIEW上位机部分需要完成以下功能:


1)向下位机Arduino控制器发送温度采集命令,Arduino控制器通过串口接收上位机命令,完成温度数据的采集之后将数据回传,LabVIEW软件将回传的温度数据显示在前面板上;


2)向下位机Arduino控制器发送湿度采集命令,Arduino控制器通过串口接收上位机命令,完成湿度数据的采集之后将数据回传,LabVIEW软件将回传的湿度数据显示在前面板上。

1d28f90219404406892aab041f418095.png

LabVIEW上位机主程序的结构为顺序结构+While循环。首先,在顺序结构中的第一帧中,通过设置的串口号来初始化串口通信。然后,程序进入While循环和顺序结构,依次向Arduino Uno控制器发送温度和湿度测量的命令码,接收到返回的温度和湿度数据之后,显示在前面板上。最后,关闭串口通信。


为了保证通信的正确性,在数据帧中设置0x55和0xAA为校验帧,0x11为温度采集命令码,0x10为湿度采集命令码。LabVIEW上位机程序框图如图


2eb1658ecfc94f47b4be277f6e8e68cc.png


通过USB电缆连接Arduino Uno控制器与计算机,使用高温烘烤DHT11温湿度传感器和向DHT11温湿度传感器的测试窗吹气,得到如图所示的测量结果。


bcb83234567844f3bee66750e2cc02d1.png

目录
相关文章
|
6月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
84 1
|
6月前
|
存储 算法 编译器
如何优化单片机程序里面的C代码方法
如何优化单片机程序里面的C代码方法
51 0
|
6月前
|
传感器 芯片
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
|
数据处理 C语言
侃侃单片机的裸奔程序的框架
侃侃单片机的裸奔程序的框架
99 0
|
3月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
|
3月前
|
人工智能 开发者 芯片
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
使用AI大语言模型编写 单片机程序. 使用的是 OpenAI公司发布的 ChatGPT .在ChatGPT上有别人训练好的 单片机工程师 with Keil uVision 5 - C Code Explainer模型, 可以上传电路图改模型可以通过这个用户所给的电路图进行编程.
212 0
【51单片机】单片机开发者的福音: 让AI看电路图帮你编写程序(使用ChatGPT 中训练好的单片机工程师模型)
|
5月前
技术心得记录:单片机开发过程中使用结构体简化程序
技术心得记录:单片机开发过程中使用结构体简化程序
30 0
|
6月前
|
算法 定位技术 C语言
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
111 1
|
6月前
|
传感器 人工智能 物联网
单片机:编程实践与应用探索
单片机:编程实践与应用探索
65 4
|
6月前
|
存储 传感器 数据处理
单片机编程入门与实践
单片机编程入门与实践
69 2