Hackaday Prize Entry: Biopotential Signal Library

With prosthetics, EEG, and all the other builds focused on the body and medicine for this year’s Hackaday Prize, it might be a good idea to take a look at what it takes to measure the tiny electrical signals that come from the human body. Measuring brain waves or heartbeats indoors is hard; AC power frequencies easily couple to the high impedance inputs for these measurements, and the signals themselves are very, very weak. For his entry to The Hackaday Prize, [Paul Stoffregen] is building the tools to make EEG, ECG, and EMG measurements easy with cheap tools.

If the name [Stoffregen] sounds familiar, it’s because he’s the guy behind the Teensy family of microcontroller boards and several dozen extremely popular libraries for everything from displays to real time clocks. The biopotential signal library continues in [Paul]’s tradition of building very cool stuff with just code.

The hardware used in this project is TI’s ADS1294, a 24-bit ADC with either 4 or 8 channels. This chip is marketed as a medical analog front end with a little bit of ECG thrown in for good measure. [Paul] is only using the ADS1294 initially; more analog chips can be added later. It’s a great project in its own right, and when you include the potential applications of this library – everything from prosthetics to body sensors – it makes for an awesome Hackaday Prize entry.

The 2015 Hackaday Prize is sponsored by:

11 thoughts on “Hackaday Prize Entry: Biopotential Signal Library

  1. Looks like a good project. I’ve got a few ideas for cybernetic interfaces, but was a bit daunted by having to design an EMG interface. A library and complete project would make tinkering much easier.


    I note that there is a list of prosthetic projects over on ‘IO. In about 6 months we [hackers] should have all the tools we need to tinker with new designs.

    For example, I don’t know that anyone has designed a prosthetic with swappable manipulators – I’ve seen swappable passives, but not swappable controlled manipulators. I’m waiting to see the first prosthetic hand with a swappable manipulator for a specific purpose that’s not a clone of the human hand.

    (And I’ll give a skull and kickstarter donation to the first person that implements a prosthetic interface to a backhoe.)

  2. Too bad that the one that wrote those lines of code doesnt understand one of the basic principles of programming, which is making use of fully qualified names … Maybe it’s normal that electronic engineers would see this as awesome as they dont understand a lot about coding.

    1. I always felt that programming had a context, which was to inform the reader.

      I realize that the new method is to mindlessly apply the principles, but I could never understand that. Especially when the principles change over time; for example, “Hungarian notation” used to be huge, but it’s out of vogue at the moment. Didn’t someone publish a paper proving that Hungarian notation reduces bugs? Are “principles” some sort of geek religion based on belief?

      Also there’s really no ranking or precedence in the principles. For example, the purpose of the code in the article is to tersely inform the reader. Since it’s not meant to be real code, do the priorities and precedents of the “principles” get rearranged?

      The principles are not well specified, they never cover all the cases, they’re sometimes mutually contradictory and inconsistent (which is better: reducing bugs or clarity?), and mindless application has led, in my experience (of which I have lots) to more trouble than they’re worth.

      Rather than mindlessly apply the principles, learn *why* to apply the principles, as well as *when*.

  3. What makes me more sad about modern “app-ization” is that a piece of code for reading AD’s get to the front page of the news.
    Don’t take me wrong, I’m not degrading Paul’s work, what I’m saying is: he uses a 24-bit medical-AD (ADS129x) and his (amazing) Teensy, both chips capable of doing virtually anything, and throws some code to get analog readings. Only that, nothing (very) specific.
    Of course I am not saying I can do better, nor that I CAN do it at all. And I also understand that the real leap for technology this century is in software, but I just don’t agree with that.
    AMAZING are the guys who developed and produced the actual piece of silicon inside Teensy and inside the TI Analog to digital converter.

  4. The input raw signal is only 24-bit (assuming you are using the full range). Is it necessarily to use floating point (vs fixed point in long)? IEEE single precision Float only store 24 bit of significant bit. Might not be a issue for ARM chips, but on 8 bitters, it cause major code bloat.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.