14411| 6
|
【转载】DIY脑电波(和心电图)电路 |
本帖最后由 iooops 于 2016-4-4 23:08 编辑 啊其实事情是这样的,楼主最近去买了个neurosky,测脑电波的,还可以跟Arduino接着玩。 淘宝上买了零件要自己焊的。 花了楼主近300块人民币。 啊呀好多钱。 但是其实 我们可以100块搞定的。 下面这篇帖子就是告诉我们怎么用100块钱搞定脑电波电路的。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DIY EEG (and ECG) Circuit DIY脑电波(和心电图)电路 脑电图以一种非侵入性的方式来查看你的大脑。而大脑是极其复杂的,但它可以被看成圆形物体的放电区域,这就可以有一种方式用合适的设备来观察揭秘脑波。这些波的强度变化取决于您大脑内部状态。脑电波,我们将是最容易能够分辨是α和β波 - α波出现在周围8-12Hz,从额叶位置可以测量到一个人的大概放松程度,而β波是12-30Hz,对应的是人的注意力集中程度或者说警觉程度。 每段脑电波的浓度也可以表明你思维里更具体的东西 ,具体取决于您如何测量它们。例如,当你想到你的移动右手时增加了在大脑左半球运动皮层的α波浓度。在任意哪个点上进行测量,观察当时脑波的实时浓度 - 一个被称为生物反馈的过程 - 这样可以给你更好的控制。 本教程深入指导了如何DIY一个简单的脑电图电路。最后完成的电路不仅可以监测脑电波的浓度,也可以用来作为一个心电图电路来查看自己的心跳。该电路将使用3个电极——2个用来测量在整个头皮的电压差,和一个作为参考接地。取决于你已经拥有了几个部件,该电路甚至能让你只花差不多10美元。 本项目目的是为了让每一个拥有技术背景的人都容易获得和理解。对于那些电子技术高手,文章里我包含了电路原理图,你可以直接查找到自己去做。对于那些想要得到更多的指导的人,我将详细的说明或解释电路的每一个部分,告诉您这部分电路做了什么,以及为什么需要它。 然后,我会转移到软件上(基于Processing),解释实际收到的原始数据是非常重要的一块。 就这些,让我们开始吧! Step 1: Parts 步骤一:各部件 我从Digikey(和亚马逊)购买了大部分零件。这布局乍看之下似乎略显吓人,但他们应该是能得到最便宜的零件。他们有USPS一流的运送选项(<3美元的小订单,选择这个!它会为你节省很多。)意味着在某些网站上,不必把钱花在相同部分的快递上。 (译者:淘宝网店有一站式配单采购,可以一起把零件配齐节省快递费) 芯片: - 1×仪表放大器 - AD620AN - 这是最昂贵的,也是最重要的部分。虽然在技术上你可以自己制作3个运算放大器,我是自己不管怎样做都得不到好的效果。精密切割电阻在此保证了它的工作稳定可靠。 - 2×四通道运算放大器 - TL084CN - 任何运算放大器都可以。你需要5个运放通道,这个每一芯片只是四运放。 电容器: 我强烈建议购买来自eBay或类似电容包,特别的如果你打算继续做一些其他种类的电子项目。一个常用电容包,你就基本用上终身。无论如何,不管你在打包或单独购买,一定要包括这些电容器: - 1x 10 nF, 瓷片电容 - 1x 20 nF, 瓷片电容 - 1x 100nF, 钽电容 - 5x 220nF, 钽电容 - 1x 1uF, 电解电容 - 2x 10uF, 电解电容 Resistors: 电阻器 跟电容一样,我建议买个常用包。这是非常不错的,拥有所有你需要的电位值(减少电位)。你需要的个别的电阻值,主要有: 1x1kΩ 电位器 对动态的调整非常有用 via Digikey - 2x 12Ω - 1x 220Ω - 1x 560Ω - 2x 22kΩ - 1x 47kΩ - 2x 100kΩ - 2x 180kΩ - 1x 220kΩ - 2x 270kΩ - 1x 1MΩ (我国的用50Hz 电路,其中 2x12Ω 2x22kΩ 2x270kΩ 替换成 4x390kΩ 4x620kΩ 4x100kΩ 2x39kΩ 2x120kΩ, 220nF 10uF 替换成 4x0.01uF 2x10uF 所以应该为 - 5x 10 nF, 瓷片电容 - 1x 20 nF, 瓷片电容 - 1x 100nF, 钽电容 - 5x 220nF, 钽电容 - 1x 1uF, 电解电容 - 4x 10uF, 电解电容 - 1x1kΩ 电位器 - 1x 220Ω - 1x 560Ω - 2x 39kΩ - 2x 39kΩ - 1x 47kΩ - 6x 100kΩ - 4x 120kΩ - 2x 180kΩ - 1x 220kΩ - 4x 390kΩ - 4x 620kΩ - 1x 1MΩ ) 连接线: 一个面包板来连接上面的一切。这一个(400孔)足够大了,并配备了有用的跳线。我建议各个阶段都节省跨接线连接的设计方式。这将使它非常的模块化,易于重组/重新排序,如果你完成后需要的话。 - 另外是面包线。我喜欢那个包,因为它是预先剪好的,保持您的电路板整齐。您还可以拿长线,自己剪。 - 3.5mm audio cable. 3.5mm音频连接线。 - 2x 9V batteries for power. 2x9v电池。 电极系统: 安保心电图电极似乎是最经济有效的方法,在这里找到。谢谢站友jonencar用于的链接。 - electrode gel 导电膏 (可以用盐水或含水酒精代替,X宝“心电图导电膏”) Step 2: Complete Design 步骤2:完整的设计 附图是最终的原理图。仪表放大器后,每个框是单运放(找不到非双运算放大器采用这种原理的程序)。我还整了成品电路的频率响应(是用NI myDAQ做的,非常棒的通用示波器) - 不包括由经过仪表放大器约90X的放大数据。对于那些不太熟悉dB的人,一个好用的计算dB线性增益衰减转换计算器可以在这里找到。 电源方面:为电路供电的最简单的方法是使用2节9V电池。为了供应你的运算放大器-9V为9V电源,用正确方法连接电池,另一个电池后面接回来。即,一个电池的正引线连接到正电源线和它的负极引线与GND(地)。而另一个电池,让它的正极接地,其负极引线与负电源线连接。“设置”GND的方法是,你应该将从你的腿部直接连接电极到GND线。这将确保“0V”是你的腿的电压(不受任何头部活动影响),并且所有读取的电极电压值跟那里会有差异。 这个电路最大的设计目标是获取数据,然后通过足够的降噪以获得良好的信号传输到计算机里,我们将更多的去处理数据。正如我们将用计算机的声卡来获得数据,我们不得不削减足够的噪声与噪声信号使得不高于或低于+1V和-1V的范围,因为这是声卡接收音频信号的电压。所以我们将要使用+-9V通过电池向电路供电,我们还必须确保,当我们的数据会通过电路,它从来没有达到高于或低于这个值的范围。 我还写了在面包板上如何布置部件,一个有注意事项,一个没有。这不是为了说我是怎么做到的,是说给了你一个常规的建议,如果你以前没有使用过面包板的话。不过,我并不建议使用图片作为如何连接一切电路严格的标准。按照实际的原理——线路板的布局看起来像一个漂亮的乱七八糟的乱码(当你尝试将一切都整在30列的板上是难以避免的)。该方案还并不总是能正确的布置部件,而且由于没有办法测试“实验电路板原理图”,还有一种可能性,即它并不完美。如果你需要的话,这个建议应作为一般准则。 在面包板视图中为了标清使用某些特定的颜色 - 所有红色的线是电源线,而所有黑线在电路块之间是基本互相连接的(大部分是连接到接地)。绿线是第一个陷波滤波器的输出,黄色是8Hz HPF的输出,蓝色是30Hz LPF的输出,而白色线为放大级的输出端。在底部的框表示音频线连接到声卡上。 在一般情况下,要记住的是在面包板上,电源线(顶行和底行)是水平连接,并且其余部分被垂直连接,连接的间隔是穿过中间的间隙。当看着原理图时,注意不要让电线连接在一起,除非有一个黑圈表示是连接的——交叉却没点的话不是一个连接。 Step 3: Stage 1 - Instrumentation Amplifier 步骤三:第一步 - 仪表放大器 仪表放大器输入2个电压,并输出两者之间增益差分G。仪表放大器,其实,是不完美的。在实际的放大器中,其输出是略微倾斜的,如果这两个输入电压偏离相同的一定量。一个完美的放大器将采取2.1V和2.2V作为输入,能输出0.1V* G。正好的是由这个共同的偏移的影响,会略有相应的改变其输出。共模抑制比(CMRR)是对应于它如何忽略了公共输入端之间的偏移的值。较高的共模抑制比是更好的,并且会输出更接近于完美的功放所做的。做自己做仪表放大器(一般用3运算放大器)是可能的,但除非你用精密电阻做它,不然会有着低共模抑制比。我个人是没法做到用自制的仪表放大器得到良好的读取。 使用仪表放大器芯片,增益的变化是通过改变脚1和8之间的电阻值。 AD620AN的数据表(我们的仪表放大器)就在这里。从中你可以看到,使用该芯片的增益公式G =1+49400/ Rg,这相当于用560欧姆的电阻产生89.2增益。这是一个很好的数字,获取的数据在不小的范围内;我们将一会后添加一个方法来调整增益变化。你应该也可以看到在这个表上的实际电路中,您的活动电极(那些不接地电极)将被连接到引脚2和3(-IN和+ IN)。 Step 4: Stage 2 - 60 Hz Notch Filter 60Hz陷波滤波器 60Hz陷波滤波器 50Hz陷波滤波器(如果有更好的非双T陷波器请指教下) 噪音在我们的系统中最大的来源将集中在60赫兹,是因为电源线的干扰。即使你使用电池来供电你的电路,你的电路仍然会遇到这种噪音。出于这个原因,我们将有2个“陷波”滤波 ——可以有效减少约1特定频率范围的增益滤波器。现在我们就使用到一个陷波器,以滤掉尽可能多的干扰,在我们电路得到可以应用的任何数据时,在最后应得到一个符合的波形,要更可能多的滤掉从我们获得的数据中的干扰。 陷波滤波器用12欧姆的电阻时有非常敏感的变化。为了确保槽口中心在60Hz,因为读取数据在(具体的说是位于最后一个引脚)仪表放大器的后端,就需要再这样做多一次直到把通过陷波滤波器的干扰信号去除。你应该看到在频段60Hz上有一个显著减少的(浅灰色)的幅度。如果它不集中在60Hz,试下用10欧姆的电阻,甚至是用一个不同的12欧姆电阻,因为这电阻很容易引发相当大的量变化。 Step 5: Stage 3 - 7Hz High Pass Filter 步骤3 - 7Hz 高通滤波 当我们在皮肤上测量数据时,我们的最终数据还包含来自我们的头部的皮电反应电压。这将掩盖掉我们想要的大脑的数据,并且这种干扰主要是低频的,可以相当容易地用高通滤波器(HPF)过滤掉。权衡下这样做的话虽然我们也过滤掉了很多γ/δ 脑波的数据(即约8Hz和更小频率的脑电波),但如果我们的主要焦点是监测α/β波,这是没有太大问题的。 该过滤器是一个截止7.23Hz频率的2极HPF(高通滤波器)。 7.23Hz的截止频率是指在该频率点,即电路输出会减少到约71%的其原始值。它作为一个高通滤波器,通过的频率高于该截止点将会是接近为1的增益,而以下的频率(增益)将不断降低。具有2极的滤波器就是滤掉了低于截止频率的区域,增益下降得会比简单的电阻器/电容器电路快得多。更具体地说,在该电路中,我们的双极设计到1Hz点会以大约56的倍数减少,而单极仅会以大约7.5倍减少。 接下来电路的设计,我还整了这个特定区域的频率响应。 Step 6: Stage 4 - 31Hz Low Pass Filter 步骤4 - 31Hz 低通滤波器 接下来,我们要过滤出上面我们所感兴趣的频率数据。更具体地 说,如β波信号,突显在30Hz,我们要除去在上面的任何其它东西,因为结合它可以促使我们的数据得到可接受的噪音量。该电路的设计跟步骤3的高通滤波器非常相似,它在31.23Hz具有0.71增益,并且从这个频率点开始递减直到300Hz,数据会以大约100因子衰减。 就这样,我已经在这里弄好了这一段的波频范围。 Step 7: Stage 5 - 1 Hz HPF and Gain of 83-455 步骤5 - 1Hz HPF和 83-455增益 该电路的开头包含的截止频率为1Hz的快速HPF(FC= 1 /(2 * PI * R11* C11),只是为了一些额外衰减不想要的噪声。在另一端,平行的电阻器和电容器提供高频率一些额外过滤(Fc = 1/(2*pi*10nF*100kΩ) = 160Hz 在一个低通滤波器里)。 本节的主要目的,不管怎么样说,写在这里,重点就是220Ω的电阻和电位器(简称为pot)。该运算放大器是一种非反相放大器,因此有G的增益=1+ R12/(R13+ R14),(忽略10nF电容,因为它是一个很小的值,对增益难起作用) 。该电位器是可变电阻器——当输入被连接到所述第一引脚而输出接到第二引脚,调节电刷会线性的改变0到1000欧姆的电阻。这意味着,当电位器向最左调节时,该电路的增益为 G = 1 + R12/(R13 + 0) = 1 + 100k/(220 + 0) = 455.当它被接通所有顺便到右侧,增益为G = 1 + R12/(R13 + 1000) = 1 + 100k/(220 + 1k) = 83。 请记住,这83-455增益是在仪表放大器的增益89.2x最顶端。 α波的振幅是人人都不同的,大约是10到30uV。使用中间值20uV,这意味着电压读数范围可以从83*89.2*20e-6 = 0.148V 到455*89.2*20e-6 = 0.81172V。一旦你开始读取数据,就调节电位器这时你应一动不动,此时电压不会波动到屏幕外(超过1V)。它不必到最大,以至于运放很可能没有滤波 - 只要注意的是如果你把它弄太小了,读取数据到计算机中你会增加误差。 Step 8: Stage 6 - Another 60Hz Notch Filter (and into the computer!)步骤六 - 另一个60Hz陷波滤波器(到电脑端的) 60Hz陷波滤波器 50Hz陷波滤波器(如果有更好的非双T陷波器请指教下) 即使有着所有的前面滤波级,该数据仍然在这一处会有60 Hz的一定噪声量。为了解决这个问题,在60Hz上我们将通过另一个陷波滤波器处理掉,跟前一个相同。最终的数据将仍然有少量噪声,但通过软件把数据加载到计算机后已经可以忽略不计了。 要获取数据到计算机上,我们将使用一条3.5mm公对公音频线(这跟任何耳机插孔大小相同)。在音频线中,第一个2凹口的是左右通道,而最远的那个下方为GND。如图所示,你应把22K电阻和220nF电容器(黄色鳄鱼夹)连接一起,并且把音频线底端连接到GND线的电路的GND线——相同的线连接到GND极(图像中的红色鳄鱼夹)。我建议这些鳄鱼夹的另一端连接到跳线,这些线插入到电路中适当的地方。将音频线的另一端连接到计算机的麦克风端口,这样你就搞定了! Now, onto the electrode setup and code. 现在,转到电极的设置和代码上。 Step 9: Getting electrodes, and proper placement 步骤9:拿起电极,适当布置 对电极而言,这些已知是非常好的。查看此网页的更新,不过,因为我目前正在搜索更便宜的方法来做自己的电极。 可能的电极安置方式有许多——您选择的将取决于便利性和想测量的数据。在这个试用演示中,我们将测量在枕叶上的α波。这是因为这些波是最容易产生的,是振幅相当大的,并且只需要1条电极放在有毛发的头皮上。 在你的头这部分你需要知道的是乳突骨,鼻根和枕骨隆突。乳突骨是你的耳后骨:你可以很容易地通过摩擦该区域感觉到。鼻根在你的鼻子和额头之间的脊上,在你眉毛之间。枕骨隆突在你头骨的后脑勺尾部点。 对于放置方法,您需要一个头巾,一些胶带(我用电工胶带,但透明胶带甚至创可贴可能好用)。首先,找到你的左乳突骨。捋开头发,并用胶带将接地电极粘住露出的皮肤。接下来,头巾紧紧绑在头上,放了在既鼻根和枕骨隆突上面。头巾将用来固定其余2根电极位置。放一个电极大概1英寸之上并且1英寸的距离到鼻根的右侧,第二根距离枕骨隆突算起也是相同距离。使用这种顶向下视图,你的电极应该大致在FP2和O2的区域。 如上所述,我们将主要用这个方式测量α波。 α波在8-12Hz脑波范围,并且在当你放松或更冥想状态时,幅度会普遍提高。因为有一个电极放在的枕叶上(你的大脑用于视觉处理的部分),只要你闭上眼睛α波应该会明显的增加浓度。如果你的眼睛是闭着的放松心情尝试放空意念,增长应该是更为明显。 Step 10: "Processing" the Data 步骤十:“处理”这些数据 注意:我强烈建议在笔记本上做这些,因为如果是墙壁插座传来的电压尖峰会有危险产生。无论如何,必须非常小心的把探针连接到声卡。如果他们不小心触碰高压电源(即你把它们粘到电源插座),你会烧掉你的电脑的声卡。 (译者:在这里应该有个改进,使用线性光耦隔离电路可以避免这个问题,可用HCNR201) 首先要做的就是下载Processing,可在http://processing.org下载。不需要什么安装过程;只是解压缩下载的文件,打开文件夹,并运行。下载sketch草案(代码工程在Processing是这么称呼),并打开它。该程序应该是可以正确运行的,当然应该有足够的注释以了解在sketch上在做些什么,在这里我会点出几点注意事项备注要点大概做了什么。 我鼓励你鼓捣下程序——改变某些代码,做自己的东西,等等。不要害怕破坏了程序,因为一个工作版本总是可以在这里找到。如果你刚开始搞编程,这些家伙做了一些确确实实非常基本的教程在这里。有一点要注意的是,Processing是区分大小写的——如果在某些时候你输入FFTHeight代替了FFTheight,程序会给你出指一个错误,并转到你输入的地方。我没有备注使用的每一个函数——如果你不能确定某部分代码在做什么,你应该在processing.org上查找函数,让你可以看到它执行的含义,还有哪里获得到是输入和哪里处理了作为输出。音频类库不会那样容易的被找出来(minim声音库,FFT,AudioInput等)。为了找到那些类库文档,看这里,特别留意在顶部的工具选项卡的手册。 另外还有,FFT的一点知识背景。数据可以用许多方法表达,两种常用的方法是时间和频率。必要的信息转换成频域通常等于表示为许多具有各种频率和振幅正弦波数据的组合。如果你有一个纯正弦波,是说振荡为1Hz,你会看到我们都知道和喜欢的在时域上的正弦波,但在频域f=1将只能看到一条线。如果你此刻增加一个1Hz的正弦波,另一个正弦波是第一个的一半振幅但却是2Hz的,在频率上你会看到两条线——一条在1Hz在高度1上,还有一条在2Hz在高度0.5上。 从这个发现,你可以表达非常复杂的信号(任何信号!),就用正弦波的数目(有时无穷多个)来组合。把信号的时域转换到频率最常见的方法是使用FFT(快速傅立叶变换)。这就是我刚说的——它把时域信号的一部分作为输入,并输出该信号一定范围的浓度对应的波段。这些数据可以很容易地可视化显示出每个波段一定高度的横线,正如我在代码中做的一样。 这个程序实际上只是采集和可视数据。你可以用这个电路做很多东西——我鼓励你们围绕它真正做些什么,制作一些自己的东西!下一步是可选的一点更有趣的东西,就是我根据这程序获得的数据来做的。 代码在这里。 Step 11: Playing Pong With Your EEG 步骤11:用EEG玩乒乓球 我也是决定做一个演示游戏,你可以用EEG电路做一个更有趣的。你可以阅读这个附加的所有Processing代码,但一般的说是你控制自己的α波浓度来控制拨片,进行一个简单的乒乓球比赛。管理控制的最简单方法是闭上你的眼睛,放松,使球拍向上移动,然后是张开你的眼睛和集中注意力,使之向下移动。电极设置跟前面的代码片段一样——GND在左耳后,并且活动电极在右侧额叶及枕叶。 相关的代码会比之前读取数据的更整洁。因为游戏的代码是集成面向对象编程,有经验的程序员可能会发现更容易跟着做,而那些之前还没有使用过面向对象的代码的人可能需要一个更多的时间。如果你属于后一类,我强烈建议阅读本教程以熟悉基础知识。 这里的使用的电路是完全一样的,只是你需要两个,因为有两个玩家。经由音频线获得,按往常的方式(在前面的步骤中概述的)连接电路,以及另一个电路到另一个音频信道(音频线的中间段)。您可以使用一组电池供电两个电路,那么他们应该共享地。 代码在这里。 视频演示在这里我用它对着墙玩。 Step 12: Going Further - Using Arduino to get more inputs进一步打算 - 使用Arduino得到更多的输入 通过麦克风输入到计算机中,你可以一次性监测到2段 EEG节点(左,右声道)。为了同步监控更多的脑波数据,这样,你就需要用到一个微控制器,如Arduino Uno获取数据传到您的计算机里。Arduino Uno有6个模拟输入通道,不用任何额外的电路就可以同时观察到6个频道。如果你想观察到更多的数据,你需要一个多路复用器芯片,如MAX4051。该芯片将采用输入一个0-7的某个数字代表某个EEG通道的方法,从而输出对应于该数字的通道数据。通过足够的数据采集速度下快速循环取样所有通道的样本。 转自http://m.guokr.com/post/646145/#5846387 快去试试吧!! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed