首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >电子设计竞赛 | 拿过校内“一等奖”的作品

电子设计竞赛 | 拿过校内“一等奖”的作品

作者头像
李肖遥
发布2020-07-06 15:45:59
7420
发布2020-07-06 15:45:59
举报

ID:技术让梦想更伟大

作者:李肖遥

本作品是大学时期的,校内电子设计竞赛一等奖

人体生命体征模拟器--电赛专题

设计要求

设计一款模拟人体生命体征模拟器,要求其能准确模拟人体生命的各种体征(呼吸,心跳,体温,声音);并且能够对相关参量进行有效控制。以呼吸或者心跳体征为主要模拟实现的功能:

  1. 输入电压:5V或者12V
  2. 频率可控范围:
  • 0.2-0.8Hz(人体正常呼吸的频率范围)
  • 1-3Hz(人体心跳频率范围)
  1. 频率控制步进:1%
  2. 幅度调节范围:0-100%(幅度大小不做规定)
  3. 通过上位机进行状态控制(通信方式和上位机平台形式可自选)

总体框图

1.初始设计方案比较

方案一: 在传动系统的基础上采用直流电机作为驱动,配合测速编码器进行PWM闭环控制来稳定步进频率,这样在方案思想上是可以达到频率方面的要求的,但是在幅度控制方面,我们尝试在转动片上加上步进电机来控制改变幅度,却出现幅度在断电后再次上电状态不确定,因此放弃了此方案。

方案二: 采用舵机作为传动系统的驱动,因为舵机具有良好的即走即停效果,一般的舵机便可具有一定大小的扭矩,通过控制舵机信号PWM的占空比来控制舵机摆动的幅度,控制频率方面可以通过在不同的时间给舵机不同PWM可以幅度和频率上进行较为精确的控制,我们选用SD5数字舵机来进行驱动,效果较为理想,因此选择此方案来进一步完善。

2.单元电路设计与元器件的选择以及软件平台

我们在此选择的通过7.2V镍铬电池,采用线性稳压芯片LM2940来稳定输出5V电压,分别给16位单片机芯片和舵机供电,焊接键盘来做外部控制。

  • 4个220uf的电容C1,C2,C3,C4.
  • 一个3KΩ电阻,
  • 一个9013NPN三极管,
  • 一个无源蜂鸣器,
  • 一个12864液晶显示器,
  • 一个飞思卡尔MC9S12XS128MAL型号16位单片机最小系统,
  • 一个SD5数字舵机
  • 6个LED灯

2.1 5V稳压电源:

直流稳压是通过国家半导体公司生产的LM2940稳压5V芯片将镍铬电池7.2V直流电降压转换成稳压输出的5V电压的,LM2940最大输出电流有1A,典型的输入输出电压压降为0.5V,还有就是过流保护,过压保护这样一般电源芯片都有的东西,接着就是典型电路图,一般接发直接按照典型电路图来接就OK了,图为直流稳压电源方框图。

5V稳压电源

2.2 最小系统控制器芯片介绍

最小系统

飞思卡尔MC9S12XS128MAL型号16位操作芯片, 该最小系统芯片内部模块非常齐全,内部主要模块有PWM模块,SCI串口通信模块,PIT定时器计数器模块,ADC模块等.芯片处理性能上该芯片内部带有PLL锁相环倍频模块,最高倍频可达120MHz,兼顾稳定性和处理速度,我们选用倍频到80MHz。

2.3 舵机控制原理:

舵机控制原理图

2.4 软件开发平台:

本次编写调试程序使用的是CodeWarrior编译软件平台,充分利用其强大的在线调试模式,为程序调试过程提供了很大的便利其使用界面如图

软件开发平台

CodeWarrior的功能强大,可用于大部分单片机、嵌入式系统的开发。用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。利用CodeWarrior和配套的BDM。用户可以进行一系列的调试工作,如监视寄存器状态、修改PC 指针、设置断点等,这样能快速地帮助我们找到软件或硬件的问题。

Hiwave下载调试界面

在源程序编译、连接通过后,就可以进行程序下载了。下载前,先将单片机上已经存在的程序擦除,然后点击Load,将bin文件夹下生成的后缀为.abs的文件打开,就可以完成下载。

2.5 BDM开发工具:

BDM开发工具

后台调试模式(Background Debug Mode)是当代单片机普遍采用的调试方式之一,在BDM 模式下主要可以实现以下3 个方面的功能:首先是应用程序的下载与在线更新。在BDM 模式下,可以对Flash 做写入和擦除操作,故可以在产品出厂前即将应用程序下载的产品当中去,也可以在产品出厂后更应用程序。

BDM 模式的另一功能是做单片机内部资源的配置与修复,程序的加密处理等。一些MCU 的内部寄存器只能在BDM 模式下操作,特别是一些单片机内部电源配置的寄存器。BDM 的第三个功能是做应用程序的动态调试。S12 系列单片机的BDM调试模式有这种功能。和很多现代单片机一样,S12 单片机CPU 内部使用了4 级流水线结构,这种结构使得CPU 的读取指令,解释指令,执行指令等操作看起来好像是并行的。

3.系统原理分析和软件设计与实现

3.1 金属片周期运动的原理分析

在程序中,通过1ms定时中断,在中断中计数,当计数标志位Timecnt等于周期时间(所需频率的倒数)时,给舵机一个PWM波,由于舵机需要反应时间,所以在Timecnt等于一半周期的时候给另外一个PWM波,

0    T/2 (PWM(A2))      T (PWM(A1))

心跳频率是1~3HZ,步进1%,即步进0.02HZ,相应的周期T=1/f;用一个数组存放所有的频率对应的周期时间,f=1HZ,T=1s,Timecnt=1000;f=1.02HZ,T=0.98S,Timecnt=980;

依此类推,此数组可用visual C++6.0编写程序,得到数组的100个元素的值。

当要改变频率的值时,改变计数变量Timecnt所等于的值,这些值存放在数组里,我们可以通过上位机或者是按键来改变所选择的数组元素,这样实现精确控时输出占空比变化的PWM波;

当频率为1HZ时选择数组的第一个元素值1000,然后当计数变量等于1000,即1s时间到,周期循环;

当频率为1.02HZ时选择数组的第二个元素值980,依此类推可实现金属片所有的运动频率。

3.2 软件设计流程图

此处保密,忽略

3.3软件算法及流程

系统的软件编写是基于MC9S12XS128单片机,主要用到S12芯片中的PWM模块,TIM模块、I/O模块以及SCI模块,PIT模块等模块化设计。PWM模块主要用来控制舵机的运转;TIM模块主要是用在了延时时间模块, I/O模块主要是用来分配给按键和LED灯、信息采集;SCI模块主要用在无线串口调试模块;PIT模块用于定时中断。

3.3.1 PIT模块

PIT模块

在图中可以看到6个定时器模块,Micro Timer 0Micro Timer 1Timer 0Timer 1Timer 2Timer 3,其中前两个是8位的,后四个是16位的。从图中可以看出PIT模块是以总线时钟(Bus Clock)为基准时钟的,总线时钟通过8位Micro Timer 0Micro Timer 1倍频形成两个基时钟,即Micro Timer Base 0Micro Timer Base 1,这两个基时钟通过16位Timer给PIT提供时钟(通过寄存器PITMUX设置)。其实相对于PIT模块是一个24位的定时器。通过给PITLD0和PITMTLD0的值,来设置定时中断时间,timer cycle=定时周期=(PITMTLD0+1)*(PITLD0+1)*(1/fBus) =1ms

3.3.2 显示键盘接口模块

系统使用LCD12864作为显示器件,将金属条运动所对应的频率,幅度,经过数据处理转换进行实时生命体征各个参数(频率,幅度)液晶显示,同时使用5个功能按键实现频率和幅度以及呼吸和心跳模式的切换的设定,分别接入单片机的5个外部中断接口,功能依次为 “频率+”、“频率-”、“幅度-”、“幅度+”,“心跳和呼吸模式切换”当有键按下后,进入中断服务子程序,通过判断标志位确定哪个键按下,执行相应功能。

3.3.3 SCI模块

系统使用SCI0串口中断,采用蓝牙方案,蓝牙方案低功耗,小体积以及低成本的芯片解决方案使得 Bluetooth 技术甚至可以应用于极微小的设备中。

SCI模块

3.3.4 PWM模块

系统采用PIT和PWM模块来控制实现输出占空比变化的脉冲波。在一个周期时间内,通过周期的一半时间点和周期的末点来给定不同的占空比,从而实现舵机来回周期性的摆动,从而达到模拟心跳及呼吸运动的目的。这里使用PIT中断精确定时,给S-D5舵机的PWM波的频率为200HZ,舵机响应速度较好。

4.机械传动模拟介绍及操作说明

4.1 通过给舵机不同占空比的脉冲,使舵机转动不同大小的角度;

4.2舵机转动带动转轴上的传动片绕传动片顶端的转轴转动;

4.3 传动片带动传动条,使传动条在滑道的束缚下沿滑到做周期性往返运动;

作品操作说明:

操作方式一:

手工焊接7支按键,第一个“频率+”,第二个“频率-”,第三个“幅度-”,第四个“幅度+”,第五个“模式切换”

操作方式二:

image

通过蓝牙串口通信进行无线监控,基于安卓系统的蓝牙串口APK软件,只需在手机中安装连接便可进行监测和控制。

操作方式三:

通过功能强大的Labview软件,使用简单方便的图形编程语言,打包制作出基于串口通信的PC端上位机

5.测试方案与测试结果

5.1测试方案

(1)、硬件测试:

将各个电路绘制,焊接完毕后,测试电源模块能否输出5V电压,测试传感器是否可以测频率,按键是否正常,以及舵机是否可以正常工作。

(2)、硬件软件联调:

编写软件可以实现金属片周期性运动模拟人体生命体征心跳和呼吸的功能,能够满足基本的要求,并进行一定的频率,幅度控制,这样可以验证,软硬件的基本部分是没有问题的,当确定这一点后,我们将根据题目,进行下一步的策略算法设计。初步任务完成后,我们会优化软硬件,使其更为精确,流畅,稳定的运行。

(3)调试过程及问题分析:

  1. 用示波器来测试舵机反应延迟时间,分析得到舵机反应延迟时间为纳秒级,因此对系统表现的影响很小,可以忽略;
  2. 滑道为手工切割拼接,产生有一定摩擦力,会对精度有一定影响;
  3. 调试时发现舵机在转换方向时静态电流很大,对整个系统电压会有影响。

(4)对问题的解决措施:

  1. 为有效减小滑倒摩擦力的影响,将滑道和滑动头间的间距调整合适;
  2. 对于舵机改变转角时静态电流很大,可能会对整个电路电压质量产生影响,因此决定单独放置一块LM2940线性电压芯片为舵机供电;
  3. 由于控制芯片为使用最小系统,多处线路暴露,所以在操作时要注意避免线路意外短接而对系统造成伤害;
  4. 对于按键控制时可能出现的重复扫描键值,便将按键扫描放置在定时器中断里,每1ms查询一次,并且加入延时函数进一步减少键盘误判。

5.2 测试条件与仪器

测试条件:

检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

测试仪器:

秒表

测试分析与结论:

  1. 心跳频率步进分析:
  1. 呼吸频率步进分析:

根据测试数据,可以实现题目中,由此可以得出以下结论:

  1. 系统可以实现输入电压:5V
  2. 系统可以完成频率可控范围:0.2-0.8Hz(人体正常呼吸的频率范围) 1-3Hz(人体心跳频率范围)
  3. 系统可以比较稳定的实现频率控制步进:1%,幅度调节范围:0-100%,幅度大小分为0~18个不同幅度

综上所述:

本设计达到设计要求,并在实现的过程中体现了很多创新点。

6.心得体会及建议

经过这次设计电路和自己翻阅查找各种资料,我们不仅学到了关于程序流程方面有关的知识,学会了模块化编程,利用中断去处理一下问题,而且遇到并且解决了程序执行冲突的问题,而且在电路设计方面增强了自己运用学习工具PROTEL的能力和实践动手能力,使自己对电路又有了更加深刻的了解,也清楚了电路板制作的全部过程。

通过实验测试的数据表明,这一开关电路短路保护电源具有良好的实用性,是防止低电压电路短路引起的不良后果的有效方法,造价较低可以大范围的使用。系统能够较好地通过控制金属片的运动实现模拟人体生命体征。

此外,通过这次比赛,增强了同学之间的协作、互助能力,跟同学互相探讨和研究,基本上解决了所遇到的问题,通过对电路和程序的调试和修改后,我们圆满完成了设计的要求。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术让梦想更伟大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 人体生命体征模拟器--电赛专题
    • 设计要求
      • 1.初始设计方案比较
        • 2.单元电路设计与元器件的选择以及软件平台
          • 2.1 5V稳压电源:
          • 2.2 最小系统控制器芯片介绍
          • 2.3 舵机控制原理:
          • 2.4 软件开发平台:
          • 2.5 BDM开发工具:
        • 3.系统原理分析和软件设计与实现
          • 3.1 金属片周期运动的原理分析
          • 3.2 软件设计流程图
          • 3.3软件算法及流程
        • 4.机械传动模拟介绍及操作说明
          • 4.1 通过给舵机不同占空比的脉冲,使舵机转动不同大小的角度;
          • 4.2舵机转动带动转轴上的传动片绕传动片顶端的转轴转动;
          • 4.3 传动片带动传动条,使传动条在滑道的束缚下沿滑到做周期性往返运动;
        • 5.测试方案与测试结果
          • 5.1测试方案
          • 5.2 测试条件与仪器
        • 6.心得体会及建议
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档