DEV Community

Shivaramakrishnan
Shivaramakrishnan

Posted on

Adam-EEG: an open-source 32-channel EEG board from 2015 (quad ADS1299 + dual ATmega328)

India's first open-hardware 32-channel EEG / biopotential acquisition board — a quad-ADS1299 analog front end driven by a dual-ATmega328 controller, designed in EAGLE by Soul Scientific in 2015, and just now open-sourced under Apache-2.0.

Adam-EEG packs four Texas Instruments ADS1299 24-bit, 8-channel simultaneous-sampling analog front ends onto one board — 32 truly simultaneous EEG channels, daisy-chained over a single SPI bus — with onboard microSD logging for fully standalone (untethered) recording. No host PC, no muxing, no compromise on channel count to hit a price point.

Why this exists

Research-grade multichannel EEG hardware is expensive and closed. A clinical 32-channel amplifier system routinely runs into five figures (USD), locked behind proprietary software and NDAs on the actual analog front-end design. If you wanted to actually learn how a real biopotential acquisition chain works — the bias-drive loop, the lead-off detection, the reference architecture — you couldn't just open the schematic and look.

Adam-EEG set out to prove something narrower and more useful: that a 32-channel, simultaneous-sampling, standalone-logging EEG board could be built from commodity parts, in a hobbyist CAD tool (EAGLE, not a $10k professional suite), at a fraction of the cost — and that the full schematic and board could just be public. Not a black box, not a paywalled datasheet. A real board you can open, trace net-by-net, and build.

Why ADS1299, and why four of them

The ADS1299 isn't just "a 24-bit ADC" — it's purpose-built for biopotential acquisition in a way generic ADCs aren't:

  • Integrated right-leg-drive (RLD) / bias circuitry — actively cancels common-mode noise (mains hum, motion artifact) instead of relying purely on a passive reference.
  • Lead-off detection built into the analog front end — the chip itself can tell you when an electrode has come loose, without extra circuitry.
  • EEG-characterized input noise — TI specs and validates this part against the actual noise floor EEG signals live in (single-digit microvolts), not just generic ADC noise numbers.

A single ADS1299 gives you 8 simultaneous channels. Adam-EEG uses four, daisy-chained over one SPI bus, to hit 32 — full-coverage, research-grade channel density, still built entirely from a part TI sells openly with a public datasheet.

Technical specifications

Subsystem Detail
Analog front end 4 × Texas Instruments ADS1299 — 24-bit, 8-channel, simultaneous-sampling, low-noise biopotential ADC
Total channels 32 unipolar channels + common reference, fully simultaneous (no muxing)
AFE interconnect Multi-device SPI daisy-chain — shared SCLK/DIN/DOUT/DRDY, individual CS1CS4 per ADS1299
Controller 2 × ATmega328 (SMD, Arduino-compatible core)
Programming 2 × 6-pin AVR ISP headers
Onboard storage microSD socket — standalone data logging, no host PC required
Power LM2663 switched-capacitor inverter + LP5907 / TPS723xx LDOs for clean split analog rails
Clocking 2 × crystal oscillators, one confirmed 32.768 kHz (real-time/watchdog clock)
Board 2-layer, 97.2 × 81.9 mm (~79.6 cm²), 2 × Ø3.2 mm mounting holes
Complexity 354 schematic parts / 229 placed board elements
CAD format EAGLE 6.6.0 XML (.sch / .brd) — single schematic sheet
License Apache License 2.0

Connectors & pinout

Pulled directly from the schematic's named nets, not reverse-engineered from silkscreen:

Connector Type Signals Role
ARDUINO_CONN 1×11 header CS1CS4, SCLK, DIN, DOUT, DRDY, RST, PD, STRT Full SPI daisy-chain + control breakout — lets an external Arduino-compatible host drive all 4 ADS1299 directly, independent of the onboard ATmega328s
ELECTRODES_P&N 1×18 header 18 electrode nets Primary differential (P/N) electrode input header
ELECTRODES / ELECTRODES1 / ELECTRODES2 3× 1×8 header Per-channel buffered outputs Buffered channel-output test/tap points for 3 of the 4 ADS1299s
POWER_PIN 1×2 header +5V, AGND Main board power input
JP3JP5 1×2 jumpers DIN/DOUT/SCLK In-line jumpers on the SPI data/clock lines (break/test-point access)

Passive component reference

Useful if you're sanity-checking a BOM or planning a respin — pulled from the real value= attributes in the schematic:

Component class Dominant value Count Likely role
Resistor 5 kΩ 60 of 69 Per-channel bias/lead-off network (matches ADS1299's typical RLD topology)
Capacitor 4.7 nF 48 of 127 Per-channel input RC filtering
Capacitor 1 µF 36 of 127 Local/bulk decoupling
Capacitor 0.1 µF 28 of 127 High-frequency decoupling
Capacitor 10 µF / 100 µF 7 / 4 Bulk supply-rail reservoirs

System architecture

Each ADS1299 samples 8 channels simultaneously; the four devices share one SPI bus in TI's standard multi-device daisy-chain topology (DOUT of one feeds DIN of the next), so all 32 channels are read out in lockstep with no channel-to-channel skew — an important property for EEG, where you actually care about phase relationships between electrode sites.

ADS1299 #1 (ch 1-8) --DOUT--> ADS1299 #2 (ch 9-16) --DOUT--> ADS1299 #3 (ch 17-24) --DOUT--> ADS1299 #4 (ch 25-32)
        |                                                                                         |
        +-------------------- shared SCLK / DIN / DRDY, individual CS1-CS4 -----------------------+
                                              |
                                    Dual ATmega328 controller
                                              |
                                        microSD (standalone logging)
Enter fullscreen mode Exit fullscreen mode

The dual ATmega328 controller manages the chain and streams samples straight to the onboard microSD card — a full recording session needs nothing plugged in but a battery. A separate ARDUINO_CONN breakout also exposes the raw SPI + control bus, so if you'd rather drive the AFE chain from an external Arduino-compatible board (for custom firmware, a different sample-rate scheme, whatever), you can, without touching the onboard MCUs at all.

How this compares to other open EEG hardware

Adam-EEG isn't the only open board built around biopotential-specific AFEs, and it's worth being honest about where it sits:

  • OpenBCI Cyton uses a single ADS1299 (8 channels), extendable to 16 with a Daisy module. Well-documented, widely used, but 8/16ch — Adam-EEG's quad-chip approach gets to 32ch on one board without a second module.
  • FreeEEG32 takes a different path to the same 32-channel target: a single Analog Devices AD7779 chip instead of four ADS1299s. Fewer parts, but a different noise/cost tradeoff, and AD7779 isn't biopotential-specialized the way ADS1299 is (no built-in RLD/lead-off).
  • UpsideDownLabs BioAmp family is excellent but scoped differently — single/few-channel EMG/ECG/EOG boards, not dense multichannel EEG.

If your goal is specifically dense, simultaneous, biopotential-tuned channels without betting on a chip that isn't purpose-built for it, the quad-ADS1299 approach is a real, validated design point — not just "more chips for the sake of it."

Building one

  1. Install Autodesk EAGLE — a free tier is sufficient; this board's ≤80 cm², 2-layer, single-sheet design was scoped to fit EAGLE's classic free-tier limits.
  2. Clone the repo and unzip EEG_64_1.zip.
  3. Open EEG_64.sch for the schematic or EEG_64_1.brd for the board layout.
  4. Gerbers aren't checked into the repo — export them from the .brd via EAGLE's CAM processor when you're ready to fab.

Safety & disclaimer

This is an open-hardware research/prototyping board, not a certified medical device. It has not undergone FDA/CE or equivalent regulatory clearance, and no formal patient-isolation or leakage-current certification has been performed. If you build one: power it only from isolated, battery-backed supplies, never connect a build to mains-powered equipment while it's attached to a person, and don't use it for clinical diagnosis or treatment decisions.

Full source

Complete EAGLE schematic + board files, this same technical writeup (plus a bit more detail) as the README, and contribution guidelines are all in the repo:

github.com/shiva16/Adam-EEG

Issues and PRs are genuinely welcome — a routing improvement, a KiCad conversion (no open port exists yet), a BOM/sourcing update, or just a build log from your own fab run. Open an issue first so it's easy to track.

Top comments (0)