101、基于STM32单片机智能输液器红外点滴液位监控报警系统设计(程序+原理图+PCB源文件+参考论文+硬件设计资料+元器件清单等)

news2024/9/27 5:47:17

单片机主芯片选择方案
方案一:AT89C51是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。其片内的4K程序存储器是FLASH工艺的,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护我们的劳动成果。再者,AT89C51目前的售价比8031还低,市场供应也很充足。AT89C51可构成真正的单片机最小应用系统,缩小系统体积,增加系统的可靠性,降低系统的成本。只要程序长度小于4K,四个I/O口全部提供给用户。可用5V电压编程,而且擦写时间仅需lOms。AT89C51芯片提供三级程序存储器加密,提供了方便灵活而可靠的硬加密手段,能完全保证程序或系统不被仿制。PO口是三态双向口,通称数据总线口,因为只有该口能直接用于对外部存储器的读/写操作。
方案二:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字节,本次设计足够,内部高达20K字节的SRAM。

比较这两种方案,由于在学校期间学过数字电路、单片机原理、C语言程序设计,综合考虑单片机的各部分资源和作为学生能够获得的资源,经过对比此次设计要求,我选择用STM32系列芯片完成。而且学校也提供了相应的硬件操作平台,实际操作起来比较方便,故STM32为更合理的选择。

STM32STM32概述
        STM32系列是为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成两个不同的系列:“增强型”STM32F103系列和“基本型”STM32F101系列。增强型系列的时钟频率能达到72MHz,是同类产品中频率最高的;基本型的时钟频率为36MHz,用16位产品一样的价格得到比16位产品更大的性能,是16位产品的最好选择。两个系列都有内置的32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率为72MHz时,从闪存执行代码来看,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz[6]。
以STM32103C8T6单片机为处理器,该单片机为32位处理器。内核为Cortex-M3,其并行总线结构,嵌套中断向量控制单元,调试系统和它标准的存储映射。嵌套中断向量控制器(Nested Vector Interrupt Controller,简称NVIC)是Cortex-M3处理器中一个比较关键的组件,它为基于Cortex-M3的微控制器提供了标准的中断架构和优秀的中断响应能力,为超过240个中断源提供专门的中断入口,而且可以为每个中断源赋予单独的优先级。采用NVIC可以达到非常快的中断响应速度,从收到中断请求到执行中断服务的第一条指令仅需12个周期。这种极快的响应速度一方面得益于Cortex-M3内核对堆栈的自动处理机制,这种机制是通过固化在CPU内部的微代码实现的。另一方面,在中断请求连续出现的情况下,NVIC使用一种称为“尾链”的技术,使连续而来的中断可以在6个时钟周期内得到服务。在中断的压栈阶段,更高优先级的中断可以不耗费任何额外的CPU周期就能完成嵌入低优先级中断的动作。具体的细节后面我会继续总结的。用户可以通过设置CPU自动进入低功耗状态,而使用中断来将其唤醒,CPU在中断时间来临之前会一直保持睡眠状态[7]。
  Cortex-M3的CPU支持两种运行模式:线程模式(Thread Mode)与处理模式(Handler Mode)并且需要注意的是,这两种模式都拥有各自独立的堆栈。这种设计使得开发人员可以进行更为精密的程序设计,对实时操作系统的支持也就更好了。Cortex-M3处理器还包含了一个24位可自动重装载定的定时器,可以为内核(RTOS)提供一个周期中断。
在指令集方面,ARM7和ARM9都有两种指令集(32位指令集和16位指令集),而Cortex-M3系列处理器支持Thumb-2指令集。由于Thumb-2指令集融合了Thumb指令集和ARM指令集,使得32位指令集的性能和16位指令集的代码密度之间取得了平衡[5]。 专业嵌入式、单片机技术实训。而且,ARM Thumb-2 专门为C/C++编译器设计,这就意味着Cortex-M3系列处理器的开发应用可以全部在C语言环境中完成。
  STM32微控制器的推出标志着ST公司在两条产品主线(低价位主线和高性能主线)上迈出了重大一步。STM32最初发布时有14个不同型号,分为两个版本:最高CPU时钟为72MHZ的“增强型”和最高CPU时钟为36MHZ的“基本型”。这些不同STM32型号里内置的Flash最大可达128KB,SRAM最大为20KB,在STM32发布之初,配置更大Flash,RAM和更复杂外设的版本就已经在规划之中了。不管是什么版本,什么型号的STM32器件,它们在引脚功能和应用软件上是兼容的。这就使得开发人员在使用STM32系列微控制器时,不必改动PCB就可以根据需要随意更换器件型号。乍一看STM32的设备配备,与往日熟悉的51单片机倒有几分相似。一般,STM32都会配备常见外设,诸如多通道ADC,通用定时器,I2C总线接口,SPI总线接口,CAN总线接口,USB控制器,实时时钟RTC等。但是,它的每一个外部设备都具有独特之处。例如,12位精度的ADC具备多种转换模式,并带有一个内部温度传感器,带有双ADC的STM32器件,还可以使两个ADC同时工作,从而衍生出了更为高级的9种转换模式;STM32的每一个定时器都具备4个捕获比较单元,而且每个定时器都可以和另外的定时器联合工作以生成更为精密的时序;STM32有专门为电机控制而设的高级定时器,带有6个死区时间可编程的PWM输出通道,同时其带有的紧急制动通道可以在异常情况出现时,强迫PWM信号输出保持在一个预订好的安全状态;SPI接口含有一个硬件CC8单元,支持8位字节和16位半字数据的CC8计算。在对SD或MMC等存储介质进行数据存取时相当有用。而且,STM32还包含了7个DMA通道。没恶搞通道都可以用来在设备与内存之间进行8位,16位,32位数据的传输。每个设备都可以向DMA控制器请求发送或者接收数据。STM32内部总线仲裁器和总线矩阵将CPU数据接口和DMA通道之间的连接大大的简化了,这就意味着DMA通道单元是很灵活的其使用方法简单,足以应付微控制器应用中常见的数据传输要求。

一、硬件方案

硬件构成:本系统采用STM32单片机+时钟晶振电路+复位电路(上电自复位,手动复位)+ TFT1.44寸彩屏液晶显示电路+舵机驱动电路+红外光电滴速检测电路 + 非接触电容式液位传感器电路 + 蜂鸣器报警电路 + 无线蓝牙模块 + 按键电路及电源组成。


二、设计功能

1、单片机通过红外光电传感器模拟检测输液滴速(单位ml/min),通过非接触电容式液位传感器检测输液液体是否正常状态。可以通过按键设置输液
参数,即设置容量(单位ml)、设置滴速(单位/min),自动换算预计输液时间(单位min)。以上说有参数数据信息都可以通过TFT1.44寸屏显示出来。显
示还包括当前剩余容量以及当前舵机控制档位。舵机档位越小表示输液阀门压缩越轻(也就是现实中输液时的手控滚轮),档位越大压缩的越紧从而使
滴速发生改变。

2、上电初始化,液晶显示相应标题。液晶显示相应数据。其中设置容量、设置滴速可以通过按键进行设置,可以通过按键进入设置状态,设置容量变
化后对应剩余容量也会变,相当于重新运行。根据设置容量和滴速,自动换算预计时间。

3、通过红外光电传感器模拟检测输液滴速,当当前滴速低于设置滴速下限时,舵机自动调节档位降低,使压缩输液管力度减小增大滴速;当当前滴速
在上下滴速范围内,舵机保持当前状态;当当前滴速超过设置滴速上限,舵机自动调节档位增加,增加输液管压迫力度,使滴速减慢。

4、使用过程中,剩余容量=设置容量-已滴容量,已经滴了的容量根据红外光电传感器检测获得。非接触电容式液位传感器检测输液液体是否正常状态
。如果检测到输液瓶液位异常或者剩余容量为0,也就是输液瓶没有液体了,此时蜂鸣器进行报警提醒。如果有紧急情况,也可以通过按键直接报警,
提醒医务人员。

5、设计中设置的阈值参数保存到单片机Flash中,具有掉电不丢失功能。另外,红外光电传感器模拟检测输液滴速。

6、如果有需求加无线WIFI功能,可以定制。本次设计是通过无线蓝牙连接板子,通过APP功能查看相应数据,能够发送指令/或者接收指令。完成功能的使用,具有强大的实用性功能。

三、实物图 

 

 

 

四、原理图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。


 

 

五、PCB图

在本设计做的过程中,硬件和软件方面都遇到了许多问题,但是相比于软件,在硬件方面还是比较快解决的方面,因为硬件是比较容易检查出来错误的,软件比较晦涩难懂,还是有一定难度。
在硬件调试问题上,首先焊接好了元器件实物板后,先用万用表测量这个工业板子的电源方面,电源方面是最重要的问题,应该是特别需要检查的地方,以防止电源的短路和正负极的错误。然后在仔细检查电路的连接是否有问题,或者有没有虚焊或者没有焊接到的地方,然后核对一下元器件的安装是否有问题,安装上去是否符合规定,由于已经是大学四年都是做过了很多实训过来了,对于这些还是游刃有余的,但是在上机调试后还是发现了很多的问题。

 

六、程序源码  

Keil 5是美国Keil Software公司出品的51和STM32系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。


 

 

资料包括:

 

 

需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。

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

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

相关文章

Python程序设计

很多刚接触Python的同学会觉得Python就和shell语言一样,是一门脚本语言,并不需要设计,只需要关注要实现的功能。确实一门计算机语言的诞生就是为了去更好的解决当前的痛点,功能实现肯定是第一位的。但是如何在功能实现的前提下&am…

【人工智能】您必须了解的最佳聊天机器人框架

在本博客中,我们将讨论 7 大聊天机器人开发框架。 聊天机器人现在已成为许多企业不可或缺的一部分。他们利用聊天机器人提供客户支持服务。聊天机器人增强了人工代理以提供客户服务支持。企业每天都会收到大量查询。手动回答这些问题不仅耗时,而且还会增…

数据结构--由遍历序列构造二叉树

数据结构–由遍历序列构造二叉树 不同二叉树的中序遍历序列 中序遍历:中序遍历 左 \color{red}左 左子树、 根 \color{purple}根 根结点、中序遍历 右 \color{green}右 右子树 中序遍历序列:BDCAE 结论 : 一个中序遍历序列可能对应多种二叉树形态 \color{green}结论:一个中序…

4.4 x64dbg 绕过反调试保护机制

在Windows平台下,应用程序为了保护自己不被调试器调试会通过各种方法限制进程调试自身,通常此类反调试技术会限制我们对其进行软件逆向与漏洞分析,下面是一些常见的反调试保护方法: IsDebuggerPresent:检查当前程序是…

OpenCV 入门教程:图像读取和显示

OpenCV 入门教程:图像读取和显示 导语一、图像读取1.1、导入 OpenCV 库1.2、读取图像文件1.3、图像读取的返回值 二、图像显示2.1、创建窗口2.2、图像显示2.3、等待按键2.4、关闭窗口 三、示例应用总结 导语 在计算机视觉和图像处理领域,读取和显示图像…

非局部均值滤波(磨皮)

note 根据掩膜区域与其他区域的相似程度来赋予掩膜区域像素权重 相似程度由均方差来衡量 code /*\brief 矩阵求邻和\param type1,列方向;type2,行方向 */ static void MyCumSum(Mat& src, Mat& res, int type) {if ((src.channel…

关于impacket套件中的atexec.py在使用的时候报error: unrecognized arguments: 的解决方案

定位到库文件C:\Users\LC\AppData\Local\Programs\Python\Python311\Lib\argparse.py 加一个return args就行了 用完记得改回来,不然会影响其他脚本的功能

算法分析和设计选择和判断

算法分析和设计选择和判断 目录 平时测试 1.算法概述 1.1渐进符号的概念 1.2求时间复杂度 1.3比较时间复杂度 1.4时间复杂度定义 1.5算法的有效性 1.6算法的性质 1.7顺序搜索法 1.8渐进算法分析 2.递归和分治策略 2.1归并排序 2.2归并的空间复杂度 2.3插入排序 2.4递归 2.5归并…

Docker容器与HSM整合的好处

Docker透过容器使创建、部署和运行应用程式变得更加容易。容器允许开发人员可以将一个应用程式与它所需要的所有部分封包,然后将应用程式及其组件作为一个单一的套装软体。 Docker面临的挑战 : ● 遭受特权用户滥用的风险 Docker环境或容器内的权限配置不当可能会导…

Redis常见数据结构

文章目录 前言一、Redis通用命令二、String类型三、Key的层级结构四、Hash类型五、List类型六、Set类型七、SortedSet类型 前言 Redis是一个key-value的数据库,key一般是String类型,但是value的类型多种多样 在学习Redis不同数据类型时,我们…

ChatGPT付费创作系统V2.1.0独立版 +WEB端+ H5端 + 小程序端+文心一言

ChatGPT付费创作系统V2.1.0提供最新的对应版本小程序端,上一版本增加了PC端绘画功能,绘画功能采用其他绘画接口-意间AI,本版新增了百度文心一言接口。后台一些小细节的优化及一些小BUG的处理,前端进行了些小细节优化,针…

C#学习之路-类型转换

类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。 C# 中的类型转换可以分为两种:隐式转换和显式转换。 隐式类型转换 隐式转换是指将一个较小范围的数据类型转换为较大范围的数据类型时,编译器会自动完成类型转换…

chatgpt生成pygame opengl实现旋转用图片填充的3d三角形

import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import *def draw_triangle():vertices ((0, 2, 0), # 顶点1(-2, -2, 0), # 顶点2(2, -2, 0) # 顶点3)tex_coords ((1, 2), # 顶点1的纹理坐标(1, 1), # 顶点2的纹理坐标(2, …

如何使用SU插件一键生成通道图

如何使用SU插件一键生成通道图 通道图有什么作用? 以材质ID为例,最大的作用就是在PS通过选择材质ID图上的颜色,将颜色区域转化为蒙版,进而可以调节颜色区域所对应的效果图区域,原理类似于PS自带的通道:而A…

css 3D Demo

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <style> body{ /* 该属性必须在父或大于父的级别上添加,保证其子,孙等盒子可以以3D视角…

langchain调用chatGLM2纪实

一、科学上网要注意&#xff1a; 域名全代和全局代理&#xff08;网卡&#xff09;&#xff0c;都要打开。这样conda install特别快。 二、安装langchain 1、 conda install langchain 2、 conda install openai 注意&#xff1a; 使用pip install和conda install 是不同…

mysql如何运行 mysql 基本命令

一、 mysql如何运行 1. 成功安装mysql 点击进入–》如何安装 2. 确保mysql服务启动&#xff1a; 按下win&#xff0c;输入服务&#xff0c;然后找到mysql&#xff0c;启动服务&#xff1a; 3. 配置环境变量&#xff08;可跳过&#xff09; 点击进入–》如何配置环境变量…

SpringBoot项目出现Failed to configure a DataSource错误时解决方法

若在运行SpringBoot项目时&#xff0c;出现如下错误&#xff1a; Description:Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured.Reason: Failed to determine a suitable driver classAction:Consider the…

1.前言和介绍

目录 前言1. 说在前面2. 介绍3. 拓展&#xff1a;vscode3.1 文件传输3.2 高效调试配置3.2.1 配置launch.json3.2.2 配置task.json3.2.3 配置settings.json3.2.4 配置c_cpp_properties.json 前言 从零学习算法部署-TensorRT篇 杜老师推出的 tensorRT从零起步高性能部署 课程&…

7、添加billboard小旗子

本节演示添加billboard小旗子&#xff0c;使用第四节click的例子&#xff0c;通过鼠标点击地图添加billboard添加小旗子。 1、修改鼠标点击事件mouseUp&#xff0c;在函数中创建BillboardCollection对象并添加到地图中。鼠标点击时获取鼠标位置&#xff0c;转换成经纬度然后添…