0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AED除顫器實(shí)現(xiàn)方案

云深之無跡 ? 來源:云深之無跡 ? 2023-12-11 10:52 ? 次閱讀

別看了,題文不符,我本來寫腦電,后來不小心搞成AED科普了。

開源EEG-腦電采集硬件KS108x

TGAM腦電模塊-實(shí)戰(zhàn)應(yīng)用(良好封裝版)

腦電采集+TGAM腦電模塊

這個(gè)板子是官方的開發(fā)板(貴死)

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

真貴啊,700+可以買個(gè)FPGA的板子玩了。。。

沒辦法,為了MCU的源碼沖了。

便攜腦電方案評測——信號采集及方案開發(fā); 微弱電信號傳感——毫伏級電信號監(jiān)測性能評估及數(shù)據(jù)采集。

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

V3

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

V2.1

支持DC耦合AC耦合輸入模式配置; 就是一開始輸入的開關(guān)

具有靈活的開關(guān)和接口選擇實(shí)現(xiàn)電路配置;

媽的,只能說貴,就這點(diǎn)物料設(shè)計(jì)就100多,含淚掙我600,如果固件好,我就不說什么了。

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

我就看上這個(gè)GUI配置傳感器了,我必須下面搓一個(gè)

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

在上面的一溜,就是控制通道開閉和增益以及濾波器的,好像就這樣了

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

這個(gè)上位機(jī)的軟件呢,我也得看看怎么個(gè)事

使用QT6寫的,libwinpthread 是 Windows 上的 POSIX 線程庫。在 Windows 平臺(tái)上,POSIX 線程(Pthreads)是一種用于多線程編程的標(biāo)準(zhǔn)。libwinpthread 提供了對這些標(biāo)準(zhǔn)線程功能的支持,使得在Windows 上的應(yīng)用程序能夠更容易地移植和運(yùn)行POSIX 線程。使用了多線程和OpenGL實(shí)現(xiàn)炫酷的效果。

我多線程不會(huì)??!不會(huì)就不會(huì)了,不耽誤我中午吃飯。

對一個(gè)用戶來講,他是不管你芯片有多好,他只看你的效果好不好,很膚淺的就是看一個(gè)可視化的圖,他不懂濾波,就知道看圖有沒有什么毛刺。

而且一個(gè)芯片里面這么多的寄存器,固件里面一次寫死也不好,尤其是你要當(dāng)肯定比給別人用。OK,那就淺淺的來實(shí)現(xiàn)一下。

實(shí)現(xiàn)串口接收指令并通過SPI接口配置傳感器的功能

初始化串口和SPI模塊:在代碼中初始化串口和SPI模塊,配置它們的參數(shù),包括波特率、數(shù)據(jù)位、停止位等。

// 串口初始化 HAL_UART_Init(&huart1); 
// SPI初始化 HAL_SPI_Init(&hspi1);
接收串口指令:使用UART中斷或輪詢方式,從串口接收指令。當(dāng)有數(shù)據(jù)到達(dá)時(shí),需要解析接收到的數(shù)據(jù)以獲取控制傳感器的指令和參數(shù)。
// 串口接收 
HAL_UART_Receive_IT(&huart1, rxBuffer, RX_BUFFER_SIZE);
在UART的回調(diào)函數(shù)中處理接收到的數(shù)據(jù),解析指令:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
    // 解析接收到的指令并執(zhí)行相應(yīng)的操作
    parseAndExecuteCommand(rxBuffer);


    // 重新啟動(dòng)串口接收
    HAL_UART_Receive_IT(&huart1, rxBuffer, RX_BUFFER_SIZE);
}

配置SPI并發(fā)送數(shù)據(jù)到傳感器:根據(jù)接收到的指令,配置SPI參數(shù),并將相應(yīng)的數(shù)據(jù)發(fā)送到傳感器。
// SPI數(shù)據(jù)傳輸
HAL_SPI_Transmit(&hspi1, txBuffer, TX_BUFFER_SIZE, HAL_MAX_DELAY);

實(shí)現(xiàn)指令解析和傳感器配置函數(shù):編寫函數(shù)來解析串口接收到的指令并配置傳感器。
void parseAndExecuteCommand(uint8_t *command) {
    // 解析指令并執(zhí)行相應(yīng)的操作
    if (command[0] == 'C' && command[1] == 'F') {
        // 配置傳感器寄存器
        configureSensorRegisters(command + 2); // 傳遞參數(shù)部分
    }
}


void configureSensorRegisters(uint8_t *parameters) {
    // 根據(jù)參數(shù)配置傳感器寄存器
    // 將參數(shù)寫入SPI緩沖區(qū)并通過SPI接口發(fā)送到傳感器
}

一般是要寫在中斷里面,解析接收到的指令并執(zhí)行相應(yīng)的操作,然后重新啟動(dòng)中斷,根據(jù)接收到的指令,配置SPI參數(shù),并將相應(yīng)的數(shù)據(jù)發(fā)送到傳感器。

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

中斷里面是來把要控制的操作取出來,然后使用SPI發(fā)出去

這些代碼有點(diǎn)兒戲,讓我來寫一點(diǎn)工程化的東西。

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

不妨先寫一個(gè)控制傳感器的函數(shù),通常會(huì)實(shí)現(xiàn)解析和處理傳感器配置參數(shù)

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

函數(shù)檢查接收到的命令是否以"CONFIGURE:"開頭。如果是,它提取參數(shù)并調(diào)用configureSensorRegisters來處理和配置傳感器。

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

函數(shù)是一個(gè)回調(diào)函數(shù),當(dāng)通過UART接收到字節(jié)時(shí)會(huì)執(zhí)行。它收集接收到的字符,直到遇到換行或回車字符,表示命令的結(jié)束。然后,它使用parseAndExecuteCommand()處理接收到的命令。

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

因?yàn)槭侵袛?,里面也沒有什么好寫的

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

接下來看看電極分類

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

現(xiàn)在很多的都用音頻接口來連接電極

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

這個(gè)是開發(fā)板上面的4個(gè)引腳

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

這個(gè)是在繪制的裝配圖,給了AD的封裝

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

這個(gè)是TI的,可以看到在共模干擾這塊還是優(yōu)勢大

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

兩者參數(shù)各有高低,國產(chǎn)的偏置電流還小一些

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

這個(gè)LOGO還是有點(diǎn)意思的

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

這東西也會(huì)用在AED里面,你要這樣說,我突然感覺AED就有技術(shù)含量了

OPA305這個(gè)型號奇奇怪怪的,一般沒有中間的0,查了一下果然有貓膩。

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

就是沒有305這個(gè)型號

它捕獲治療電極發(fā)出的ECG信號,運(yùn)行ECG分析算法以識別可電擊復(fù)律,并建議操作員是否需要除顫。

基本除顫器包含高壓電源、存儲(chǔ)電容器、可選電感器和患者電極。它能在存儲(chǔ)電容器中產(chǎn)生電荷,形成潛在電流。電壓越高,可能形成的電流就越大。

如果AED分析患者的ECG并探測到可電擊復(fù)律,電容器將會(huì)充電,其中 Wc = 1/2CV^2c;而電容器電壓 Vc(t) = Vc(0)e–t/RC,同時(shí) R = R(lead) << R(chest)。按下電擊按鈕提供高壓脈沖時(shí),電流將開始流經(jīng)身體以去極化大部分心肌細(xì)胞,從而重建協(xié)調(diào)收縮和正常心率。電流量由電容器和身體阻抗確定。

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

也就是說,其實(shí)是這個(gè)AED電流是實(shí)時(shí)的計(jì)算的

除顫能量需要經(jīng)過經(jīng)胸阻抗的衰減后才能到達(dá)心臟 。經(jīng)胸阻抗測量是 AED 的重要功能之一。經(jīng)胸阻抗 的大小一般在 25~200 Ω,影響經(jīng)胸阻抗的因素有很多, 包括電極的類型和面積、電極板和皮膚間的接觸狀態(tài)等。經(jīng)胸阻抗測量是 AED 最重要的功能之一,該功能可以使 AED 根據(jù)患者經(jīng)胸阻抗大小實(shí)時(shí)調(diào)整除顫能量的 大小,同時(shí)可以對導(dǎo)聯(lián)脫落、導(dǎo)聯(lián)電極接觸異常等危險(xiǎn) 狀況實(shí)現(xiàn)預(yù)警 。

目前的人體阻抗測量分析中,大多研究仍然采用經(jīng)典三元等效電路模型,這個(gè)模型指出人體的等效阻抗主要是由細(xì)胞內(nèi)電阻、細(xì)胞體液電阻以及細(xì)胞膜所形成的等效電容 C 三者組成的,目前多數(shù)市場在售的 AED 使用基于此原理的雙電極恒流源激勵(lì)電壓測量的方法 在除顫前對患者進(jìn)行經(jīng)胸阻抗測量,具體做法是在電極連接完成后,AED 的恒流源激勵(lì)電路向患者發(fā)送一個(gè)高頻低壓激勵(lì)信號,隨后信號檢測電路檢測經(jīng)過經(jīng)胸阻抗衰減的激勵(lì)信號,通過計(jì)算得到患者的經(jīng)胸阻抗信息。

目前該方法的不足之處在于需要對患者施加額外的電流激勵(lì),且需要額外的時(shí)間成本,有向患者施加不當(dāng)除顫的風(fēng)險(xiǎn)。

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

除顫電流檢測電路如圖所示,出于除顫電流值較大的考慮,本系統(tǒng)選擇通過電流互感器將除顫大電流線性轉(zhuǎn)化為小電壓進(jìn)行數(shù)據(jù)采集,這樣非接觸式的測量方式可以保證測量的準(zhǔn)確性和安全性,為防止在除顫電流檢測時(shí), 除顫峰值電流過大超出電流互感器的量程范圍,本研究在除顫回路中串聯(lián) 50 Ω 的機(jī)內(nèi)補(bǔ)償電阻 Rc 來防止除顫電流過大。

《2015 美國心臟協(xié)會(huì) CPR 和 ECC 指南》指出,90%以上心臟驟停發(fā)生在醫(yī)院之外,數(shù)據(jù)顯示中國各大城市救護(hù)車到達(dá)現(xiàn)場最少要15-20分鐘,在心臟驟停發(fā)生的四分鐘內(nèi)及時(shí)施救顯得尤為重要,因此,AED體外除顫是目前心源性猝死搶救的最好辦法。

AED的普及為何困難? 高成本,低投入,低使用 在發(fā)達(dá)國家,平均每十萬人有用300臺(tái)AED,如果中國想要達(dá)到這樣的標(biāo)準(zhǔn),那么420萬臺(tái)AED將要被投入使用,平均每一臺(tái)AED,政府需要花20293元購買,此后每一年會(huì)產(chǎn)生580至1000元不等的耗材費(fèi)用,直到2-5年后報(bào)廢。這是一個(gè)高達(dá)874-900億元的大市場。 然而,現(xiàn)實(shí)很骨感。到2020年,政府共為AED投入1億元左右,2020年國家醫(yī)療衛(wèi)生的總投入是19201.22億元。假設(shè)每年銷售額保持不變,要消化874-900億的市場,大概還需要5個(gè)世紀(jì)。

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

貴啊

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

其實(shí)這個(gè)圖就很簡單的說明白了難點(diǎn)和原理,ECG可以精確的算出你什么時(shí)候需要電擊,在電子學(xué)里面快速的放電的東西只有電容合適一些。

這里面的很多東西都是靠算法和穩(wěn)定性的設(shè)計(jì),太酷了。

給出代碼:

#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)


審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50241

    瀏覽量

    750096
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16796

    瀏覽量

    349332
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4834

    瀏覽量

    96835
  • 除顫器
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    10403
  • AED
    AED
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    1842

原文標(biāo)題:帶你認(rèn)識AED-無限跑題版

文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    應(yīng)用于的FPGA解決方案

    ,而這些器件的安全性、高集成度和非易失性存儲(chǔ)的特點(diǎn),特別適用于自動(dòng)化體外(automated external defibrillator, AED)?! ∶栏呱赖腇PGA系列
    發(fā)表于 12-07 16:26

    醫(yī)療電子>自動(dòng)體外

    自動(dòng)體外涵蓋從處理到信號調(diào)節(jié)再到電源管理的自動(dòng)體外
    發(fā)表于 12-12 11:56

    心電圖(ECG)設(shè)計(jì)如何才能達(dá)到ESD、環(huán)境和保護(hù)的要求

    最近宣布其正在評估關(guān)于AED的管理規(guī)定)。 為了幫助設(shè)計(jì)師設(shè)計(jì)分立式保護(hù)電路,ADI公司 件已經(jīng)過測試,能夠耐受高水平的ESD和輸入
    發(fā)表于 10-19 09:20

    自動(dòng)體外儀技術(shù)及解決方案討論

    ADI提供了完整的自動(dòng)體外儀產(chǎn)品解決方案,這類方案已經(jīng)在全球獲得大量的成功應(yīng)用。鑒于常常有網(wǎng)友問及自動(dòng)體外
    發(fā)表于 11-01 09:23

    心臟的原理

    心臟的原理  心臟又名電復(fù)律機(jī),它是一種應(yīng)用電擊來搶救和治療心律失常的一種醫(yī)療電子
    發(fā)表于 06-07 18:48 ?3053次閱讀

    自動(dòng)體外(AED)的發(fā)展可贏取電容器的新發(fā)展

    的《健康中國行動(dòng)(2019—2030年)》明確提出:“完善公共場所急救設(shè)施設(shè)備配備標(biāo)準(zhǔn),在學(xué)校、機(jī)關(guān)、企事業(yè)單位和機(jī)場、車站、港口客運(yùn)站、大型商場、電影院等人員密集場所配備急救藥品、器材和設(shè)施,配備自動(dòng)體外(
    發(fā)表于 03-25 09:10 ?1484次閱讀

    加拿大無人機(jī)公司模擬測試帶有自動(dòng)體外AED)的無人機(jī)

    在救護(hù)車之前發(fā)送一架帶有自動(dòng)體外AED)的無人機(jī),可以使救援更快到達(dá)現(xiàn)場,從而挽救生命。 通過On the Fly項(xiàng)目,加拿大無人機(jī)交付公司(DDC)正在模擬情況下部署其Spa
    發(fā)表于 07-21 08:28 ?819次閱讀

    專門為急救人員在使用真正臨床AEDAED模擬

    SG-120C+型AED模擬儀是專門為急救人員在使用真正臨床AED之前的培訓(xùn)而設(shè)計(jì)的。該訓(xùn)練機(jī)在培訓(xùn)指南、訓(xùn)練程序方面完全模擬真實(shí)的AED
    發(fā)表于 08-06 11:24 ?1936次閱讀

    AED儀使用步驟及注意事項(xiàng)

    自動(dòng)體外又稱自動(dòng)體外電擊、自動(dòng)電擊、自動(dòng)
    的頭像 發(fā)表于 10-02 16:48 ?3w次閱讀

    原理及常見設(shè)備介紹

    測試儀對質(zhì)控的必要性!
    的頭像 發(fā)表于 08-30 13:54 ?7181次閱讀
    <b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>原理及常見<b class='flag-5'>除</b><b class='flag-5'>顫</b>設(shè)備介紹

    分析儀對質(zhì)控的必要性

    德國GMC-I高美測儀(上海電勵(lì)士)生產(chǎn)分析儀;講解除分析儀測試下的
    發(fā)表于 09-06 11:05 ?505次閱讀
    <b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>分析儀對<b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>質(zhì)控的必要性

    心臟檢測儀檢測的類型

    SECULIFE DF PRO 多模式分析儀是用于測試最新一代的智能儀器。它測量釋放
    發(fā)表于 09-19 13:35 ?467次閱讀
    心臟<b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>檢測儀檢測的<b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>類型

    科普|類型及如何測試

    起搏設(shè)備測試儀SECULIFE DF PRO 多模式分析儀是用于測試最新一代
    的頭像 發(fā)表于 03-23 15:00 ?1642次閱讀
    科普|<b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>類型及如何測試<b class='flag-5'>除</b><b class='flag-5'>顫</b>儀

    啟揚(yáng)方案:基于ARM+FPGA的AED自動(dòng)體外解決方案

    AED自動(dòng)體外AED(AutomatedExternalDefibrillator),自動(dòng)體外
    的頭像 發(fā)表于 12-12 09:38 ?1095次閱讀
    啟揚(yáng)<b class='flag-5'>方案</b>:基于ARM+FPGA的<b class='flag-5'>AED</b>自動(dòng)體外<b class='flag-5'>除</b><b class='flag-5'>顫</b><b class='flag-5'>器</b>解決<b class='flag-5'>方案</b>

    生命護(hù)航,“救”在身邊!安泰電子AED儀及CPR急救培訓(xùn)圓滿結(jié)束!

    AED儀及CPR急救培訓(xùn)為增強(qiáng)員工健康意識和應(yīng)對突發(fā)狀況的急救能力,安泰電子在1F大廳配備了AED
    的頭像 發(fā)表于 07-19 08:01 ?152次閱讀
    生命護(hù)航,“救”在身邊!安泰電子<b class='flag-5'>AED</b><b class='flag-5'>除</b><b class='flag-5'>顫</b>儀及CPR急救培訓(xùn)圓滿結(jié)束!