DIY EEG (and ECG) Circuit

869,804

1,184

378

EEGs are a noninvasive way to look into your brain. While the brain is extremely complex, areas of it can lock into circular firing patterns, resulting in telltale brain waves that one can observe with the right equipment. Intensity of these waves change depending on your internal state. The waves we will be most easily able to distinguish are alpha and beta waves -- alpha waves occur at around 8-12 Hz and when measured from the frontal lobe provide an estimate of how relaxed a person is, while beta waves are around 12-30 Hz and correspond to how much a person is concentrating or how alert they are.

The concentration of each wave can also tell more specific things about your thought patterns depending on where you measure them from. For example, alpha concentrations on the left motor cortex increase when you think about moving your right hand. Regardless of where you're taking measurements, looking at the concentrations of waves in real time - a process called biofeedback - can give you much greater control over them.

This tutorial is an in-depth guide on how to make your own simple EEG circuit. Along with monitoring brain wave concentration, the final circuit can also be used as an ECG, as a way to see your heartbeat trace. The circuit will use 3 electrodes - 2 to measure a voltage difference across your scalp, and one as a reference to ground. Depending on how many parts you already have, the circuit could only set you back around $10.

The aim for this project is to be easily available and understood by people of every technology background. For those electronically savvy, I will include up front a finalized schematic so you can jump right into making it yourself. For those that want more guidance, I will include a detailed description / explanation of every section of the circuit, showing you what it does and why you need it. 

Then, I'll move onto the software (Processing based), which is a very important piece in actually interpreting the raw data you receive.

So - let's start!

Supplies:

Step 1: Parts

I purchased most of my parts from Digikey (and Amazon). Their layout might seem slightly intimidating at first glance, but they seem like the cheapest place to get parts. And they have the USPS first class shipping option ( < $3 for small orders, choose this! It will save you a lot.), meaning you don't have to spend the same amount on parts as shipping, as it is on some websites. 

Chips:

- 1x Instrumentation Amplifier - AD620AN - This is the most expensive, and most important part. While technically you can make your own instrumentation amplifier from 3 op-amps, I could never get my own to give me good results. Precision cut resistors in this ensure that it'll do its job.
- 2x Quad Op-Amp - TL084CN - Any Op-Amp will do. You need 5 single amps, this one just includes 4 in each chip.

Capacitors: 

I would strongly suggest buying a capacitor bundle from ebay or the like, espcecially if you plan on ever doing some other sort of electronic project. One bundle and you're basically set for life. Regardless, whether you buy them in a pack or individually, make sure to include these capacitors :

- 1x 10 nF, ceramic
- 1x 20 nF, ceramic
- 1x 100nF, tantalum
- 5x 220nF, tantalum
- 1x 1uF, electrolytic
- 2x 10uF, electrolytic

Resistors:

Same as capacitors, I suggest a bundle. This is a very good one, has all the values you need (minus the potentiometer). The individual values you'll need, though, are:

- 1x 1kΩ Potentiometer - via Digikey - very useful to adjust your gain on the fly.
- 2x 12Ω
- 1x 220Ω
- 1x 560Ω
- 2x 22kΩ
- 1x 47kΩ
- 2x 100kΩ
- 2x 180kΩ
- 1x 220kΩ
- 2x 270kΩ
- 1x 1MΩ

Connectors:

- A breadboard to wire everything on. This one is large enough, and comes with useful jumper wires. I suggest saving the jumper wires specifically for connecting the various stages of the design. This will make it very modular, and easy to reorganize/reorder if you end up needing to.
- Wires for everything else. I like that pack, since it's pre-cut and keeps your board tidy. You can also get plain wire and cut it yourself.
- 3.5mm audio cable.
- 2x 9V batteries for power.

Electrode Supplies:

- Ambu Neuroline Cups seem to be the most cost-effective method, found here. Thanks to user jonencar for the link in the comments.
- electrode gel

Step 2: Complete Design

The attached picture is the final schematic. After the instrumentation amplifier, each box is a single op-amp (couldn't find a non-dual op-amp using this schematic program). I've also included the frequency response of the finished circuit (taken with the NI myDAQ, a good all-purpose oscilloscope) -- excluding the ~90x amplification the data receives by going through the instrumentation amplifier. For those not too familiar with dB, a nice conversion calculator with dB to linear gain/attenuation can be found here.

Regarding power: the easiest way to power the circuit is with 2 9V batteries. To feed your op-amps -9V to 9V of power, connect one battery the correct way, and one backwards. That is, connect the positive lead of one battery to your positive power supply line and its negative lead to GND (ground). With the other battery, connect its positive lead to GND, and its negative lead to the negative power supply line. To "set" GND, you will eventually connect an electrode from your leg directly to the GND line. This will ensure that "0V" is your leg's voltage (unaffected by any head activity), and that all readings will vary from there. 

The biggest design goal for this circuit is to obtain the data, then reduce noise by enough to get a good signal into the computer, where we will process the data a bit more. As we will be using our computer's sound card to get the data in, we have to cut noise enough that the signal with noise does not spike above or below +1V and -1V, as this is the point where the sound card clips the data off. As we will be using +-9V through batteries to power the circuit, we also have to make sure that as our data is going through the circuit, it never peaks above or below this value. 

I've also included an example of how to lay out the components on a breadboard, one with notes on it and one without. It isn't exactly how I did it, but should give you a general idea if you haven't worked with breadboards before. Still, I do NOT suggest using that picture as a strict guide on how to wire everything. Follow the actual schematic -- the breadboard layout looks like a pretty jarbled mess (it gets really hard to avoid that when you try to fit everything on a 30-column board). The program also didn't always layer the components correctly, and since there's no way to test the "breadboard schematic", there's a possibility that it's not perfect. Use it as a general guideline, if you need it.

To clarify some specific colors used on the breadboard view -- all red wires are power lines, and all black are basic interconnections between circuit pieces (most are connections to ground). The green wire is the output of the first notch filter, the yellow is the output of the 8 Hz HPF, the blue is the output of the 30 Hz LPF, and the white wire is the output of the gain stage. The box at the bottom represents the audio cable going to the sound card.

In general, things to remember are that in breadboards the power lines (top and bottom rows) are connected horizontally, and the rest is connected vertically, with breaks in connections across the middle gap. When looking at the schematic, take care not to connect wires together unless a black circle is there with the connections - a cross without a dot doesn't indicate a connection.

Step 3: Stage 1 - Instrumentation Amplifier

An instrumentation amplifier takes as its inputs 2 voltages, and outputs the difference between the two multiplied by some gain, G. Instrumentation amplifiers, however, are not perfect. On real amplifiers, the output is slightly skewed if both input voltages are offset the same by some amount. A perfect amplifier would take as inputs 2.1V and 2.2V, and output 0.1V*G. A real one is influenced by this common offset, and will change the output slightly accordingly. The Common Mode Rejection Ratio (CMRR) is a value given to the amplifier that corresponds to how well it ignores the common offset between inputs. A higher CMRR is better, and will output something closer to what a perfect amplifier would. It is possible to make your own instrumentation amplifier (usually with 3 op-amps), but unless you make it with precision resistors, it will suffer from a low CMRR. I personally couldn't get a good reading with a self-made instrumentation amp. 

Using an instrumentation amplifier chip, the gain is changed by altering the value of the resistor between pin 1 and 8. 

The datasheet for the AD620AN (our instrumentation amplifier) is here. From it, you can see that the formula for gain using this chip is G = 1 + 49,400 / Rg, which equates to a gain of 89.2 with a 560 ohm resistor. This is a good number to get the data into a not-miniscule range; we'll add a way to adjust gain on the fly a bit later. You should also see on this datasheet that on your actual circuit, your active electrodes (ones that are not the ground electrode) will be connected to pin 2 and 3 (-IN and +IN).


Step 4: Stage 2 - 60 Hz Notch Filter

The biggest source of noise in our system will be centered at 60 Hz, due to power line interference. Even if you use batteries to power your circuit, your circuit will still experience this noise. For this reason, we will have 2 "notch" filters - filters that have a severe reduction of gain around 1 particular frequency. We will use one now, to cut out as much interference as we can before we apply any more gain to our circuit, and one at the very end, to cut out any more interference we may have picked up.

The notch filter is most sensitive to changes in the 12 ohm resistor. To ensure the notch is centered at 60Hz, take a reading (detailed on the last stage) at the end of the instrumentation amplifier, then do so again once the signal has gone through the notch filter. You should see a significant reduction in the amplitude of the 60Hz (light grey) frequency band. If it is not centered at 60Hz, try a 10 ohm resistor, or even a different 12ohm one, as at that resistance it can easily vary by a considerable amount.

Step 5: Stage 3 - 7Hz High Pass Filter

As we are measuring data across the skin, our final data will also contain voltage from our galvanic skin response across our head. This will obscure the brain data we want, and as this interference is primarily low frequency, it can be fairly easily filtered out with a high pass filter (HPF). The trade-off doing this is that we also filter out a lot of gamma/delta wave data (the brain waves that are about 8 Hz and less), but if our main focus is alpha/beta wave monitoring, this isn't much of a problem. 

This filter is a 2-pole HPF with a cutoff frequency of 7.23Hz. A cutoff frequency of 7.23Hz means that at this frequency, the circuit outputs data that is reduced to about 71% of its original value. As it is a high pass filter, frequencies above this cutoff will approach a gain of 1, while frequencies below will be continually reduced. The filter having 2 poles means that in the region below the cutoff frequency, the gain falls off much faster than a simpler resistor/capacitor circuit. More specifically, in this circuit, our double pole design reduces data by a factor of about 56 by the time it gets to 1Hz, while a single pole would only reduce it by a factor of about 7.5.

Along with the circuit design, I've also included the frequency response of this particular section.

Step 6: Stage 4 - 31Hz Low Pass Filter

Next up, we want to filter out data above the frequencies we are interested in. More specifically, as beta wave information stops out at 30Hz, we want to get rid of anything above that, as combined it can contribute a good amount of noise to our data. The circuit design is very similar to the high pass filter from stage 3 - it has a gain of .71 at 31.23Hz, and decreases from there at a rate such that by 300Hz it has attenuated the data by about a factor of 100.

Again, I've included the frequency response of this section here. 

Step 7: Stage 5 - 1 Hz HPF and Gain of 83-455

The beginning of this circuit contains a quick HPF of cutoff frequency 1Hz (Fc = 1/(2*pi*R11*C11), just for some extra attenuation of unwanted noise. On the other end, the resistor and capacitor in parallel provide some extra filtering of high frequencies (Fc = 1/(2*pi*10nF*100kΩ) = 160Hz on a low-pass filter).

The main purpose of this section, however, lies below this, with the 220Ω resistor and potentiometer (pot for short). This op-amp is a non-inverting amplifier, and so has a gain of  G = 1 + R12/(R13+R14), (ignoring the 10nF capacitor, as it's a small value and won't contribute much to the gain). The potentiometer is a variable resistor - when the input is connected to the first pin and the output to the second, turning the wiper changes its resistance linearly between 0 and 1000 ohms. This means that when the pot is turned all the way to the left, the gain of this circuit is G = 1 + R12/(R13 + 0) = 1 + 100k/(220 + 0) = 455. When it is turned all the way to the right, the gain is G = 1 + R12/(R13 + 1000) = 1 + 100k/(220 + 1k) = 83.

Remember, this 83-455 gain is on top of the 89.2x gain from the instrumentation amplifier. Alpha wave amplitude varies from person to person, from about 10 to 30 uV. Using a middle value of 20 uV, this means the ending voltage reading could range from 83*89.2*20e-6 = .148V to 455*89.2*20e-6 = .81172V. Once you've started taking readings, adjust the potentiometer such that when you're not moving at all, voltages don't fluctuate offscreen (over 1V). It doesn't have to be maximized such that the amplitude is the highest possible without clipping - just know that if you make it too small, you'll increase the error incurred from digitally reading the data into the computer. 

Step 8: Stage 6 - Another 60Hz Notch Filter (and Into the Computer!)

Even with all the previous filtering stages, the data will still at this point contain a good amount of 60 Hz noise. To fix this, we will process it through another notch filter centered at 60 Hz, identical to the previous one. The final data will still have a small amount of noise, but that can be ignored through software once the data is loaded into the computer. 

To get the data into the computer, we will be using a 3.5mm male-to-male cable (this is the same size ending as any headphone jack). On the cable, the first 2 notches are the right and left channels, and the one furthest down is GND. As shown in the picture, you should connect the end of the cable between the 22k resistor and 220nF capacitor (the yellow alligator clip), and the base of the cable to the GND line of your circuit -- the same line you connected your GND electrode to (the red alligator clip in the image). I suggest connecting the other end of these alligator clips to jumper wires, inserting these into their appropriate place in the circuit. Connect the other end of the cable into the microphone port of your computer, and you're good to go!

Now, onto the electrode setup and code.

Step 9: Getting Electrodes, and Proper Placement

For the electrodes themselves, these are known to be very good ones. Check this page for updates, though, as I'm currently investigating cheaper ways to make your own electrodes.

There are many possible electrode placements - which one you choose will depend on a mix of convenience and what you wish to measure. For a trial demonstration, we will measure alpha waves originating from the occipital lobe. This is because these waves are the easiest to produce, are quite large in amplitude, and only require 1 electrode on a section of the scalp with hair.

Parts of your head you'll need to know for this are the mastoid, nasion, and inion. The mastoid is the bone behind your ear: you can easily feel it by rubbing that area. The nasion is the ridge between your nose and forehead, just between your eyebrows. The inion is the point where your skull ends at the back of your head. 

For this setup, you'll need a bandana and some tape (I used electrical tape, but scotch tape or even a band-aid would probably work). First, find your left mastoid. Clear away any hair, and tape the ground electrode to the skin there. Next, tie the bandana tight around your head, such that it is above both the nasion and inion. The bandana will be used to secure in place the remaining 2 electrodes. Put one electrode about 1 inch above and 1 inch to the right of your nasion, and the second the same distance from your inion. Using this top down view, your electrodes should be roughly in the area of Fp2 and O2. 

As mentioned, we will be primarily measuring alpha waves with this setup. Alpha waves are around 8-12 Hz waves, and in general increase in amplitude when you are relaxed or in a more meditative state. Because one electrode lays on your occipital lobe (the part of your brain used for visual processing), whenever you close your eyes there should be a distinct increase in alpha wave concentration. The increase should be even more apparent if you relax and try to clear your mind while your eyes are closed. 

Step 10: "Processing" the Data

CAUTION: I highly suggest doing this on a laptop, because there is a danger involved if there's a spike in voltage from the wall outlet. Regardless, BE VERY CAREFUL WITH THE PROBES GOING TO THE SOUND CARD. If they accidentally touch a high voltage source (i.e. you stick them into a power outlet), you can fry your computer's sound card.

First thing to do is to download Processing, available at http://processing.org. It doesn't require any installation; just unzip the download, open the folder, and run it. Download the sketch (what programs are called in processing), and open it up. The program should be good to go as is, and while there should be enough documentation to understand what's going on in the sketch, I want to make a few notes and give a general outline of what it does here. 

I encourage you to tinker with the program - change things, make your own, etc. Don't be afraid to break it, since a working version can always be found here. If you're new to programming, the guys that made processing have some really great basic tutorials here. One thing to note is that Processing is case sensitive - if at some point you type in FFTHeight instead of FFTheight, the program will give you an error and take you to the line where you typed in the former. I didn't document every single function that I used - if you're unsure about what a part of code does, you should look up the function being used at processing.org, so that you can see what its meant to do, as well as exactly what it takes as inputs and produces as outputs. Audio classes won't be found as easily there (minim, FFT, AudioInput, etc). To find documentation for those pieces, look here, specifically at the manuals under the tools tab at the top. 

Also, a little background on the FFT. Data can be represented in many ways, two common ways being in time and frequency. Representing information into frequency domain usually amounts to showing data as the combination of a lot of sine waves with various frequencies and amplitudes. If you have a pure sine wave, say oscillating at 1 Hz, you would see the sine wave we all know and love in the time domain, but in the frequency domain would just see one line at f = 1. If in time you had a wave that was made by adding one sine wave at 1 Hz, and one that was half the amplitude the first but at 2 Hz, in frequency you would see two lines - one at 1 Hz with a height of 1, and one at 2 Hz with a height of 0.5.

From this, you can represent very complicated signals (any signal!) as a combination of a number (sometimes an infinite number) of sine waves. The most common way to convert signals from the time domain to frequency is with the FFT (Fast Fourier Transform). It does exactly what I just described -- it takes as input a section of time domain signal, and outputs bands corresponding to the concentration of certain ranges of frequencies in that signal. This data can easily be visualized by displaying each band as a bar with a certain height, as I did in the code.

This program is really just a data acquisition / visualization one. There are a LOT of things you can do with this circuit -- I encourage you to really play around with it and make something of your own! The next step is an optional one detailing something a little more fun that I made with the type of data acquired in this program. 

Code available here.

Step 11: Playing Pong With Your EEG

I also decided to make a quick demo game of something more fun you can do with the EEG circuit. You can read most of this in the attached processing code, but the general concept is a simple pong game where you control the paddles with your concentration of alpha waves. The easiest way to manage the controls is to close your eyes and relax to make the paddle move up, and to open your eyes and focus to make it move down. The electrode setup is the same as the previous code slice - GND behind left ear, and active electrodes on the right frontal and occipital lobes.

The associated code is much neater than the data-reading one. Because the game code incorporates object oriented programming, experienced programmers will likely find it easier to follow along, while those that have not worked with object oriented code before may have a harder time. If you fall into the latter category, I highly suggest reading this tutorial to get familiar with the basics.

The circuit used for this one is exactly the same, except you need two, since you have two players. To get it in via the audio cable, connect one of the circuits the usual way (outlined in the previous steps), and the other circuit to the other audio channel (the middle section of the audio cable). You can use one set of batteries for both circuits, so they should share the same ground.

Code available here.

Quick video demo of me using it against a wall here.

Step 12: Going Further - Using Arduino to Get More Inputs

By using the microphone input to your computer, you can monitor two EEG nodes at once (right and left channels). To monitor more simultaneously, however, you need to use a microcontroller such as the Arduino Uno to get the data into your computer. The Uno has 6 analog inputs, so you can observe 6 channels at once without any extra circuitry. If you want to observe more, you need a multiplexer chip such as the MAX4051. This chip will take as input a number of EEG channels and a number from 0-7, and output only the channel corresponding to the number. Rapidly cycling through the channels samples all of them at a rate necessary for good data acquisition.

7 People Made This Project!

Recommendations

  • Gardening Contest

    Gardening Contest
  • Party Challenge

    Party Challenge
  • Classroom Science Contest

    Classroom Science Contest

378 Discussions

0
None
TeoP11tapanp8

Reply 11 months ago

have you manage to do it?

0
None
avatar.vr25

Question 8 days ago

Hello, ¿how can i hook up an arduino for better performance?. Because my sound card filters the audio below 20Hz. But there is no conection diagram or nothing.
Thanks.

0
None
avatar.vr25

Question 4 weeks ago

Hello!, I thought if it would be possible to capture and show all the brain waves like Alpha,Beta,Theta and Gamma. But I don't know how to do it can anybody help me please?.(0.1Hz to 200Hz).Also I live in Spain so i need 50Hz filter. But I don't know how to do it.

1 answer
0
None
BmE Mazenavatar.vr25

Answer 26 days ago

All you have to do is change the cut off frequency using the formula: Fc=1/2pi*R*C. For example, the low pass filter’s cut off frequency must be set less than 0.1Hz (lets say 0.01Hz) and the high pass filter’s cut off must be more than 200Hz (lets say 220Hz) so ur signal stays in the passband region. As for the notch filter at 50Hz use the same cut off frequency formula to determine the resistor value while assuming a known value for the capacitor. I highly suggest you to use TINA TI circuit simulation to build and simulate your circuit. Also, there’s alot of filter design tools you can use to help u with filter building such as texas instruments filter design.

0
None
gal287199

Question 4 weeks ago

does anyone can explain way we need 3 electrodes to measure the eeg signal. doesn't it engugh to connect one electrode and the other will be reference the gnd so if we connect it to instrumantal amplifer, v+ will be the electrode connect to the brain v- will be the electrode connect to the skin and the reference to the amplifer will be gnd of power supply for example.
why need to connect to one more electrode behind the brain ( occipital lobe)
tnx for answring
best regards ,
gal

0
None
BobbySt78

Question 2 months ago on Introduction

I have a question and a request.

This is using an audio signal which is then read by the computer. Do I have to read the data live?

Most voice recorders have a mic port. I'm thinking it would be interesting to record brain waves during a nap. Just starting it with a recording is not only simple, but it cuts down on the lights while testing. I would love to see this input into a phone and have your program made into an app.

The request: It seems like some of the links are expiring. Also, one of the kits is $30. While the stuff my be useful eventually, I am just focused on this build. I'll save getting the kits for when I think I know what I am doing. Could you provide an updated part list with prices and links?

0
None
Anjanakm

Question 2 months ago

Can anyone tell me for what input voltage is this circuit designed? Please reply asap.

0
None
JAYs007

Question 2 months ago

Can you please give a more detailed information on how to connect the final circuit output of EEG to the arduino. I am thinking to control a simple robot or a set of motors with this system. Any help is appreciated.
Thanks in advance.

0
None
thomADA

Question 2 months ago

Can anybody help me understanding those filters? I tried to calculate them, but I do not know what I am doing wrong. Cut off frequency for HPF should be 7,23. Cut off F=1/2*pi*R*C that give me 3,28Hz instead 7,23 like in project. Could someone paste here caluclations? Thanks

0
None
scitronboy

3 months ago

cah6, you REALLY need to add a disclaimer that says you are not responsible for people electrocuting their skulls with this device. Like this:

http://openeeg.sourceforge.net/doc/WARNING.html

Thanks for the awesome instructable anyway! This would be really cool to build.

0
None
Kaushal r

Question 3 months ago

What will happen if i increase the gain of the instrumentation amplifier by 1000 factor?
Would it affect my frequency and how should i reduce the input offset at this point since the input can be as low as 10u volt and the input offset given in the datasheet is 30 u volt??

0
None
RanaY6

1 year ago

I made this circuit but I have a problem
The circuit does not sense anything until people in the room or the person we put sensors on start talking
Any solutions ?

2 replies
0
None
scitronboyRanaY6

Reply 3 months ago

Change your audio settings so that it gets input from the audio jack instead of the speakers

0
None
ShuzhengzRanaY6

Reply 4 months ago

Think you have to use a 4-port audio jack

0
None
PatrickR162

Question 3 months ago

can this be used to teach a robot human movements? or am i thinking of something else? im new to robotics ha

0
None
Antonius VincentM

Question 4 months ago

can i use lattepanda for this project (im new about this..)

0
None
LuisA350

6 months ago

This Notch filter seems better, also have a calculator for 50 HZ
https://www.changpuak.ch/electronics/Active_Notch_...
I made a programm for testing sending 5 hz...10hz...20 hz.. etc connecting the outut sound card to the notch filter and to the mic, and the results from this filter is better that the the one above from oskar15 and the one related in this page. I dont have place to upload the soft, but if you want it let me know and i send u. Here is an image comparing DIY EEG filter with the one i suggest. It looks like the DIY atenuates to much so noise can enter. I used 100 nanos and 95% feedback in the changpuak calculator so I get bandwith 10 and Q=5.

filters.jpg