0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AED除颤器实现方案

云深之无迹 来源:云深之无迹 2023-12-11 10:52 次阅读

别看了,题文不符,我本来写脑电,后来不小心搞成AED科普了。

开源EEG-脑电采集硬件KS108x

TGAM脑电模块-实战应用(良好封装版)

脑电采集+TGAM脑电模块

这个板子是官方的开发板(贵死)

de3d1316-9648-11ee-8b88-92fbcf53809c.png

真贵啊,700+可以买个FPGA的板子玩了。。。

没办法,为了MCU的源码冲了。

便携脑电方案评测——信号采集及方案开发; 微弱电信号传感——毫伏级电信号监测性能评估及数据采集。

de621210-9648-11ee-8b88-92fbcf53809c.png

V3

de8ccd0c-9648-11ee-8b88-92fbcf53809c.png

V2.1

支持DC耦合AC耦合输入模式配置; 就是一开始输入的开关

具有灵活的开关和接口选择实现电路配置;

妈的,只能说贵,就这点物料设计就100多,含泪挣我600,如果固件好,我就不说什么了。

deac212a-9648-11ee-8b88-92fbcf53809c.png

我就看上这个GUI配置传感器了,我必须下面搓一个

dec58188-9648-11ee-8b88-92fbcf53809c.png

在上面的一溜,就是控制通道开闭和增益以及滤波器的,好像就这样了

ded719e8-9648-11ee-8b88-92fbcf53809c.png

这个上位机的软件呢,我也得看看怎么个事

使用QT6写的,libwinpthread 是 Windows 上的 POSIX 线程库。在 Windows 平台上,POSIX 线程(Pthreads)是一种用于多线程编程的标准。libwinpthread 提供了对这些标准线程功能的支持,使得在Windows 上的应用程序能够更容易地移植和运行POSIX 线程。使用了多线程和OpenGL实现炫酷的效果。

我多线程不会啊!不会就不会了,不耽误我中午吃饭。

对一个用户来讲,他是不管你芯片有多好,他只看你的效果好不好,很肤浅的就是看一个可视化的图,他不懂滤波,就知道看图有没有什么毛刺。

而且一个芯片里面这么多的寄存器,固件里面一次写死也不好,尤其是你要当肯定比给别人用。OK,那就浅浅的来实现一下。

实现串口接收指令并通过SPI接口配置传感器的功能

初始化串口和SPI模块:在代码中初始化串口和SPI模块,配置它们的参数,包括波特率、数据位、停止位等。

// 串口初始化 HAL_UART_Init(&huart1); 
// SPI初始化 HAL_SPI_Init(&hspi1);
接收串口指令:使用UART中断或轮询方式,从串口接收指令。当有数据到达时,需要解析接收到的数据以获取控制传感器的指令和参数。
// 串口接收 
HAL_UART_Receive_IT(&huart1, rxBuffer, RX_BUFFER_SIZE);
在UART的回调函数中处理接收到的数据,解析指令:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
    // 解析接收到的指令并执行相应的操作
    parseAndExecuteCommand(rxBuffer);


    // 重新启动串口接收
    HAL_UART_Receive_IT(&huart1, rxBuffer, RX_BUFFER_SIZE);
}

配置SPI并发送数据到传感器:根据接收到的指令,配置SPI参数,并将相应的数据发送到传感器。
// SPI数据传输
HAL_SPI_Transmit(&hspi1, txBuffer, TX_BUFFER_SIZE, HAL_MAX_DELAY);

实现指令解析和传感器配置函数:编写函数来解析串口接收到的指令并配置传感器。
void parseAndExecuteCommand(uint8_t *command) {
    // 解析指令并执行相应的操作
    if (command[0] == 'C' && command[1] == 'F') {
        // 配置传感器寄存器
        configureSensorRegisters(command + 2); // 传递参数部分
    }
}


void configureSensorRegisters(uint8_t *parameters) {
    // 根据参数配置传感器寄存器
    // 将参数写入SPI缓冲区并通过SPI接口发送到传感器
}

一般是要写在中断里面,解析接收到的指令并执行相应的操作,然后重新启动中断,根据接收到的指令,配置SPI参数,并将相应的数据发送到传感器。

deeb8734-9648-11ee-8b88-92fbcf53809c.png

中断里面是来把要控制的操作取出来,然后使用SPI发出去

这些代码有点儿戏,让我来写一点工程化的东西。

df08bfb6-9648-11ee-8b88-92fbcf53809c.png

不妨先写一个控制传感器的函数,通常会实现解析和处理传感器配置参数

df1ee8f4-9648-11ee-8b88-92fbcf53809c.png

函数检查接收到的命令是否以"CONFIGURE:"开头。如果是,它提取参数并调用configureSensorRegisters来处理和配置传感器。

df38d1f6-9648-11ee-8b88-92fbcf53809c.png

函数是一个回调函数,当通过UART接收到字节时会执行。它收集接收到的字符,直到遇到换行或回车字符,表示命令的结束。然后,它使用parseAndExecuteCommand()处理接收到的命令。

df581494-9648-11ee-8b88-92fbcf53809c.png

因为是中断,里面也没有什么好写的

df7f6c60-9648-11ee-8b88-92fbcf53809c.png

接下来看看电极分类

df96d152-9648-11ee-8b88-92fbcf53809c.png

现在很多的都用音频接口来连接电极

dfacc674-9648-11ee-8b88-92fbcf53809c.png

这个是开发板上面的4个引脚

dfd8337c-9648-11ee-8b88-92fbcf53809c.png

这个是在绘制的装配图,给了AD的封装

dfece8e4-9648-11ee-8b88-92fbcf53809c.png

这个是TI的,可以看到在共模干扰这块还是优势大

e00f1b30-9648-11ee-8b88-92fbcf53809c.png

两者参数各有高低,国产的偏置电流还小一些

e024831c-9648-11ee-8b88-92fbcf53809c.png

这个LOGO还是有点意思的

e03af584-9648-11ee-8b88-92fbcf53809c.png

这东西也会用在AED里面,你要这样说,我突然感觉AED就有技术含量了

OPA305这个型号奇奇怪怪的,一般没有中间的0,查了一下果然有猫腻。

e04e3716-9648-11ee-8b88-92fbcf53809c.png

就是没有305这个型号

它捕获治疗电极发出的ECG信号,运行ECG分析算法以识别可电击复律,并建议操作员是否需要除颤。

基本除颤器包含高压电源、存储电容器、可选电感器和患者电极。它能在存储电容器中产生电荷,形成潜在电流。电压越高,可能形成的电流就越大。

如果AED分析患者的ECG并探测到可电击复律,电容器将会充电,其中 Wc = 1/2CV^2c;而电容器电压 Vc(t) = Vc(0)e–t/RC,同时 R = R(lead) << R(chest)。按下电击按钮提供高压脉冲时,电流将开始流经身体以去极化大部分心肌细胞,从而重建协调收缩和正常心率。电流量由电容器和身体阻抗确定。

e06066fc-9648-11ee-8b88-92fbcf53809c.png

也就是说,其实是这个AED电流是实时的计算的

除颤能量需要经过经胸阻抗的衰减后才能到达心脏 。经胸阻抗测量是 AED 的重要功能之一。经胸阻抗 的大小一般在 25~200 Ω,影响经胸阻抗的因素有很多, 包括电极的类型和面积、电极板和皮肤间的接触状态等。经胸阻抗测量是 AED 最重要的功能之一,该功能可以使 AED 根据患者经胸阻抗大小实时调整除颤能量的 大小,同时可以对导联脱落、导联电极接触异常等危险 状况实现预警 。

目前的人体阻抗测量分析中,大多研究仍然采用经典三元等效电路模型,这个模型指出人体的等效阻抗主要是由细胞内电阻、细胞体液电阻以及细胞膜所形成的等效电容 C 三者组成的,目前多数市场在售的 AED 使用基于此原理的双电极恒流源激励电压测量的方法 在除颤前对患者进行经胸阻抗测量,具体做法是在电极连接完成后,AED 的恒流源激励电路向患者发送一个高频低压激励信号,随后信号检测电路检测经过经胸阻抗衰减的激励信号,通过计算得到患者的经胸阻抗信息

目前该方法的不足之处在于需要对患者施加额外的电流激励,且需要额外的时间成本,有向患者施加不当除颤的风险。

e0770fc4-9648-11ee-8b88-92fbcf53809c.png

除颤电流检测电路如图所示,出于除颤电流值较大的考虑,本系统选择通过电流互感器将除颤大电流线性转化为小电压进行数据采集,这样非接触式的测量方式可以保证测量的准确性和安全性,为防止在除颤电流检测时, 除颤峰值电流过大超出电流互感器的量程范围,本研究在除颤回路中串联 50 Ω 的机内补偿电阻 Rc 来防止除颤电流过大。

《2015 美国心脏协会 CPR 和 ECC 指南》指出,90%以上心脏骤停发生在医院之外,数据显示中国各大城市救护车到达现场最少要15-20分钟,在心脏骤停发生的四分钟内及时施救显得尤为重要,因此,AED体外除颤是目前心源性猝死抢救的最好办法。

AED的普及为何困难? 高成本,低投入,低使用 在发达国家,平均每十万人有用300台AED,如果中国想要达到这样的标准,那么420万台AED将要被投入使用,平均每一台AED,政府需要花20293元购买,此后每一年会产生580至1000元不等的耗材费用,直到2-5年后报废。这是一个高达874-900亿元的大市场。 然而,现实很骨感。到2020年,政府共为AED投入1亿元左右,2020年国家医疗卫生的总投入是19201.22亿元。假设每年销售额保持不变,要消化874-900亿的市场,大概还需要5个世纪。

e08ae206-9648-11ee-8b88-92fbcf53809c.png

贵啊

e0a92068-9648-11ee-8b88-92fbcf53809c.png

其实这个图就很简单的说明白了难点和原理,ECG可以精确的算出你什么时候需要电击,在电子学里面快速的放电的东西只有电容合适一些。

这里面的很多东西都是靠算法和稳定性的设计,太酷了。

给出代码:

#include "main.h"
#include "stdio.h"
#include "string.h"


UART_HandleTypeDef huart1;
SPI_HandleTypeDef hspi1;


#define RX_BUFFER_SIZE 50
#define TX_BUFFER_SIZE 50


uint8_t rxBuffer[RX_BUFFER_SIZE];
uint8_t txBuffer[TX_BUFFER_SIZE];


void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_SPI1_Init(void);


void parseAndExecuteCommand(uint8_t *command);
void configureSensorRegisters(uint8_t *parameters);


int main(void)
{
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();
    MX_SPI1_Init();


    HAL_UART_Receive_IT(&huart1, rxBuffer, 1);


    while (1)
    {
        // Main application loop
    }
}


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if (huart == &huart1)
    {
        static uint8_t commandBuffer[RX_BUFFER_SIZE];
        static uint8_t commandIndex = 0;


        if (rxBuffer[0] == '
' || rxBuffer[0] == '
')
        {
            // End of command, process the received command
            commandBuffer[commandIndex] = '�';
            parseAndExecuteCommand(commandBuffer);


            // Reset command buffer
            commandIndex = 0;
            memset(commandBuffer, 0, sizeof(commandBuffer));
        }
        else
        {
            // Add the received character to the command buffer
            commandBuffer[commandIndex++] = rxBuffer[0];
        }


        // Restart UART receive
        HAL_UART_Receive_IT(&huart1, rxBuffer, 1);
    }
}


void parseAndExecuteCommand(uint8_t *command)
{
    if (strncmp((char *)command, "CONFIGURE:", 10) == 0)
    {
        // Extract parameters and configure sensor
        configureSensorRegisters(command + 10);
    }
}


void configureSensorRegisters(uint8_t *parameters)
{
    // Parse and process sensor configuration parameters
    // Example: parameters may be a series of bytes to be sent via SPI
    // Update txBuffer with the data to be sent
    // ...


    // Send data via SPI
    HAL_SPI_Transmit(&hspi1, txBuffer, strlen((char *)txBuffer), HAL_MAX_DELAY);
}


// ... (HAL_UART_Init, HAL_SPI_Init, SystemClock_Config, MX_GPIO_Init implementations)


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2525

    文章

    48134

    浏览量

    740233
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16024

    浏览量

    343714
  • 开发板
    +关注

    关注

    25

    文章

    4439

    浏览量

    94088
  • 除颤器
    +关注

    关注

    0

    文章

    20

    浏览量

    10398
  • AED
    AED
    +关注

    关注

    0

    文章

    16

    浏览量

    1795

原文标题:带你认识AED-无限跑题版

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    自连科技AED远程管理解决方案# 物联网#AED#智慧医疗

    物联网AED
    alinket2022
    发布于 :2023年01月19日 13:43:31

    应用于的FPGA解决方案

    ,而这些器件的安全性、高集成度和非易失性存储的特点,特别适用于自动化体外(automated external defibrillator, AED)。  美高森美的FPGA系列
    发表于 12-07 16:26

    医疗电子>自动体外

    自动体外涵盖从处理到信号调节再到电源管理的自动体外
    发表于 12-12 11:56

    心电图(ECG)设计如何才能达到ESD、环境和保护的要求

    最近宣布其正在评估关于AED的管理规定)。 为了帮助设计师设计分立式保护电路,ADI公司 件已经过测试,能够耐受高水平的ESD和输入
    发表于 10-19 09:20

    自动体外仪技术及解决方案讨论

    ADI提供了完整的自动体外仪产品解决方案,这类方案已经在全球获得大量的成功应用。鉴于常常有网友问及自动体外
    发表于 11-01 09:23

    以ARM9为控制核心的心电模拟发生系统介绍

    随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能
    发表于 07-11 06:49

    基于ARM9处理的心电模拟发生系统设计

    随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能
    发表于 07-22 06:50

    以ARM9为控制核心的心电模拟发生系统介绍

    随着社会的发展,人们的医疗保健意识越来越强,所以医生的培训也就成为非常重要的环节。心电技术作为医生培训的一个主要方面,若操作规范,动作熟练,往往在紧急关头可以救人于危难之间,在培训的时候,如果能
    发表于 07-22 08:31

    基于HM301D的STEVAL-IME002V2,用于生物电传感和生物阻抗测量

    STEVAL-IME002V2,评估板围绕新型HM301D诊断质量模拟前端设计,用于生物电传感和生物阻抗测量。该板设计用于演示HM301D在单导联心电图系统中的性能,如自动体外
    发表于 08-19 08:52

    应用于的FPGA解决方案有哪些?

    越来越多的人们认识到当心脏病患者的心脏骤停时,快速及时的救治能够带来很大的好处。这促使更多公共场所和办公室配备有AED设备。而且在美国,因为各州***强制规定,如果场地所有者没有配备足够的AED设备,将有可能被追究法律责任,这后果显然比偶然出现的
    发表于 08-26 07:21

    什么是基于FPGA的解决方案

    越来越多的人们认识到当心脏病患者的心脏骤停时,快速及时的救治能够带来很大的好处。这促使更多公共场所和办公室配备有AED设备。而且在美国,因为各州***强制规定,如果场地所有者没有配备足够的AED设备,将有可能被追究法律责任,这后果显然比偶然出现的
    发表于 09-04 07:01

    专门为急救人员在使用真正临床AEDAED模拟除颤仪

    SG-120C+型AED模拟除颤仪是专门为急救人员在使用真正临床AED之前的培训而设计的。该训练机在培训指南、训练程序方面完全模拟真实的AED机的情景,目的在于帮助急救人员熟悉AED
    发表于 08-06 11:24 1779次阅读

    车配AED引热议 背靠物联方案引发部署新思路

    无论是车载还是公共场所配置AED,在设备管理上需要更科学、更经济的方式,需要充分考虑到AED放置的 安全性、可用性、经济性指标。自连科技以物联技术为AED远程管理提供可靠的解决方案
    的头像 发表于 02-02 15:27 703次阅读
    车配<b class='flag-5'>AED</b>引热议 背靠物联<b class='flag-5'>方案</b>引发部署新思路

    车配AED引热议 背靠物联方案引发部署新思路

        近日,两则关于AED的新闻频上热搜,引起热议。 AED 一则是河北某私家车司机在车内配置AED,并在车身注明“紧急情况,破窗可用”的标识,引发好评。另一则是南京某网约车队配置了多台AE
    的头像 发表于 02-03 00:18 803次阅读

    启扬方案:基于ARM+FPGA的AED自动体外除颤器解决方案

    AED自动体外除颤器AED(AutomatedExternalDefibrillator),自动体外除颤器,又被称为“救命神器”,是抢救突发性心脏骤停患者的一种
    的头像 发表于 12-12 09:38 802次阅读
    启扬<b class='flag-5'>方案</b>:基于ARM+FPGA的<b class='flag-5'>AED</b>自动体外除颤器解决<b class='flag-5'>方案</b>