历史上的今天
今天是:2025年02月25日(星期二)
2020年02月25日 | 基于AVR单片机与DS18B20的实时温度采集与分析系统
2020-02-25 来源:eefocus
简介:文中所讲的实时温度采集与分析系统是一种基于AVR系列单片机ATmega16与温度传感器DS18B20相结合的实时温度采集与分析系统。
文中所讲的实时温度采集与分析系统是一种基于AVR系列单片机ATmega16与温度传感器DS18B20相结合的实时温度采集与分析系统。随着计算机技术尤其是单片微型机技术的发展,温度对人们的生活与工作影响很大,所以要实时采集温度并且对其进行分析。本系统介绍了以ATmega16单片机为核心,以及自动化控制装置GTJJ4-10A固态继电器和数字温度传感器DS18B20,报警与指示电路等,在分析中基于MFC的软件处理。其中包括温度曲线的绘制,以及温度值的保存,显示历史记录等。在经过烧水温度的测试,该系统稳定可靠便于分析。温度误差0.5℃,可以满足工农业生产的要求。
为实现实时准确的测量监控,采用串口传送数据并且在PC机上进行分析。由于单片机的控制方便、简单和灵活等优点,采用了高性能avr单片机来控制GTJ4-10A固态继电器,最总实现温度的控制。从而最总在PC机上绘制温度曲线并保存数据和分析温度的数据。
一、系统组成及基本原理
本系统由温度采集模块,固态继电器控制模块,单片机模块,PC机软件处理模块。4个模块加起来实现温度的控制,以及温度采集和温度经过软件处理的分析。它们的逻辑关系如图1所示。

图1 逻辑关系图
本系统的任务是对某种特定环境的温度进行采集并进行保存和再显示,通过单片机去控制固态继电器,从而控制其温度值的大小,再通过PC机实时显示当前的温度,并对当前的温度进行分析与保存。便于与以后的温度值进行对比等应用。首先由ATmega16单片机控制GTJ4-10A固态继电器从而控制交流电,再达到控制温度值的大小,这个时候通过DS18B20温度传感器对当前的温度值进行采集。将采集的数据结果通过Tx送给单片机,单片机将达到的温度值一方面通过串行通讯端口送给计算机,另一方面将温度数据进行对比分析,再通过IO控制GTJ4-10A固态继电器。从而实现了温度值控制。另一方面PC机得到的温度值送给MFC软件绘制温度曲线,同时通过保存按钮将温度值以及采集当前温度的时间记录下来。然后再经过显示按钮将温度值和时间显示出来。这就是对温度的实时采集与分析。
二、硬件部分设计
本系统主要采用高性能AVR单片机,GTJ4-10A固态继电器,DS18B20温度传感器,报警输出电路。主要系统电路图略。
2.1 ATmega16单片机简介
ATmega16是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1 MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。ATmega16AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与运算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。因此可以很好进行数据传送以及对继电器的控制和温度的采集。
2.2 温度采集模块
DS18B20采用Dallas独有的单总线协议,温度转换结果可选择为9-12位,最大转换时间在转换结果为12位时为750 ms,可通过读取DS18B 20的状态值判断其是否转换完毕。其测温范围为-55~+125℃,精度在范围内为±0.5℃。
2.3 固态继电器的控制
继电器模块单元通过单片机的IO口控制,让单片机的计算器计数,当环境温度的需要加热时,我们通过IO让继电器工作,达到某一数值时,再给继电器IO口低电平,从而通过单片机和利用继电器实现弱点控制交流电的作用,这里主要是利用了单片机PWM实现控制,从而就实现温度值大小的控制。具体电路图如图2所示。

图2 单片机控制电路
2.4 报警输出电路
报警输出电路通过单片机的PA6口控制8550三极管,从而控制蜂鸣器。当温度值达到某一值时,蜂鸣器报警。这时通知单片机停止加热,再经过固态继电器控制加热设备,实现温度维持在一恒定的温度值附近。如果温度值低于某一数值时,单片机通知加热设备加热,这个原理是采用采集温度值控制的,从而达到用户的要求。
三、软件部分设计
在系统硬件构架完成后,系统软件所实现的功能主要是针对温度曲线的绘制以及温度值的实时记录和存档并且实现历史记录。程序流程图如图3所示。

图3 软件流程图
通过单片将数据传递给PC机,PC机将接收到的数据在温度曲线显示与分析用户见面显示出来。本软件设计中还有串口选择、波特率的选择、停止显示、清空数据、关闭程序等基本功能。这里主要是温度值的曲线绘制,然后再将温度值保存起来并进行再显示的操作。从而达到实时采集与分析的功能。温度曲线显示与分析用户界面如图4所示。

图4 用户界面
3.1 温度显示曲线图
温度显示曲线图的主要任务是将单片机接收到的数据显示出来,当温度传过时,在软件中分别显示当前的温度值和时刻。通过MFC中的Time函数记录每一个温度值的时刻。并采用绘图函数将温度值和温度的当前时刻绘成曲线,然后再对数据特殊处理绘制成曲线图。在这里比较难处理的是实时的温度采集绘制曲线。
3.2 保存设计单元
单片机接受的数据通过MFC中的WriteData()将温度值和时刻值保存下来,此种做法就是利于将来对数据的分析使用,将温度值和时间值记录存档成txt文件,打开txt文件可以很清楚看到数据的变化情况,这部分功能主要是记录温度值和温度值的当前时刻,利于将来对温度值做比较分析。
3.3 显示设计单元
显示设计单元是将保存的温度值和时间值再绘制成温度曲线图,便于清楚分析数据。通过ReadData函数将保存的数据读出来,然后在经过画图函数绘制温度曲线图,在这里可以清楚地看到历史数据,这样做便于实验数据科学分析,这部分功能主要是显示历史温度值和时刻,实验结果如图5所示。

图5 实验结果
四、结束语
该实时温度采集与分析系统行能稳定可靠,另外,本系统采用高性能的ATmega16单片机最小系统组成。选用高灵敏度的数字式温度传感器为依据。通过单片机控制输出不同的PWM,从而可以绘制出实际的温度曲线,也可以根据不同的环境分析各个时刻的温度值。本软件设计中还有重要的保存和显示历史记录的功能。利于将来进行对比分析数据。同时满足实时环境温度检测和多种用户的要求。
史海拾趣
|
国内迄今制造的包括报警器在内的ECU(电子控制单元),均待汽车出厂后安装,与控制系统毫不相关。而要进入汽车电子的“神经中枢”——CAN总线系统,首先要拿到各厂家自己制定的应用层协议;由于对中国技术缺乏信任,在该所项目之前,跨国公司的协议从 ...… 查看全部问答> |
|
三相电测量芯片里面有个词是“line-cycle accumulation”是什么意思啊 参考中文中给的是周期循环累加,不甚理解,各位对三相交流电路熟悉的大虾们指点一下吧,是什么含义呢?原理是什么? 万分感谢。… 查看全部问答> |
|
本人从事嵌入式软件开发,但一直都是高层应用方面.现在想深入学习一下嵌入式底层的东西. 1. 我现在的目标是学习底层,硬件及驱程方面的东西,很大一部分原因是为以后就业着想.如果大家觉得这方面以后的前景不太好,还请帮忙出出其它注意. 2. 在网上 ...… 查看全部问答> |
|
HT1621是段式,液晶驱动芯片,最近做了一个大的段显,调了两天好不容易成功现在分享哈 先上资料先: 上程: [ 本帖最后由 ddllxxrr 于 2011-6-27 21:21 编辑 ]… 查看全部问答> |
|
MSP430单片机闪存编程的方法有三种: JATG端口、BSL或用户开发程序。通过电脑的并行端口自制下载线连接MSP430单片机的JATG端口编程,这种方法大家已经比较熟悉了。但是在用JATG烧断保密熔丝后,要再想修改闪存程序,就只能用BSL方法了。BSL是启动加 ...… 查看全部问答> |
|
nr_ti坛友在站内短消息中,跟我讨论关于430仿真器的问题,由于有附件需要上传,所以我在论坛上发帖回复。问题描述:\" 将msp430连接仿真器,需要引出哪些引脚?\"MSP430是通过JTAG来进行调试的,下面的内容就是JTAG的讲解。不算上供电,其实就是5 ...… 查看全部问答> |
|
按照 2012 年 RT-Thread roadmap,经过各位同学的努力,RT-Thread 1.1.0 Beta1 版本按时发布了,此版本依然是技术预览版,展示 RT-Thread 未来的发展方向,但不适合用于产品开发。该版本主要是全面更新了 RTGUI 组件;加入了新的驱动框架(usb host ...… 查看全部问答> |




