实践项目3:温度采集系统

一、功能说明

基于AVR单片机设计一温度采集系统。该系统由一个主机和一个从机构成,能够实时检测并显示现场温度,当温度超过预置温度时,进行声光报警。

二、具体要求

1、主机与从机之间采用串口通信;

2、从机采集温度并通过串口发送给主机;

3、主机接收从机信息并显示,当温度超过上下限温度时进行声光报警;

4、当温度再次回归正常范围时,报警自动解除;

5、报警时按下“复位”键后关闭声音;

6、上下限温度可通过按键设定并查询;

7、具有故障检测报警功能;

三、实验报告

摘要:本系统以ATmega16为处理器,基于AVR单片机设计一温度采集系统;该系统由一个主机和一个从机构成,主机与从机之间采用串口通信,从机的实时采集温度传感器的数据,通过串口将检测到数据发送给主机,主机将现场温度显示在七段共阳极数码管上;通过按键设置温度阈值,当温度超过预置温度时,进行声光报警。通过编写中断处理程序及ADC采集等程序,实现对温度的测量;通过编写串口通讯程序,主机能够接收从机信息并显示;当温度超过上下限温度时主机进行声光报警,以及检测到温度传感器断线后进行报警。测试结果表明本系统稳定可靠,实现了题目要求。

1 设计要求

该系统要求以AVR单片机核心设计一温度采集系统。系统主要由一个主机和一个从机构成,主机与从机之间采用串口通信,从机能够实时检测并显示现场温度,主机接收从机信息并显示,当温度超过上下限温度时进行声光报警,并且具有故障检测报警功能,报警时按下“复位”键后关闭声音。

2 总体设计

2.1 系统组成及工作原理

本系统主要由温度传感器模块、单片机处理模块、数码管显示模块、声光报警模块,按键调节模块等五部分组成,如图1所示。

图1 系统构成

(1)温度传感器模块:使用PTC热敏电阻与1K电阻串联到电路,由于热敏电阻阻值与温度成正比例关系,通过采集热敏电阻的电压信号来间接测量温度,并将电压信号输入给从机。

(2)单片机处理模块:通过单片机处理模块,编写相应中断函数,串口通信模块,AD模数采集模块,从而实现对电压采集,以及主从机之间数据传送。

(3)显示模块:使用7段共阳数码管实时显示现场温度值(℃)、设定的温度阈值(℃)。

(4)报警模块:当系统发生故障、温度超过上下限温度时,进行声光报警;当温度再次回归正常范围时,报警自动解除;报警时按下“复位”键后关闭声音。

(5)按键调节模块:通过按键可以调节温度上下阈值,以及关闭报警声音。

上述为本系统总体方案及各个模块的功能介绍,接下来将详细的讲述各个部分的设计计算。

2.2 温度测量原理

温度检测原理如图2所示,在本系统中,使用一个PTC热敏电阻与1K电阻串联;PTC热敏电阻的基本电气特性是它们随其温度变化而改变电阻.随着温度升高,即随着温度升高,RT两端电压增加。

图2 温度检测原理图

将RT输出端口与单片机IO口连接,单片机中的ADC模块对电压进行采样,将其转化为数字量,将低8位存放在ADCL中,高2位存放到ADCH中;同时计算出数字量的电压值,以及换算的温度值。

计算温度步骤如下:

(1)热敏电阻两端电压计算公式,电压记为V,电阻计为R,电源电压5V。

(2)  计算数字量的电压值,计为V1。

(3)将数字量的电压值转化为温度值,单位(℃)。

            

至此,实现了对温度的测量及读取。

3 硬件设计

3.1 硬件组成

        本系统硬件原理如图3所示,输入设备有按键输入和温度输入,其中温度输入为模拟量,需要进行模数转换;处理器分为主机和从机,主从机间采用串口通讯;输出设备为7段共阳极数码管和LED以及蜂鸣器。

图3 硬件原理图

3.2 单片机核心模块

ATmega16是基于增强的AVR RISC结构的低功耗8 CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 数据吞吐量高达1 MIPS/MHz图四为ATmega16的最小系统。

图4 ATmega16最小系统图

ATmega16的最小系统包括电源、时钟电路、复位电路。X1为高速外部时钟;电源供电5V;晶振频率为8MHZ,与两个电容并联接地;复位电路为电阻与电容串联接地。

3.3 检测电路

RT1为PTC热敏电阻,一种典型具有温度敏感性的半导体电阻,超过一定的温度(居里温度)时,它的电阻值随着温度的升高呈接近线性的增高;在不同输入的温度情况下,AD0点的电压会随温度升高线性变化;将AD0接入到单片机中,通过测量电压即可间接检测温度值。检测电路原理图见图5。

图5 温度检测电路

3.4显示电路

如图6所示,本设计所选用是一个通用的七段六位共阳极数码管,要实现动态显示,必须将位码(1-6)轮流通低电位,段码控制数码管的显示.其中位码接PC0~PC7引脚,段码接到PB0~PB5。

图6 显示电路原理图

3.5按键输入电路

         如图7所示,三个功能按键,SW1接到主机PD2, SW1接到主机PD3,RESET接到主机PA0;当检测到SW1按键按下后,主机提高温度的阈值上限;当检测到SW2按键按下后,主机降低温度的阈值下限;当检测到RESET按键按下后,关闭报警声音提示。

图7 按键电路

                                     

3.6声光报警电路

图8中,用到一个PNP三极管(2N2905)来驱动蜂鸣器与LED。当PB.8输出高电平的时候,蜂鸣器将发声,当 PD8 输出低电平的时候,蜂鸣器停止发声同时LED常亮。

图8 声光报警电路

4 程序设计

4.1 主程序设计

(1)主机主程序流程图

主机主程序流程图如图9所示,首先初始化各个模块,当检测到PD2、PD3电平发生跳变后,即进入中断,改变设定温度阈值的上限和下限,通过七段共阳极数码管显示阈值;同时串口接受从机发送过来温度值,通过七段共阳极数码管显示温度值;若温度值低于阈值的下限或高于阈值的上限,则进行声光报警;若发生断线,串口接收到断线标志位0(代表断线),则进行声光报警。

图9 主程序流程图

(2)从机主程序流程图

从机主程序流程图如图10所示,由于采集的电压为模拟量,需要用到处理内部的ADC模块,首先配置PA0的AD采集通道,将模拟转变为数字量,同时对数字量进行处理,计算出相对应的温度值,并且设置断线标志。然后将数据通过串口传送给主机。

图10 从机程序流程图

4.2 子程序设计

(1)串口程序设计

首先开启串口时钟以及设置相应I/O模式,接下来设置波特率为9600,数据位长度为8位,无奇偶校验位。设置PD0为串口的发送数据,PD1为串口的接收数据。当从机发送数据时,产生的中断告诉主机接收数据,把UCSRA寄存器数据送入status,把UDR寄存器数据送入r_data;主机对发送的r_data进行处理。

              

  图11 从机串口程序流程图            

图12 主机串口程序流程图

(2)声光报警程序设计

如图13所示,当温度值data大于温度上限cc,或小于温度下限dd;或者发生断线故障,则触发报警,使PD7置高电平,LED常亮,蜂鸣器工作。

5 调试及结果

对各个功能进行逐项验证。

  1. 从机采集温度并通过串口发送给主机;

如图14所示,系统检测到当前温度为30℃,从机通过串口将温度发送给主机,主机将温度在数码管显示,显示测量的温度为30℃,温度上限初始80℃;图15左侧显示测量温度为30℃,右侧温度下限初始为30℃。

图14 温度及上限值显示图

图15 温度及下限值显示图

  1. 设置温度上下限阈值,检测声光报警;

如图16所示,系统检测到当前温度为30℃,通过调节DOWN按键,将温度下限设置为35℃;如图17所示,通过调节UP按键,将温度上限设置为85℃;系统检测到温度低于设定下限,LED点亮,蜂鸣器工作。

图16 温度及下限值显示图

     

图17 温度及上限值显示图

                                                                                            

  1. 当温度再次回归正常范围时,报警自动解除;

如图18所示,系统检测到当前温度为30℃,将温度下限从35℃设定在25℃时,系统自动取消报警。

     

  

图18 温度及下限值显示图

                                                                                          

  1. 报警时按下“复位”键后关闭声音;

如图19所示,系统检测到当前温度为30℃,温度下限为35℃,当RESER按键按下后,报警声音被关闭。

  

图19 温度及下限值显示图

  1. 具有故障检测报警功能;

如图20所示,当断开AD0输入信号(break-line)时,LED常量且蜂鸣器工作。

  

图20 故障显示图

通过设置温度上下限值,验证在不同输入温度情况下,系统检测到温度值以及是否声光报警,测量十次的结果如表1和表2所示。

表1 测试情况表

温度上限(75℃)下限(35℃)测试情况

输入(℃)

显示(℃)

温度上限(℃)

温度下限(℃)

声光报警

30

30

75

35

50

50

75

35

60

60

75

35

70

70

75

35

80

80

75

35

表2 测试情况表

温度上限(85℃)下限(25℃)测试情况

 输入(℃)

显示(℃)

温度上限(℃)

温度下限(℃)

声光报警

30

30

85

25

50

50

85

25

60

60

85

25

70

70

85

25

80

80

85

25

由表1和表2所示的测量结果可以看出,该系统可以准确测量现场的温度,并且能够准确判断温度是否超过设定的上下限,及时进行声光报警;测试结果表明整个系统实现了题目要求,通过测量10组数据,证明系统可靠稳定。

附录

  1. 电路原理图

可通过调节热敏电阻数值改变输入温度;数码管左侧显示实测温度值,右侧显示温度上下限值,UP:调温度上限。down:调节温度下限,RESET:关闭声光报警。系统仿真图见图17。

图21 电路原理图

四、仿真和代码获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等

须知 1Next.js 官网(英文)https://nextjs.org/2Next.js 文档(中文)https://nextjscn.org/docs/3Ant Design组件总览https://ant-design.antgroup.com/components/overview-cn4tailwindcss类名大全 官网https://www.tailwindcss.cn/docs/justify-content 5tailwindcss常用类…

Python知识分享第25天-快速排序算法

快速排序算法 快速排序(QuickSort)是一种基于分治法的高效排序算法。它通过选择一个“基准”元素,将数组分成两个子数组,其中一个子数组的所有元素都比基准小,另一个子数组的所有元素都比基准大,然后递归地…

String【Redis对象篇】

🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…

我们来学mysql -- MSI安装(安装篇)

主题 书接上文,在《探讨win安装方式》中官方推荐MSI要是把大厂的标准奉为圭臬,说啥认啥,他一翻脸,小丑不就是咱了再说了,都干到家门口了8.4版本官方文档,还不给他梭罗下 MSI 点击**.msi弹出MySQL Install…

【IC面试问题:UCIE PHY LSM AXI Cache】

IC面试问题:UCIE PHY LSM && AXI && Cache 1 UCIE PHY LSM有几种状态? 以及L1和L2这两种低功耗状态有什么区别?2 AXI的特性? 通道之间有依赖关系吗? master和slave的valid和ready关系? 写数…

html|本地实现浏览器m3u8播放器,告别网络视频卡顿

前言 网络上经常是以m3u8文件传输视频流的 ,但是有时网络慢往往导致视频播放卡顿。于是我在想能不能先下载然后再播放呢?于是尝试下载然后实现本地播放m3u8视频。 正文 1.找到网络视频流的m3u8连接 一般在浏览器按F12就可以看到有请求视频流的连接。 …

交互开发---测量工具(适用VTK或OpenGL开发的应用程序)

简介: 经常使用RadiAnt DICOM Viewer来查看DICOM数据,该软件中的测量工具比较好用,就想着仿照其交互方式自己实现下。后采用VTK开发应用程序时,经常需要开发各种各样的测量工具,如果沿用VTK的widgets的思路&#xff0c…

uniapp -- 实现页面滚动触底加载数据

效果 首选,是在pages.json配置开启下拉刷新 {"path": "pages/my/document/officialDocument","style": {"navigationStyle":</

导游现场面试需要注意的问题

今天给大家带来一些导游现场面试需要注意的问题&#xff0c;大部分的城市导游考试已经考完了&#xff0c;但是还有一些城市的十二月份才考&#xff0c;有需要的朋友们赶紧来看&#xff0c;有备无患。 01、做好充足准备 认真准备做好每个景点的讲解介绍&#xff0c;不要抱有侥幸…

【ubuntu】将Chroma配置为LINUX服务

Chroma是一个轻量级向量数据库。既然是数据库&#xff0c;那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法&#xff0c;而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统&#xff1a;ubu…

PageHelper自定义Count查询及其优化

PageHelper自定义Count查询及其优化 文章目录 PageHelper自定义Count查询及其优化一&#xff1a;背景1.1、解决方法 二&#xff1a;利用反射判断请求参数是否有模糊查询2.1、分页不执行count2.2、思路2.3、代码示例 三&#xff1a;自定义COUNT查询SQL(只适用于单表)3.1、局限性…

TPAMI 2023:When Object Detection Meets Knowledge Distillation: A Survey

摘要 目标检测&#xff08;Object Detection&#xff0c;OD&#xff09;是计算机视觉中的一项关键任务&#xff0c;多年来涌现出了众多算法和模型。尽管当前 OD 模型的性能有所提升&#xff0c;但它们也变得更加复杂&#xff0c;由于参数规模庞大&#xff0c;在工业应用中并不…

ZED相机应用

下载SDK wget https://stereolabs.sfo2.cdn.digitaloceanspaces.com/zedsdk/3.6/ZED_SDK_Ubuntu18_cuda11.5_v3.6.5.run 安装 ./ZED_SDK_Ubuntu18_cuda11.5_v3.6.5.run skip_python 测试 cd /usr/local/zed/tools ls ZED_Calibration ZED_Depth_Viewer ZED_Diagnostic ZED_E…

农业园区气象站

农业园区气象站是一种专为农业生产和科研设计的气象监测设备&#xff0c;它集成了多种传感器和技术&#xff0c;用于实时、准确地监测和记录农业园区内的气象数据。以下是农业园区气象站的主要功能和用处&#xff1a; 一、主要功能 实时监测&#xff1a;农业园区气象站能够实时…

编译问题 fatal error: rpc/rpc.h: No such file or directory

在编译一些第三方软件的时候&#xff0c;会经常遇到一些文件识别不到的问题&#xff0c;这里整理下做个归总。 目前可能的原因有&#xff08;排序分先后&#xff09;&#xff1a; 文件不存在&#xff1b;文件存在但路径识别不了&#xff1b;…… 这次以常见的编译lmbench测试…

设计模式的艺术读书笔记

设计模式的艺术 面向对象设计原则概述单一职责原则开闭原则里氏代换原则依赖倒转原则接口隔离原则合成复用原则迪米特法则 创建的艺术创建型模式单例模式饿汉式单例与懒汉式单例的讨论通过静态内部类实现的更好办法 简单工厂模式工厂方法模式重载的工厂方法工厂方法的隐藏工厂方…

element-plus的el-tree的双向绑定

el-tree改造了下 可选可取消 有默认值 不包含父级id&#xff08;也可打开注释 包含父级id&#xff09; 默认展开 点击节点也可触发选择 节点内容自定义 <template><div class"absolute"><el-scrollbar class"pall"><div class"…

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)

目录 ARC规则 概要 所有权修饰符 __strong修饰符 __weak修饰符 __unsafe_unretained修饰符 __autoreleasing修饰符 ARC规则 概要 “引用计数式内存管理”的本质部分在ARC中并没有改变&#xff0c;ARC只是自动地帮助我们处理“引用计数”的相关部分。 在编译单位上可以…

MySQL-DQL之数据多表操作

文章目录 一. 多表操作1. 表与表之间的关系2. 外键约束3. 创建外键约束表(一对多操作) 二. 多表查询1. 多表查询① 交叉连接查询(基本不会使用-得到的是两个表的乘积) [了解]&#xff08;不要记住&#xff09;② 交集运算&#xff1a;内连接查询(join)③ 差集运算&#xff1a;外…

《经验分享 · 软考系统分析师》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…