[免费开源]基于freescale单片机的心电信号采集与处理

这篇具有很好参考价值的文章主要介绍了[免费开源]基于freescale单片机的心电信号采集与处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 本文的工程可访问:https://gitee.com/pidanQwQ/dsp    (包含两套不同的方案,可自行下载对比)

 或者在CSDN中(仅一套):【免费】基于Freescal单片机的心电信号采集与处理资源-CSDN文库

功能要求:

⑴实现ADS1292获取心电信号原始数据,并能通过串口或其他接口传输到PC电脑;

⑵实现PC电脑中通过MATLAB或者Python对原始数据进行时域和频域分析;

⑶实现PC电脑中通过MATLAB或者Python对原始数据进行降噪和提取心率;

⑷实现单片机中对原始数据进行降噪和提取心率;

⑸TFT屏幕中绘制心电信号曲线和显示心率数值;

技术指标:

⑴0频处的缓变直流衰减不低于30dB;

⑵降噪滤波器以35Hz为3dB通带截止频率,过渡带不超过10Hz,阻带衰减不低于40dB;

⑶心率估算误差不超过10%;

其他发挥(不限于):

        例如用其他MCU/FPGA等实现部分或完整功能;尝试IIR滤波器降噪;PC和MCU同步显示波形;改变ADS1292采样频率或者模拟放大倍数;读取ADS1292内部测试方波信号;测量心率波形的峰值电压等。

1需求分析

1.1 基本设计要求

(1)实现ADS1292获取心电信号原始数据,并能通过串口传输到PC电脑;

①分析:通过查询数据手册,如表1.1所示,可以得知采集的心电信号是通过补码的方式存储的,因此为了还原ADS1292采样的信号需要对其进行反变化得到真实的原始信号。同时为了方便单片机进行后续的运算,需要舍弃低八位。

表1.1 ADS1292采集信号的数据格式

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

②方案:通过SCI0串口发送原始数据给电脑,然后使用MATLAB进行码反变化。具体操作为:单片机发送2个八位无符号整形数,其中第一个为高位、一个为低位。数据还原时需要对高位乘以256,而低位乘以1,两者相加,若其大于2的15次方,则说明为补码,需要用2的16次减去此数。

(2)实现PC电脑中通过MATLAB或者Python对原始数据进行时域和频域分析;

①分析:经过(1)得到原始数据可以使用MATLAB容易画出其时域和频域并对其进行分析。

②方案:使用signalAnalyzer工具或者使用Plot、fft函数进行画图分析。

(3)实现PC电脑中通过MATLAB或者Python对原始数据进行降噪和提取心率;

①分析:对原始数据进行降噪可以使用FIR或者IIR。本次课程设计将同时实现对原始心电信号进行FIR滤波以及IIR滤波。考虑到计算效率以及稳定性,需要着重考虑滤波器的结构。对于FIR滤波器,如图1.1所示为直接型结构。直接型结构代码简单易懂,但对于高阶结构时会导致误差累积,计算会相对复杂。如图1.2所示,为线性相位结构,相比直接型,最大的有点即是减少了运算量。通过理论计算可知,对于N阶滤波器,直接型需要N+1次乘法,而线性相位结构仅仅需要(N+1)/2次乘法,计算量几乎减少了一半。这对于高阶滤波器十分重要。

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

图1.1 FIR直接型结构

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

图1.2 FIR线性相位结构

    对于IIR滤波器,当考虑其有限字长效应时容易导致其不稳定,由于直接型不方便调制其零极点,这种现象在直接型上体现尤其明显。因此,需要考虑误差更小的,可以使用级联型。为了进一步减少对存储单元的使用,可以将输入和输出公用一个延迟单元(即直接Ⅱ型)。如图1.3所示,为级联型IIR滤波器。

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

图1.3 IIR级联型结构

对于心率检测的基本思想即寻找每个周期的心电信号的峰值,由此可计算得到周期长度,进而得到心率。

②方案:通过分析,FIR使用运算量更加少的线性相位结构。对于IIR滤波器,采用稳定性更高、误差更小的级联型结构。对于心率测量可以采用如下步骤:首先,随机采样得到一个周期心电信号数据,再寻找此周期内信号的最大值,再将此最大值乘一个系数得到阈值。其次,在整段信号中寻找峰值,判断条件为当前信号的值大于前一信号、大于后一信号且大于阈值,满足上述3个条件即判定为峰值,然后记录下此时位置,根据如下公式计算出心率。

                                                          HearRate=fs/count×60

其中HeartRate为最终的心率,单位为次/min,fs为采用频率。

(4)实现单片机中对原始数据进行降噪和提取心率;

①分析:通过(3)过程对数据进行仿真分析,并且验证其可行性,最终会移植到单片机程序中。但由于MATLAB仿真分析时不需要考虑算力同时由于仿真时思维方式为“数据帧”的方式,而单片机的思维方式为“数据流”的方式,因此部分方案在单片机上可能行不通,需要做部分的调整。

②方案:将MATLAB仿真时用的for循环删去,改而在单片机主程序的for循环使用,同时将过分冗余的算法简化,以便不影响单片机的采样。为了能够在单片机上测量心率,可采用如下方案:设置一个门限电平,达到门限开始计数,直到下一个门限电平,这时候可以读取两个门限电平之间的点数,又已知ADS1292的采样频率,可以容易算出心率值。

(5)TFT屏幕中绘制心电信号曲线和显示心率数值;

①分析:绘制曲线可以使用自带的库函数LCD_DrawLine函数,但是考虑到单片机性能,绘图时不能采用帧方式,而应该采用流方式。即来一个点画一个点,同时需要用背景色绘制曲线,以便删除掉上一循环此刻位置的曲线。显示心率数值可以使用LCD_ShowNum函数。

②方案:使用自带库函数LCD_DrawLine和LCD_ShowNum。

1.2 提高设计要求

(1)测量心率波形的峰值电压;

①分析:改测量需要一个基准值,后续只需要根据该基准值进行列表查找即可。

②方案:以ADS1292内部方波信号为基准来测量其他信号的幅值。

(2)改变ADS1292的模拟放大倍数以及读取ADS1292的内部测试方波信号。

①分析:通过手册查找对应的寄存器,修改其值即可得到想要的信号。

②方案:查手册,修改寄存器的值。

2总体方案设计

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

3联合调试与总体测试

以下为部分结果展示,注意幅值测量不一定准确,请读者自行测量和修改:

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件

[免费开源]基于freescale单片机的心电信号采集与处理,重庆大学课程设计,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-810495.html

到了这里,关于[免费开源]基于freescale单片机的心电信号采集与处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕设开源 基于单片机的交通安全车辆测速系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月10日
    浏览(42)
  • 毕设开源 基于stm32的智能平衡小车 - 单片机 物联网嵌入式

    文章目录 0 前言 1 项目背景 2 设计思路 3 硬件设计 4 软件设计 4.2 直立控制程序设计 4.3 速度控制程序设计 4.4 方向控制程序设计 4.5 关键代码 5 最后 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这

    2024年02月22日
    浏览(65)
  • 51单片机步进电机角度控制详解(免费提供代码+仿真)

    我个人认为,步进电机的基本原理和介绍看看其他博主的介绍就好了。我比较希望讲一下我对步进电机的关于自己一种理解方式,可能与真正步进电机的原理差的有点大。下面还是给一下我推荐的一些博主对步进电机的介绍文章。 百度步进电机链接 步进电机驱动及原理—s

    2023年04月18日
    浏览(46)
  • 【C C++开源库】适合单片机 嵌入式的C语言单元测试库_单片机 单元测试框架

    #define TEST_ASSERT_LESS_THAN_UINT64(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT64((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_size_t(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_UINT((threshold), (actual), __LINE__, NULL) #define TEST_ASSERT_LESS_THAN_HEX8(threshold, actual) UNITY_TEST_ASSERT_SMALLER_THAN_HEX8((thres

    2024年04月25日
    浏览(49)
  • 单片机毕设 stm32智能语音垃圾分类系统(项目开源)

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目 毕业设计 stm32智能语音垃圾分类系统(项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享:见文末! 学长设计的系统主要使用 stm32单片机为基础设计并开发一个智能垃圾桶系统。该系统实现智能开盖, 垃

    2024年03月10日
    浏览(64)
  • 单片机开发|基于单片机的婴儿睡眠监测系统设计

    作者简介:全栈开发工程,从事Java、Python、前端、小程序方面的开发和研究,对大数据应用与开发比较感兴趣, 主要内容:Java项目、前端项目、Python项目、小程序开发、大数据项目、单片机 收藏点赞不迷路  关注作者有好处 文末获取源码   感谢您的关注,请收藏以免忘记

    2024年02月10日
    浏览(50)
  • 基于51单片机的单片机倒车雷达报警系统

      前言 至今世界汽车工业通过了近122年的进展,今世汽车已经超级成熟和普遍了。汽车已经渗透于国防建设、国民经济和人类生活的各个领域当中,成为人类生存必不可少的、最要紧的交通工具,尽管每辆车都有后视镜,但不可幸免地都存在一个后视盲区,倒车雷达那么能够

    2024年02月04日
    浏览(51)
  • 51单片机项目(9)——基于51单片机的电子琴设计

    简易电子琴设计设计内容: 1.用矩阵键盘代表琴键,至少能弹出8个音符,分别是:音符1.23.4.,5,6,  2.键按下的时间长短表征节拍的长短,用蜂鸣器发出声音 3.数码管显示出当前音符 4.音量可调 (代码及其工程文件放在最后) 电路图如下: 51单片机电子琴是一种基于51单片机(

    2024年02月09日
    浏览(49)
  • 51单片机课程设计——基于单片机的AD模数转换设计

    一、功能简介 1.A/D 是模拟量到数字量的转换,依靠的是模数转换器(AnalogtoDigitalConverter),简称ADC。D/A是数字量到模拟量的转换,依靠的是数模转换器(DigitaltoAnalogConverter),简称DAC。它们的道理是完全一样的,只是转换方向不同,因此我们讲解过程主要以A/D为例来讲解。

    2024年02月04日
    浏览(54)
  • 单片机原理与应用课程设计-基于51单片机的时钟日历

    摘 要 本课程设计是基于51单片机的日历时钟设计。作为嵌入式系统中常用的控制器,单片机在各种电子设备和系统中广泛应用。日历时钟作为一个常见的功能模块,在现代生活中具有重要意义。因此,设计一个基于51单片机的日历时钟,不仅有助于我们掌握单片机编程技术和

    2024年02月20日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包