Bench modeSteps, parts, and safety only. Big type for a phone at the bench.
Phase 1: First contactProjectTwo eveningsAbout $80 in parts, most reusableTier 1

Project B: One channel of you

Alpha EEG from one instrumentation amplifier, a driven-right-leg circuit, and gold cup electrodes. Close your eyes and a bump appears at 10 Hz. Open them and it vanishes.

AssumesThe safety charterSpineAnalog / mixed-signal hardware

You are skimming: the title, the first figure, and the short version. Switch to Read in the header for the full page, or Deep to open every deep dive.

This is the project that makes the field feel real. Three electrodes, one on the back of your head, one on an earlobe, one on your forehead. An amplifier with a gain of about two thousand and a band-pass from half a hertz to forty. An Arduino to sample it and the Web Serial plotter to show it. Close your eyes and watch a peak grow at about 10 Hz in the spectrum. Open them and watch it disappear within a second. That peak is your , and once you have seen it you will not stop seeing it.

One channel of simulated EEGSimulated signal
This interactive needs JavaScript. If you are reading a printout, the caption describes what it shows.
Figure 1. What you are aiming for. A simulated single channel over the back of the head, with the usual troubles. Press Eyes closed and watch the spectrum. Then try the filters.
Try this
  1. Press Eyes closed. Watch the shaded alpha band in the spectrum fill in over two seconds. Press it again.
  2. Turn Mains hum up until the trace is a solid band, then set the low-pass to 40 Hz. Then turn the notch on. Notice which one helped more.
  3. Press Blink. Compare its size to alpha. Set the high-pass to 0.5 Hz and press Blink again.
Predict before you look

Where on the head will alpha be largest?

The back of the head, over visual cortex. Alpha is what visual cortex does when it has nothing to look at. Put the electrode on the forehead first and you will see nothing, which is a useful mistake to make once.

Parts

PartWhereQtyApprox.
9 V batteries and snap connectors, ×4
Two batteries give you a ±9 V split supply. Never power anything touching skin from the wall or from a laptop USB port.
Any store1$10
AD8232 heart-rate monitor breakout
A complete biopotential front end on a board. Use it to compare against your own amplifier, and to see what a good DRL looks like.
SparkFun, Adafruit1$20
Alligator clip leadsAmazon1$6
Arduino Nano Every or Uno (10-bit ADC, USB serial)
A clone works. You need a real analog input; the Nano Every and Uno are the simplest path to the Web Serial plotter.
Arduino store, Amazon, Micro Center1$15
Digital multimeter
You will use this more than any other tool. Auto-ranging saves time.
Amazon, Harbor Freight, Micro Center1$25
Disposable snap ECG electrodes, pack of 50, and snap leads
For EMG and as a quick ground/reference. Snap leads with alligator or 3.5 mm ends.
Amazon1$12
Flush cutters, wire strippers, tweezersAmazon1$15
Full-size breadboard, ×2, and jumper wiresAdafruit, Amazon1$12
Gold cup EEG electrodes, set of 5 with leads
Reusable. Clean them after each use. Touch-proof (DIN 1.5 mm) connectors are the standard.
Amazon, OpenBCI shop, medical suppliers1$30
INA128 instrumentation amplifier (DIP-8), ×2
The AD620 or INA118 are interchangeable for our purposes. Get the through-hole DIP version for breadboards.
Digi-Key, Mouser2$18
Pinecil soldering iron (USB-C powered) and a spool of solder
Or any temperature-controlled iron. Lead-free solder is fine; get flux.
Pine64 store1$35
Resistor and capacitor assortment
1% metal-film resistors matter for the instrumentation amplifier's balance. Include 0.1 µF ceramics and a few 1 to 10 µF film or ceramic caps.
Amazon, Adafruit1$15
Ten20 conductive paste, one jar
Holds the cups on and lowers impedance. Nuprep skin gel helps too.
Amazon, medical suppliers1$12
TL072 or OPA2134 dual op-amps, ×4
For filters, the DRL circuit, and the audio stage of the SpikerBox.
Digi-Key, Mouser1$4
Total (prices drift; treat as a ceiling)$229

The circuit

Compared to the SpikerBox, two things change: the filter moves down to EEG frequencies, and a third electrode with a feedback circuit is added to cancel hum.

Input protection. Each electrode lead goes through a 100 kΩ resistor before the amplifier input. With the INA128’s 10 GΩ input impedance this costs nothing, and it limits any fault current to microamps.

Instrumentation amplifier. INA128, gain resistor 500 Ω, gain about 100. The gain resistor is split into two 250 Ω resistors in series, because the junction between them carries the average of the two inputs, which is the voltage. You need it for the next part.

Driven-right-leg circuit. A TL072 stage takes the common-mode voltage from that junction, inverts and amplifies it (1 MΩ feedback, 25 kΩ input, so about −40), and drives the third electrode through a 390 kΩ resistor. Now the body’s hum is actively cancelled instead of only rejected. The 390 kΩ limits the current the circuit can push into you to about 25 microamps even if everything fails, which is what requires.

High-pass at 0.5 Hz. A 1 µF capacitor into 330 kΩ. This removes the electrode offset, which can be tens of millivolts and would saturate the next stage. It also removes sweat drift.

Second gain stage. TL072 non-inverting, gain 20 (1 kΩ to ground, 19 kΩ feedback; 18 kΩ plus 1 kΩ works). Total gain about 2000, so 50 µV of alpha becomes 100 mV.

Low-pass at about 35 Hz. 10 kΩ into 0.47 µF. This is the anti-alias filter for a 250 Hz sample rate, and it knocks down a good part of the 60 Hz.

Level shift for the ADC. The output swings around ground. The Arduino reads 0 to 5 V. A 10 µF capacitor into two 1 MΩ resistors, one to 5 V and one to ground, centres the signal at 2.5 V without adding a meaningful high-pass (0.03 Hz).

  1. Build the instrumentation amplifier with the split gain resistor and the two bypass capacitors. Test with a 1 kHz tone through a 100:1 divider as in the SpikerBox.
  2. Add the 0.5 Hz high-pass and the ×20 stage. Test again; the tone should be about 2000 times bigger than the input. With the input shorted through 10 kΩ, look at the output on the plotter: this is your noise floor. Write it down in millivolts and divide by 2000.
  3. Add the low-pass, the level shift, and the Arduino. Load the serial streamer sketch from the plotter page. Confirm you see a flat line at about 512 counts with the input shorted.
  4. Add the DRL stage. Do not connect it to anything yet. Check it does not oscillate (a steady output near 0 V with the inputs shorted).
  5. Prepare the skin. Part the hair at the back of the head, slightly left of centre (the position called O1), and rub the spot with a little Nuprep or alcohol on a cotton swab. Do the same on the left earlobe and the centre of the forehead.
  6. Fill three gold cups with Ten20 paste, more than seems reasonable, and press them on: O1 to the amplifier’s + input, earlobe to the − input, forehead to the DRL output. Hold each cup down for ten seconds. A strip of medical tape helps.
  7. Unplug the laptop charger. Connect the Arduino. Start the plotter.
  8. Sit still, look at a fixed point, and watch. Blink on purpose and see the deflection. Clench your jaw and see the burst. Then close your eyes for ten seconds and watch the spectrum.
  9. Save a plot with eyes closed and one with eyes open, axes labelled, and the CSV next to them.

What the numbers should look like

Input-referred noise with a shorted input: a few microvolts RMS if soldered, ten or twenty on a breadboard. Alpha, eyes closed, at O1: 20 to 60 µV peak in most people. A blink at O1: 50 to 150 µV. The same blink on the forehead: 300 µV or more. Sixty-hertz hum after the DRL and low-pass, with the laptop unplugged: under 5 µV, ideally under 1.

Going further

Replace the breadboard with a soldered board and watch the noise floor drop by a factor of five. Compare your amplifier to the AD8232 breakout, which has a DRL and filters built in, and see what a professional designer did differently. Move the electrode to C3 (above the left ear, toward the top) and open and close your right hand: the mu rhythm is alpha’s cousin and it drops when you move. Add a second channel and a second Arduino pin.

What to read now

Why so small? is about the gain, the difference measurement, and the third electrode you just used. Why the hum? is the debugging list above, with the reasons. Alpha and the back of the head is about what you saw. And the artifact bestiary will name every strange thing on your trace.

Recall
Why is the gain resistor of the instrumentation amplifier split into two?
The junction between the two halves carries the average of the two inputs, the common-mode voltage, which the driven-right-leg circuit inverts and feeds back to the third electrode.
Recall
What does the 390 kΩ resistor in the DRL output do, and which standard does it satisfy?
It limits the current the circuit can ever push into the body to about 25 µA even under a fault, satisfying IEC 60601 patient leakage limits.
Recall
Why must the 0.5 Hz high-pass come before the second gain stage rather than after?
Electrode offsets can be tens of millivolts. Multiplied by 20 they would saturate the stage; the high-pass removes them first.