大家好!
我的名字是马里亚诺,我是一名生物医学工程师。我花了一些周末来设计和实现基于Arduino板的低成本ECG设备的原型,该板通过蓝牙连接到Android设备(智能手机或平板电脑)。我想与您分享我的“ECG SmartApp”项目,您将找到构建ECG设备的所有说明和软件。该设备仅作为设计研究项目,它不是医疗设备,因此请在继续之前阅读警告。该设备由用于从身体获取ECG信号的硬件板和用于记录,处理和存储信号的Android App组成。
简单的电路设计和布局是同时具有低成本(少部件)和良好性能的良好折衷。
通过排除智能手机和一次性部件(电极和电池),该设备的整体成本约为40欧元(43美元)。
此ECG设备项目仅作为设计研究项目,并非医疗设备,因此请在继续之前阅读下一步中的警告和安全问题。
供应:
第1步:警告
此ECG设备项目仅用作设计研究项目,并非医疗设备。仅使用电池(最大电压:9V)。请勿使用任何交流电源,任何变压器或任何其他电源,以避免对您自己或他人造成严重伤害和电击。请勿将任何交流线路供电的仪器或设备连接到此处提出的ECG设备。 ECG设备与人电连接,只有低压电池(最大9V)必须用于安全预防措施并防止损坏设备。将电极放置在主体上为电流提供了极好的路径。当身体连接到任何电子设备时,您必须非常小心,因为它可能导致严重甚至致命的电击。对于因使用本手册中描述的任何电路或程序而造成的任何伤害,作者概不负责。作者没有声称任何电路或程序是安全的。使用风险由您自己承担。任何想要制造这种设备的人都必须充分了解以安全和可控的方式使用电力。
第2步:需要的软件文件(Android App和Arduino Sketch)
可以容易地构建ECG设备,并且仅需要电子学的基本知识来实现硬件电路。不需要任何软件编程知识,因为您只需要通过从Andriod智能手机打开apk文件来安装App,并在Arduino板上上传提供的Arduino草图(这可以通过使用Arduino软件IDE轻松完成网上提供的许多教程)。
第3步:说明
该设备由电池供电,由前端电路和Arduino板组成,前端电路通过公共电极获取ECG信号(仅肢体引线),Arduino板将模拟信号数字化并通过蓝牙协议传输到Android智能手机。相关的应用程序实时显示ECG信号,并提供过滤和存储信号的可能性。
第4步:装配手册和用户手册
有关构建ECG设备的所有详细说明也可以在汇编手册文件中找到,而用户手册文件中描述了使用它的所有信息。
第5步:硬件描述
简单的电路设计和布局是同时具有低成本(少部件)和良好性能的良好折衷。
当设备开启时,电池(+ Vb)提供Arduino板和LED L1(R12 = 10 kOhm控制L1电流);器件的其余部分由Arduino 5 V电压输出(+ Vcc)供电。基本上该器件工作在0 V(-Vcc)和5 V(+ Vcc)之间,但单电源通过具有相同电阻(R10和R11 = 1 MOhm)的分压器转换为双电源,然后是单位增益缓冲器(1/2 TL062)。输出为2.5 V(TL062电源的中间电压:0-5 V);然后,正电源和负电源轨相对于公共端子(参考值)提供双电源(±2.5 V)。电容器C3(100 nF),C4(100 nF),C5(1 uF,电解电容)和C6(1 uF,电解电容)使电压更稳定。出于安全问题,每个电极通过560 kOhm(R3,R4,R13)的保护电阻连接到设备,以限制在设备内部发生故障时流入患者的电流。这些高电阻(R3,R4,R13)应该用于罕见的情况,当低压电源(6或9 V,根据使用的电池电压)意外地直接到达患者导线时,或者由于INA组件失败。此外,两个CR高通滤波器(C1-R1和C2-R2)放置在两个输入端,可以阻止直流电流,减少因电极接触电位产生的不必要的直流和低频噪声。在放大级之前,ECG信号被高通滤波,截止频率约为0.1Hz(-3dB)。 R1(作为R2)的存在降低了预放大级的输入阻抗,使得信号减小了一个因子,取决于R1和R3的值(如R2和R4);这样的因子可以近似为:
如果R1 = 2.2MOhm且R2 = 560kOhm,则R1 /(R1 + R3)= 0.797
更可取的是选择容量值非常接近的耦合C1-C2(1 uF,薄膜电容),耦合R1-R2(2.2 MOhm),电阻值彼此非常接近,对于耦合R3而言相同 - R4。通过这种方式,仪表放大器(INA128)可以减少不需要的偏移并且不会放大。双输入电路中元件的电路参数之间的任何不匹配都会导致CMRR的劣化。这些组件应该非常匹配(甚至是物理布局),以便选择它们的公差尽可能低(或者操作员可以使用万用表手动测量它们的值,以便选择具有尽可能接近的值的耦合组件)。 R5(2.2 kOhm)根据公式定义INA128增益:
G_INA = 1 +(50kΩ/ R5)
心电图信号由INA放大,并由C7和R7连续高通滤波(如果C7 = 1 uF且R7 = 2.2 MOhm,-3 dB截止频率约为0.1 Hz),以消除任何直流偏移电压。运算放大器(1/2 TL062)在具有增益的非反相配置中产生更高的放大率:
G_TL062 = 1 +(R8 /(Rp + R6))
为了让用户在运行时更改增益,操作员可以选择使用可变电阻器(微调器/电位器)代替Rp或母插座条用于可更换的电阻器(因为未焊接)。然而,在第一种情况下,不可能准确地知道ECG信号的实际增益(数据的mV值将不正确),而在第二种情况下,可以通过指定mV的正确值。应用程序“设置”部分中公式“增益”中的Rp值(请参阅“用户手册”)。作为由R9和C9组成的RC滤波器,C8电容产生一个低通滤波器,其截止频率约为-3 dB,频率约为40 Hz。截止频率值由下式给出:
f = 1 /(2 *π* C * R)。
对于@ 40 Hz 1的低通滤波器,RC分量值为:
R8 = 120 kOhm,C8 = 33 nF,R9 = 39 kOhm,C9 = 100 nF
ECG信号在0.1和40 Hz之间的频带中进行滤波,并以等于以下的增益进行放大:
增益= 0.797 * G_INA * G_TL062
由于R5 = 2,2kOhm,R8 = 120kOhm,R6 = 100欧姆,Rp = 2,2KOhm,
增益= 0.797 *(1 + 50000/2200)*(1 + 120000 /(2200 + 100))= 1005
为了获得滤波器截止频率的准确值,RC滤波器组件应具有尽可能低的容差(或者,操作员可以使用万用表手动测量其值,以便选择最接近所需值的值)。
模拟信号由Arduino板(A0输入通道)数字化,然后通过串行通信引脚传输到HC-06模块;最后,数据通过蓝牙发送到智能手机。
参考电极(黑色)是可选的,可以通过移除跳线J1来排除(或者操作员可以使用开关而不是跳线)。电路配置设计用于两个电极;但是,应使用参比电极以获得更好的信号质量(更低的噪声)。
第6步:组件
通过排除智能手机和一次性部件(电极和电池),整个设备成本约为43美元(这里被认为是单一产品;如果数量较多,价格会下降)。
有关所有组件的详细列表(说明和大致成本),请参阅组装手册文件。
第7步:需要工具
- 需要工具:测试仪,电推剪,烙铁,焊锡丝,螺丝刀和钳子。
第8步:如何构建 - 第1步
- 准备一个带23x21孔(约62 mm x 55 mm)的穿孔原型板
- 根据图中所示的PCB顶部布局,焊料:电阻器,连接线,母插座带(用于Rp)插座,公母插头连接器(图中报告的母插头连接器位置适用于Arduino Nano或Arduino微型),电容器,LED
第9步:如何构建 - 第2步
- 根据此处显示的PCB底部布局连接所有组件。
第10步:如何构建 - 第3步
- 使用电池带/支架,母头连接器和热缩管实现电池的电线连接器;将其连接到PCB“con1”(连接器1)
第11步:如何构建 - Step4
- 实现三根电极电缆(使用同轴电缆,母头连接器,热缩管,鳄鱼夹)并将它们连接到PCB,用一些刚性电缆将它们拧紧到电路板上
第12步:如何构建 - 第5步
- 实现开关(使用滑动开关,母头连接器,热缩管)并将其连接到PCB
- 将INA128,TL062和Rp电阻放入相应的插座中
- 程序(参见软件描述部分)并连接Arduino Nano板(如果使用另一个Arduino板(例如UNO或Nano),则应在PCB上调整穿孔原型板和母头连接器)
- 将HC-06模块连接到PCB“con2”(连接器2)
第13步:如何构建 - 第6步
- 连接跳线J1以使用参考电极
- 连接电池
第14步:如何构建 - 第7步
- 将电路放在合适的盒子里,盒子上有Led,电缆和开关。
汇编手册文件中显示了更详细的说明。
第15步:其他选项
- 用于监测应用的ECG信号在0.1和40Hz之间过滤;通过改变R8或C8和R9或C9,可以增加低通滤波器的频带上限。
- 可以使用微调器或电位计代替Rp电阻器来改变运行时的增益(并放大ECG信号)。
- ECG设备也可以与不同的Arduino板配合使用。 Arduino Nano和Arduino UNO进行了测试。可以使用其他板(例如Arduino Micro,Arduino Mega等),但是提供的Arduino草图文件需要根据板功能进行修改。
- ECG设备也可以与HC-05模块一起使用,而不是HC-05模块。
第16步:软件说明
无需任何软件编程知识。
Arduino编程:Arduino草图文件可以通过安装Arduino软件IDE(从Arduino官方网站免费下载)并按照Arduino官方网站上的教程轻松上传到Arduino板上。提供了Arduino Nano和Arduino UNO的单个草图文件(“ECG_SmartApp_skecht_arduino.ino”)(草图用两个板测试)。同样的草图也适用于Arduino Micro(该板未经测试)。对于其他Arduino板,草图文件可能需要更改。安装ECG SmartApp:要安装应用程序,请在智能手机内存中复制提供的apk文件“ECG_SmartApp.apk”(或“ECG_SmartApp_upTo150Hz.apk”,如果带宽为150 Hz的版本),打开它并按照说明进行操作接受权限。在安装之前,可能需要通过允许从未知来源安装应用程序来更改智能手机设置(勾选“安全”菜单的“未知来源”选项框)。要将ECG设备与HC-06(或HC-05)蓝牙模块连接,在第一次与模块进行蓝牙连接时,可能会询问配对代码或密码:输入“1234”。如果应用程序找不到蓝牙模块,请尝试使用智能手机蓝牙设置(配对代码“1234”)将智能手机与HC-06(或HC-05)蓝牙模块配对;此操作仅需一次(第一次连接)。
第17步:源文件
此处提供了可选的源文件来修改或个性化应用程序。但是,需要Android编程技能。
步骤18:开始使用ECG SMARTAPP - 步骤1
- 确保连接到设备的电池(最大电压:9V)已充电
- 放置电极前清洁皮肤。通常存在于我们身体表面上的干燥死皮层以及皮肤和电极之间可能的气隙不利于ECG信号传输到电极。因此需要在电极和皮肤之间的潮湿状态。在放置电极凝胶垫(一次性)之前,需要清洁皮肤(用酒精或至少水浸湿的纸巾)。
- 根据下表放置电极。在非一次性电极的情况下,应在皮肤和金属电极之间使用电极导电凝胶(市售),或者至少浸泡在自来水或盐水溶液中的布组织垫。
该装置仅允许使用2个电极记录ECG(LI,LII或LIII);参考电极(黑色)是可选的,可以通过使用开关或移除跳线J1来排除(参见组装手册)。但是,应使用参考电极以获得更好的信号质量(更低的噪声)。
步骤19:开始使用ECG SMARTAPP - 步骤2
- 使用开关打开ECG设备电源(红色LED打开)
- 在智能手机上运行应用程序
- 按“ON”按钮将智能手机连接到ECG设备(应用程序将询问您是否允许打开蓝牙:按“是”)并等待发现HC-06(或HC-05)蓝牙ECG设备的模块。如果第一次蓝牙与模块连接,可能会询问配对代码或密码:输入“1234”。如果应用程序找不到蓝牙模块,请尝试使用智能手机蓝牙设置(配对代码“1234”)将智能手机与HC-06(或HC-05)蓝牙模块配对;这个操作只需要一次(第一次连接)
- 建立连接后,ECG信号将出现在屏幕上;在LI的情况下(默认导联是LI,要改变导联请转到“设置”段),将实时估计心率(HR)。信号将每3秒更新一次
- 要应用数字滤波器,请按“滤波器”按钮,然后从列表中选择一个滤波器。默认情况下,应用低通滤波器@ 40 Hz和陷波滤波器(根据设置中保存的首选项)。
第20步:设置
- 按“设置”按钮打开设置/首选项页面
- 按“用户手册(help.pdf)”打开用户手册文件
- 选择ECG导联(默认为LI)
- 选择陷波滤波器频率(根据干扰频率:50或60 Hz)
- 选择文件保存选项以将已过滤或未过滤的ECG信号保存在文件上
- 按“保存设置”按钮保存首选项
在硬件修改或ECG设备的个性化的情况下,可以改变增益值。
步骤21:记录ECG信号
- 插入文件名(如果用户在同一会话中记录更多ECG信号而不更改文件名,则在文件名末尾添加渐进索引以避免覆盖以前的记录)
- 按“Rec。”按钮开始记录ECG信号
- 按“停止”按钮停止录制
- 每个ECG信号将存储在智能手机内存主根中放置的文件夹“ECG_Files”内的txt文件中。根据设置中保存的偏好,可以将ECG信号存储为过滤或未过滤
- 按“重新启动”按钮可再次显示运行时获取的ECG信号
- 要记录新的ECG信号,请重复之前的点
ECG文件包含以mV为单位的ECG信号幅度的一系列样本(采样频率:600Hz)。
步骤22:打开并分析ECG文件
- 按“打开”按钮:将出现存储在“ECG_Files”文件夹中的文件列表
- 选择要显示的ECG文件
ECG文件的第一部分将显示(10秒),没有网格。
用户可以在显示器上手动滚动以可视化ECG信号的任何时间间隔。
要放大或缩小,用户可以按放大镜图标(图表底部的右上角)或直接在智能手机显示屏上使用捏缩放。
当可视化时间间隔小于5秒时(通过放大),将自动显示时间轴,电压轴和标准ECG网格。电压轴(y轴)值以mV为单位,而时间轴(x轴)值以秒为单位。
要应用数字滤镜,请按“滤镜”按钮,然后从列表中选择滤镜。默认情况下,应用@ 40 Hz的低通滤波器,去除漂移线的滤波器和陷波滤波器(根据设置中保存的首选项)。图表标题显示:
- 文件名
- 根据应用的滤波器的ECG频带
- 如果应用了游荡基线过滤器,则标签“移除基线”
- 根据应用的陷波滤波器,标签“~50”或“~60”
用户可以使用“获取Pt1”和“获取Pt2”按钮在图形的两个点之间进行测量(时间间隔或幅度)。要选择第一个点(Pt1),用户可以按“获取Pt1”并通过直接点击图表手动选择ECG信号的一个点:ECG蓝色信号上会出现一个红点;如果用户错过了ECG曲线,则不会选择任何点,并且将出现“无点选择”字符串:用户必须重复选择。选择第二个点(Pt2)需要相同的程序。以这种方式,将显示以ms(dX)表示的时间值和以mV(dY)表示的振幅值的差值(Pt2-Pt1)。 “清除”按钮清除所选点。
用户可以通过“+”按钮(放大)和“ - ”按钮(减少)调整ECG信号增益;最大增益:5.0和最小增益:0.5
第23步:过滤菜单
- 无数字滤波器:移除所有应用的数字滤波器
- 删除游荡基线:应用特定处理以消除基线的游荡。如果信号非常嘈杂,则处理可能会失败
- 高通'x'Hz:根据指定的截止频率'x'应用IIR高通滤波器
- 低通'x'Hz:根据指定的截止频率'x'应用IIR低通滤波器
- 50 Hz移除ON(陷波+ LowPass 25 Hz):应用特定的非常稳定的FIR滤波器,既是50 Hz的陷波,也是25 Hz的低通
- 60 Hz移除ON(陷波+ LowPass 25 Hz):应用特定非常稳定的FIR滤波器,既是60 Hz的陷波,也是25 Hz的低通
- 50 Hz去除ON:应用50 Hz的递归陷波滤波器
- 60 Hz去除ON:应用60 Hz的递归陷波滤波器
- 50/60 Hz去除OFF:移除应用的陷波滤波器
第24步:硬件规格
- 最大输入信号幅度(峰峰值):3.6 mV(最大输入信号幅度取决于硬件增益)
- 电压供应:仅使用电池(可充电和不可充电)
- 最小电压供应:6V(例如4 x 1.5V电池)
- 最大电压供应:9V(例如6 x 1.5V或1 x 9V电池)
- 采样频率:600 Hz
- 频率带宽@ - 3dB(硬件):0.1 Hz - 40 Hz(通过更改RC滤波器组件,低通滤波器的频带上限可以增加0.1 Hz - 150 Hz(参见汇编手册)
- CMRR:min1209 dB
- 放大(Hardware_Gain):1005(可以通过更换增益电阻来更改(参见汇编手册) - 分辨率:5V /(1024 x Hardware_Gain)
- 偏置电流最大10 nA - ECG通道数:1
- 心电图导联:肢体导致LI,LII和LIII
- 智能手机连接:通过蓝牙
- 理论电源电流:<50 mA(基于不同组件的数据表信息)
- 测量的电源电流:<60 mA(使用9V电源和Arduino Nano)
- 电极数量:2或3
该装置仅允许使用2个电极记录ECG(LI,LII或LIII);参考电极(黑色)是可选的,可以通过移除跳线J1(或开关S2,参见组装手册文件)来排除。但是,应使用参考电极以获得更好的信号质量(更低的噪声)。
第25步:软件规格
- 录制期间的ECG可视化(时间窗口:3秒)
- 心率估计(仅适用于LI)
- 采样频率:600 Hz
- 智能手机内部存储器(文件夹:放置在主根中的“ECG_Files”)中的ECG信号记录并保存到txt文件(过滤或未过滤的信号可以根据设置保存在txt文件中)
- 数据(样本)以mV为单位保存为600 Hz(16位数值)
- 保存文件可视化,包括缩放选项,网格,增益调整(从“x 0.5”到“x 5”)和两点选择(测量时间距离和幅度差)
- 智能手机显示:App布局针对不同的显示尺寸进行调整;但是为了获得更好的可视化效果,建议最小的3.7英寸显示器,分辨率为480 x 800像素
数字滤波:
- 高通滤波@ 0.1,0.15,0.25,0.5,1 Hz
- 低通滤波@ 25,35,40 Hz(ECG SmartApp版本提供@ 100和150 Hz,带宽为150 Hz)
- 陷波滤波,以消除电源线干扰@ 50或60 Hz
- 游荡基线移除
第26步:接触!
2个人做了这个项目!
你做这个项目了吗?与我们分享!
建议
讨论
0DIY黑客和如何Tos4个月前
很酷。我喜欢DIY科学设备。