Close
0%
0%

uECG - small open source wireless ECG sensor

It's cheap, doesn't use a specialized heart rate AFE and can blink LEDs with your pulse :)

Similar projects worth following
Starting from
$79.00
ultimaterobotics has 250 orders / 4reviews
Ships from Ukraine
uECG is small wearable wireless ECG sensor that attempts to bridge the gap between modules for prototyping and medical devices. It can be used both as a development platform and a standalone ECG.
It’s low power, very lightweight, can be worn during physical activities. It streams processed ECG signal in real time and also collects raw data. The ECG signal is rather good, not very noisy, and the recent PCB version has a ipex connector for an external sticker antenna, which makes the connection more stable. We wrote an Android app and a node.js (cross-platform) app for it, so the data can be received on the phone or PC. The battery we currently use is enough to stream for 24 hours. We also made a nice 3D-printed case for it.

If you have any questions regarding our device or your project with it, then feel free to write to us on Discord https://discord.gg/dEmCPBzv9G

We made the first prototype of uECG at the end of 2018, after working on several biosignals projects (both commercial and in-house) and becoming annoyed that there was no simple, open source wearable ECG that you can, well, just wear and measure ECG with. We really liked HeartyPatch, but it was a bit large and didn’t have low power mode. We were going in the same direction, but wanted a simpler and smaller device. Since then, we made several versions (it’s currently v4.5) and a lot has happened. We went to several Maker Faires with uECG, launched a small Indiegogo campaign, which was successful, and after shipping the devices to backers we produced another two batches which we sold on Tindie. In June 2021, we produced the most recent PCB v4.5 batch, with most improvements being around the antenna and powering the device. 

The following is both a description of our approach to device’s schematics/PCB design and a changelog for the latest version. As a main analog front-end, in our schematics we used a generic MCP3911 (dual channel), because we didn’t like the specialized overpriced AFEs. It’s originally developed for energy metering, but it performs nicely in our case too. We also added AD8606 in the role of a buffer precision op amp. For the microcontroller, we chose nRF52832, which is low power, has a lot of processing power and memory, and provides us with a stable Bluetooth/RF connection. We also added BMI160 as an accelerometer/gyroscope IMU. For power in the first PCB versions, we used a simple and reliable LDO - MCP1703. Now we use XC6206, because it has better parameters, better in-built protection, and is cheaper. We use MCP73831T as a charging management chip. We also used SIP32810 for protection and power switching, and a 550mA resettable fuse for short circuit/overload protection.

In first versions we had an optocoupler for connecting stuff to uECG (like LEDs), now we have removed it because it’s not used very often by anyone and we have freed more space on PCB for moving components around. Might add it again… not sure about it yet.

One of the hardest parts was actually to find snap ECG connectors that we could solder on board, but after some time we managed to crack the needed Chinese symbols for them on taobao (where we buy a lot). Here’s the symbols for “ECG snap connectors”, in case somebody needs it: 心电扣 We also tested several battery sizes before stopping at 501245 size, which was both sleek enough to occupy space between the micro USB/switch and thick enough to provide the capacity we needed. 

The firmware performs measuring of raw ECG, filters out mains noise using our own algorithm (50/60 Hz, auto-detecting which band is active), detects R peaks (and calculates from them BPM, heart rate variability statistics), measures skin resistance and receives accelerometer, gyro, steps data from IMU chip. Also firmware takes care of detecting R peaks amplitude and sends out correct peak value via BLE connection (in the previous version R peak amplitude could be distorted by averaging since the peak normally fits within 1-2 BLE data points - that’s fixed now). The resulting ECG quality of this setup is quite high with clearly distinguishable P, QRS, T phases when the unit is properly placed - and even during running a lot of details still can be seen (although distorted by body motions).

For more detailed signal, direct RF connection to PC via base station can be used - in this case, data rate is 976 Hz (vs 122 Hz in BLE mode).

uECG_v4_5_KiCAD.zip

KiCAD files for v4_5. This is the latest version for now.

x-zip-compressed - 144.93 kB - 08/16/2021 at 13:06

Download

uECG_v4_5_BOM.xls

uECG BOM for v4.5, produced in June 2021. It has no components links because we supplied our own parts, but the P/Ns we used are all accurate and decent quality

ms-excel - 44.50 kB - 08/16/2021 at 12:58

Download

uECG_v4_5_gerbers.zip

Latest version of uECG gerbers - v4.5, produced in June 2021

x-zip-compressed - 91.36 kB - 08/16/2021 at 12:58

Download

uECG_v4_5-top.pos

Centroid (pos) file for factory/PNP machine assembly. Only top layer needed, cause there's nothing to pick and place on the bottom.

pos - 6.72 kB - 08/16/2021 at 13:06

Download

uECG_v4_5_LED_polarity.jpg

We like to send factory a picture of the board (or a photo, if there are more nuances) where we mark LED polarity more clearly or some other helpful things, mostly regarding component orientation.

JPEG Image - 377.09 kB - 08/16/2021 at 13:06

Preview
Download

View all 11 files

  • 1 × nRF52832 (on PCB) popular Bluetooth SoC
  • 1 × MCP3911 (on PCB) Generic ADC
  • 1 × AD8606 (onPCB) Precision operational amplifier
  • 1 × BMI160 (on PCB) IMU (accelerometer/gyroscope)
  • 1 × RGB led (on PCB) For blinking in all colors of rainbow!

View all 11 components

  • We’ll be on Maker Faire Kyiv this weekend!

    Ultimate Robotics02/29/2024 at 13:56 0 comments

    Quite symbolically, this Saturday, on March 2, Kyiv will host the first Maker Faire Kyiv in a long time! The last one was in 2018.

    Where, in addition to uECG and uMyo, we’ll present our first project in collaboration with TURFPTAx 

    The device working name is uLabel and it is an ML dataset collection tool for finger movements. 

    Makers from Kyiv (and anywhere else, if you’ll be visiting) - we will be glad to see you!

  • We’re taking a break until September 2024

    Ultimate Robotics02/29/2024 at 13:51 0 comments

    After the events of last year (when our stores on Tindie and Etsy were blocked), we decided that this was a "sign" to stop a little and approach the future sales of our devices more reliably. 

    Selling products from Ukraine was a quest from the very beginning, we spent almost a year to launch sales on Tindie in 2020, and a week after appearing on Etsy, we were blocked without specifying the exact reason (there was only a general list of policy categories).  

    In any case, we’re grateful to Tindie for allowing us to sell our devices at all. 

    And most importantly, we thank you all for supporting us and using uECG and uMyo! 💖🤗

    But financial instruments in Ukraine do not allow us to fully use the existing platforms (we don’t have PayPal or Stripe) and we are very tired. We decided to take some time off to find alternative sales methods and platforms.  

    So until September 2024, we will suspend sales of uECG and uMyo and concentrate on our other work, of which there is a lot. We would be happy if you continue to work on your projects and develop using our devices until we are back. We will provide support as before, but we will not be able to sell the devices.  

    Good luck with your projects – and we’ll be in touch!

  • 1 year anniversary of our friend Denys Antipov's death

    Ultimate Robotics05/11/2023 at 22:18 0 comments

    Today, May 11th, is one year since our friend, Denys Antipov, died at the frontlines. We wrote about him here

    Several events were held in his honor: today we went to the unveiling of a memorial plaque of him, in the Askoldova Mohyla park - a traditional memorial to fighters for Ukrainian independence. Yesterday we went to a screening of a documentary filmed about him. And then there was also a presentation of a scholarship for students of Korean, started by his parents, that was held at the Taras Shevchenko Kyiv National University, which he attended and taught at.

    At the Askoldova Mohyla, a lot of people came with flowers to attend the unveiling ceremony. The last few days were cloudy, and there were clouds in the morning too - but when the ceremony started, the sun came out. Denys’ mother unveiled the plaque, which had his image and his favorite quote engraved on it. It was a very emotional and ceremonial moment, and many people were crying. We were surprised to see that the plaque was one of only two there - although, knowing Denys, we probably shouldn’t have been!

    Different people spoke then, and made very moving and motivational speeches. First, there were religious leaders and a guest of honor - the ambassador of the Republic of Korea. Then, Denys’ friends and colleagues from the university spoke. Finally, his mother, as always, gave a powerful, emotional, and very motivating speech. And when you see her, it is really not hard to understand why Denys was the person he was.

    (Photo from his friend Oleg's Facebook post)

    A year ago, people were heartbroken, in pain and mourning. But today, the mood was different. People were still sad, and in mourning, but at the same time, they were very determined and angry. They cried, and talked about driving the enemy out from our land, and how motivated they were to do so, and to continue doing what Denys, and others like him, did, and to live every day of their lives to the best of their ability. 

    As we looked at the people around, we felt that they shared a common feeling - and we felt this at the yesterday’s screening, too, from the people in the audience. Denys touched a lot of lives. When we saw, and heard, different people talk about him in the documentary, it was hard not to cry all the time. And the more we heard about him, the more new things we learned. For example, we learned that he translated the manual for the first Hyundai Intercity+ trains operated by our national railway - which is a random fact that we completely didn’t expect!

    At the end of the movie, his colleague from the university said that she believes, truly, that he’s still here, among us, because he simply can’t stop existing with this kind of energy. She said: “He just is [here], with us”. And honestly, that’s how it feels all the time. We think a lot about him, especially when we are working, and it really feels like he knows it, and like he’s here, and like he was never gone.

    Слава героям! Слава Україні! Героям слава!

  • uECG is back in stock - and has some hardware updates!

    Ultimate Robotics03/22/2023 at 21:47 0 comments

    Hello everyone - uECG is back! It's a small batch for now, so get them while you can!

    We have made some changes to the board that will hopefully make it more reliable and efficient - especially the IMU since we had some problems with them in the previous batch. We also produced this batch at JLCPCB as a way of optimizing the process and costs.

    Changelog for v.4.52:

    • Replaced AD8606 op amp with a pair of TLV271s;
    • LDOs (3.3V for digital, 3V for analog side) were mixed in the previous version; strangely this didn’t affect functioning, but now this is fixed;
    • Replaced BMI160 with LSM6DS3TR-C;
    • Changed C6 capacitor from 2.2uF to 10uF for better low frequency performance;
    • Replaced circuit protection (red LED) with diodes for more reliability;
    • Changed charge resistor to 8.2K Ohm to fit the battery charging better;
    • Replaced MCP71831 charger IC with TP4054;
    • Added thermistor for measuring temperature;
    • Changed RGB LED to different part number;

    and last, but not least,

    • Added Ultimate Robotics logo on the back of the PCB (!)

    There will be some more updates in the nearest future, so stay tuned and stay safe!

    P. S. And also, check out this cool animation our teammate Olha made specially for this batch's launch:

  • Launch of sales of the second device - uMyo!

    Ultimate Robotics12/04/2022 at 16:16 0 comments

    Hi all! For a long time, uECG was the first and only device available for sale on Tindie. But this fall, everything has changed! We launched the second device - uMyo!

    uMyo is a single-channel EMG device that uses two attachment methods (dry and wet electrodes), but also:

    • It's wireless! No more mess of wires when working with EMG
    • Works with any Arduino via nRF24 radio module (we wrote an Arduino library for that)
    • Works with ESP32 with no additional hardware (we wrote an Arduino library for that as well)
    • Multiple units (up to 12 in current version) can send data to the same Arduino/ESP32
    • Sends out detected muscle activity level, 4-bins spectrum and in nRF24 mode - also raw EMG data

    Although uMyo is already on sale, but you can read the history of its creation on the project page, but this is not the end! We plan to come up with and post mini projects from different areas where you can use your muscles (spoiler: their purpose can be very unexpected), the whole process and code will be available for reproduction and inspiration. Subscribe!

  • Orbitrack computer on ESP32 using uECG for heart monitoring

    Ultimate Robotics06/26/2022 at 19:29 0 comments

    At the end of 2021 we got an orbitrack - and immediately wasn't happy about its in-built computer: not only it has poor visibility and no colors - but also its heart rate monitor works only when you keep hands on the bike's handlebar, it has no contacts on vertical moving parts.

    So we replaced it (in fact, did that a couple of weeks before the war hit, so shooting a video took just a bit longer than we anticipated)

    We took advantage of uECG project we are working on - so heart rate measurement is handled by the device, and ESP32 only receives its data via BLE. The project code is rather modular so a different heart rate sensor can be connected there instead (although characteristics UUID and parsing function should be changed for that, as well as advertiser filter), or it can be used without heart rate sensor at all - but then it won't be as useful.

    The main value of that project is that it shows current heart zone as a color (area between resting heart rate and maximum heart rate is divided into areas and zone defines your training mode), so you can run at optimal load for your goal.

    Connection to orbitrack's speed sensor is very simple: sensor is just a switch that is open/closed at different parts of the revolution, from the amount of state changes you can estimate revolution time - and that can be translated into speed in several ways (I'm translating it to bike speed, it can be translated into running speed as well - but orbitrack's load is more similar to cycling than to running, even though not equal to either of those).

    Calories measurement is rather arbitrary - I found some formulas for calculating orbitrack calories rate online and just hope they are reasonably fitting, no idea how true they actually are.

    code link https://github.com/ultimaterobotics/orbitrack_esp32

  • uECG sales reopening (and a few details)

    Ultimate Robotics06/15/2022 at 16:22 0 comments

    Last week, we reopened uECG sales. 

    We’ve been preparing for it for some time before we learned the news on 7th of June. That day was an unexpected blow for us and for some time, we didn’t know when (or how) we would recover. However, it also made us realize that not only is the war no reason to be slower than usual, but that we can’t afford to be slow anymore.

    For this uECG batch, we have, as usual, prepared a huge firmware update - fixed IMU bugs, improved R detection and EMG mode, rewrote the bootloader and added multi-device functionality. We’ll be writing a separate log about the firmware update with more details about the fixes and new features. Of course, the buyers who have previous uECG batches (except for the Indiegogo one - we didn’t check compatibility yet) can update the bootloader/firmware too and enjoy the updates. 

    We also designed and printed new packaging for the devices - a huge step ahead for us, and we will write about them too! - and made some overall quality improvements. Hope the buyers will like them! 

    We’ll be writing about other stuff that’s happened in the meantime, both here on Hackaday and on our social networks - so stay tuned for new updates.

    uECG is available in our shop on Tindie.

  • A tribute to our friend, veteran and fellow maker, Denys Antipov

    Ultimate Robotics06/07/2022 at 20:37 3 comments

    Today, we learned that our friend, Denys Antipov, died at the frontlines from artillery fire on 11th of May. It was near Izum in Kharkiv oblast. We are heartbroken and refuse to believe it. 

    Denys in his video from May 7, talking about the frontline village his unit was stationed in

    To say that he was a good man is an understatement. He was amazing. We met him back in 2014, when he started a large project, a robotic arm prosthesis, when the war first broke out - and joined without a second thought. This is largely how our team formed. The project goal was initially to help veterans who lost arms and hands in battle, and also anybody else. Our uEMG project is a part of it. 

    Denys (center) talking about the robotic arm project in an interview
    An actual post Denys made in the project Facebook group in 2015, perfectly summing everyone's attitudes towards certain russians
    Denys (right) and our team* posing for a photo for an article about the robotic arm project, in 2016

    *Our members have since partially changed: Arsen - second from the left - has left, and two more people have joined, Olha and Lucy

    He started the project just before he himself went to war for the first time, and came back in 2016. Later, he rented and furnished a small workshop with CNC machines and 3D printers. There, he cut wood, leather and other materials with lasers and made things like beautiful wooden puzzles, figurines, gifts, and engravings on objects like wooden boxes and knives. His recent passion was making musical boxes which played folk Ukrainian songs. He even started a Youtube channel and opened an Ebay shop to promote Ukrainian culture to people from different countries. He also 3D printed and sold supplies for 3D printers, and once collected 100 different 3D filament spools which he arranged by colors on a huge wall-sized stand, which made him very amused and proud. Later he bought a huge inkjet printer to expand a bit. The workshop grew quite a lot since 2016, and there were several people working there before the 2022 war broke out. He also created another large project - an online platform where other army veteran makers could have their businesses and sell stuff and promote it. It's called ua.gifts. It is big and has united a lot of people, but it started in that same small workshop.

    The aforementioned 100 filament spools in all of their glory
    Very happy Denys with his very huge inkjet printer
    One of the music boxes Denys started making recently
    All these cardboard cutouts with which we shipped first two uECG batches were laser cut by Denys, in his workshop. You might have gotten those!

    Denys was (it's so hard to write this word!) a bright light, full of energy in everything that he did. He could do anything, and often all at once, and crack jokes in the process. Formally he was a soldier and a Korean translator and university professor. But really he was so much more, and there was something about him that would make you believe you could do anything. He often gave interviews and told news from all over the world about the projects, and lately about war. On 9th of March, he got injured and was in the hospital. Back then, we were worried but really glad he was alive and for some reason we believed nothing else could happen to him, because he was already injured once - and lightning (or shell) doesn't strike twice, does it…

    And we also planned to do so much together. It's hard to understand what to do further. We don't know how to deal with this loss. We just want him to be back so much, to win the war, and then to see him again and continue our projects!

    We’re proud to have known you. We will never forget you. You will always be our friend, and a hero! Glory to the heroes!

    P.S. And here's how the musical box that Denys made sounds... It's playing Chervona Ruta, a popular Ukrainian song written in the 1970s and still catchy today. When people get drunk, they often sing it (which is how we know).
    And this...

    Read more »

  • War update #2 (volunteering and living from day to day)

    Ultimate Robotics03/17/2022 at 13:24 0 comments

    Yesterday we learned that Tindie platform, on which, as you know, we sell uECG, wrote a post about the war in Ukraine and in particular about the experience of our team. They also wrote to us in a separate letter about the reaction of the company itself and the community - that Siemens has had started a €1 million matching donations round for our country, limited sales and shipments for stores from russia and belarus, and that makers from these countries do not support the actions of their governments. It was sudden and very supportive of them! We love Tindie as a platform/community and it's great to have them on our side.  

    But we also realized that we haven't made updates for a long time... I would like to share some events that happened after our previous post. Our intentions to go to Kyiv suddenly became technically impossible - public transport stopped running in full, which made it impossible to leave the railway station. Therefore, we stayed in Lviv to wait until the situation with transport improves.  

    We did not sit idly by. First of all, we took care of ourselves and each other - building up the household infrastructure (buying food, household goods, kitchen appliances, pillows, blankets, slippers, etc.). These actions gave us the opportunity to at least eat hot food, and to recover as much as possible. At the same time, we plunged into volunteer work. Almost every day, together or separately, we bought various kinds of things and handed them over to volunteers, who distributed them further according to their intended purpose. Most of these things were medicines that were needed right now and on the same day they were sent to Kyiv, Kharkiv and other cities. Volunteers distributed lists of what medicine was needed, but they were often long, so we further narrowed them by making a list including the ones that are spent faster and always needed, and some rare ones that are hard to find, and targeted those specifically.

    We also kept an eye out for requests for hard to get or specialized things. A couple days we hunted for pillows and blankets for refugees, as the city suddenly ran out of them, and were able to supply a dozen or so. Then we turned to equipment requests, and were able to get 2 chainsaws to transfer to a military unit (the one that, to our horror, got bombed later near Lviv…) and also 3 oximeters, a blood pressure monitor and a glucometer to a group of wounded military. One day we also randomly got a couple kg of tofu for a vegan cafe which provides food to refugees for free, had to get it from farmers outside Lviv as there was no tofu here… Focus was never our strongest suit. For now, we ran out of money for a little bit, but we’ll continue as soon as we can. Below is a small photo report.  

    Going back to our plans: just recently, we actually still managed to go back to Kyiv for a day and pick up some of the things and components for projects. Now the whole team continues to stay in Lviv and we are trying to understand our next steps. We miss Kyiv a lot and we do not know for how long we will stay in Lviv, but we do not want to go back empty-handed. So we are thinking about something, but it’s not clear for now if we will be able to pull it off.

    We are also trying to shift some of the attention to work, but we have much less resources and focus than before. Although we must say that so far doing even a little work has been grounding.

    It's hard to talk about plans when we don't know how today will go and what events will take place in Ukraine. We’re trying to live one day at a time, as a lot of people here now do - although we try to plan for 2-3 days (or more!) now too. Therefore, we will try to post updates in retrospect whenever possible.

    We also wanted to thank all our customers/buyers who expressed concern and supported us both in words and in deeds! Thank you very much! 

    And for everyone who wants to support Ukraine, we share again the details for...

    Read more »

  • War in Ukraine (that's where we are) update

    Ultimate Robotics02/28/2022 at 13:19 4 comments

    Hi everyone! 

    When the war started on February 24, we woke up at night in Kyiv from explosions. Our first instinct was: what about our tech? We need to make sure nothing happens to it. And we need to prepare so that we can continue our work in another place. Who knows how long it will take? It could take months. We were used to the 8-year slowly simmering war. But actually, it was hard to even think. We couldn’t sleep because of the sounds of air defense and rockets, there were jets and helicopters flying not far from our windows and air strike warnings several times a day.

    Eventually it was hard to make any decisions because we were too sleep deprived and confused. So we packed our projects - a new batch of uECGs, uEMG in various debug stages, other projects. A maker’s survival kit: stuff for soldering, a tester, alcohol, most used passive components, some active ones, some rare ones, some nRF52832s, some EPS32… Lipo cells, connectors, modules. It was surreal to cut the strips from the spools of passives and label them as there was shooting in the streets in our area. We had to avoid windows as per instructions, cause they were shooting at them sometimes. I remember calmly telling my teammate - hey, can you cut the strips a bit further from the window. And they were like - “oh! sorry, okay”. We even packed one of the Creality Ender 3’s with us. And then went to Lviv by evacuation train the next day. 

    The train was full of people, they even slept in the corridors. But as we were on our way, in the train, trying to catch some sleep, we could finally think - and feel something. We already wanted back. It just felt wrong. We wanted to help, to fight, anything. In Lviv, it is safe. It’s too quiet here. There’s volunteering here to be done, yes, and it is helpful. But we want to go home. We’ve been sitting here for almost two days having done almost nothing. So we’re going back to Kyiv tonight, and will help there.

    Hopefully those who wait for uECGs will forgive us if we accidentally lose the latest batch of uECG in some fire or bombing! We know we promised they will be available soon. But we can produce another one when all of this ends. Don’t worry, this should only take a few days.

    P. S. If you want to help, please donate here: https://savelife.in.ua/en/donate/ This is a local non-profit called INTERNATIONAL CHARITABLE FOUNDATION ‘COME BACK ALIVE, they will distribute the funds at once here where needed.

    There’s also a possibility to donate directly to Ukrainian Armed Forces, the methods to donate are here on the official website of Ukrainian Central Bank:

    https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi 

    Any amount helps, but if you can’t, it’s fine too! 

    You can find other ways to help, including locally, here: https://supportukrainenow.org/ 

    In any case, we know you support our country!

    Слава Україні!

View all 49 project logs

  • 1
    Unpacking

    Welcome, everyone!

    This is an instruction on how to use uECG kits that we sell, but it’s also useful if you want to make your own uECG. Or maybe you were just browsing Hackaday and accidentally found our projects. In any case, thank you for being interested in uECG! 

    We have created a Discord Chat for additional support or feedback, join us!

    For clarity, we also made this video to show everything described in the instruction:

    We tried to make the package as simple and environmentally friendly as possible! It doesn’t contain plastic packaging, but is still antistatic and protects well. 

    The devices (uECG, base and programmer) are stored in separate cardboard cutouts; the electrodes, wires and pins are in the smaller box.

    The most popular (Developer’s) uECG kit includes the following:

    • uECG device;
    • 3D-printed case;
    • 10 single-use electrodes;
    • base station for connecting to laptop/PC (a simple nRF52832 USB board designed by us);
    • USB programmer for firmware upload (ST-Link v2, we use a tested Chinese clone);
    • pogo pin adapter (4 pogo pins/2.54 spacing).
  • 2
    Power on/off
    1. Turn on the the slider on the side of the device - slider switch is used for shipping and long storage modes, not required for standard use
    2. Press a button - the device will turn on immediately. You should see a series of blinks on the left side - first red, green, blue; then three green flashes; then pink. The pink LED means the device is on and ready to use;
    3. The pink LED should periodically flash when device sees R peaks in ECG - i.e. in contact with the skin.
    4. To power off, press and hold the button for 3 seconds. LED should switch from green to red, then you can release the button
  • 3
    Usage
    1. Attach round gel electrodes to the snap connectors on the bottom of uECG;
    2. Peel off the protective layer from them and stick them to the chest as shown in picture below;
    3. Gently press the device onto the skin once to ensure it sticks;
    4. After use, peel off the device and detach the electrodes (they are single-use);
    5. It’s good to minimize the amount of hair and wipe the skin with alcohol for better signal. It will also be easier to remove, too :)

    Please turn off uECG after use! Current version doesn't automatically turn off when no skin contact is present.

View all 10 instructions

Enjoy this project?

Share

Discussions

Thorsten von Eicken wrote 09/15/2019 at 04:27 point

Does the uECG work with a HRM strap, or does it require special electrodes? If so, are they reusable?

  Are you sure? yes | no

the_3d6 wrote 09/15/2019 at 06:27 point

Yes, we checked it several days ago - it gets really good signal. Although it has an opposite type of connector (uECG uses female, and straps have female on them) so we had to solder a male-to-male connector to attach it (simply by soldering two connector parts together, it was surprisingly easy)

  Are you sure? yes | no

forthprgrmr wrote 09/10/2019 at 20:28 point

There are a lot of op amps that I'd choose before the 8606: ADA4528 is much quieter, but slightly higher cost and current, the MCP6V62 is also quieter in the 0.1 to 10Hz band, cheaper, and much lower in current.  The nice thing about these zero drift amps is that there is no 1/f noise.  You say that you're just using the HF content so the 1/f noise might not be important.

Also pay some attention to the noise generated by resistors.  A 100k series resistor is quite noisy in these applications.

My work is more focused on EEG rather than ECG so I'm more focused on noise.  You might be just fine.

What I notice in projects like this (and inexpensive 'scopes) is the analog section is weak while the micro/rf/software is nicely done.  I know good analog engineers are hard to find, but try.

  Are you sure? yes | no

the_3d6 wrote 09/10/2019 at 21:43 point

MCP6V62 looks good, thanks! ADA4528 is way too expensive here.
As for resistor noise - you are right, we forgot about it. Before we added DC shift for measuring skin resistance it was safe to ignore (we didn't have input 100k then and no 10M pull ups), but in the latest revision we added DC shift, and even though in measurements it didn't show any noticeable difference, it really has to be properly estimated.

  Are you sure? yes | no

the_3d6 wrote 09/10/2019 at 21:52 point

*although a quick estimate gives about 1.2 uV in our frequency window, while our ADC gives 1.1 uV per meaningful bit, so it doesn't look really worth worrying about

  Are you sure? yes | no

Marcos wrote 08/03/2019 at 15:02 point

I'm wondering where are GND and GNDA joined together. Inside the ADC chip?

  Are you sure? yes | no

the_3d6 wrote 08/04/2019 at 15:53 point

Wow, you've spotted it! :) No, in fact we forgot it in this design version and had to connect via additional wire (it was convenient to connect grounds of analog and digital LDOs, they have relatively large pads for soldering a wire). But it will be fixed in the production version!

  Are you sure? yes | no

Marcos wrote 08/04/2019 at 20:29 point

A 0 ohm resistor there lets you easily try a choke to see if noise goes down.

Also I see no ESD protection at the input terminals, the OpAmp input is exposed.

Anything else should be fixed? I may give this schematic a try these days

  Are you sure? yes | no

the_3d6 wrote 08/04/2019 at 20:53 point

This opamp has in-built ESD protection so it's fine.
We missed GND bug in 2 consequent revisions because surprisingly it doesn't really affect signal - analog LDO keeps AGND at 3.3V distance from battery positive rail, and that is still within the range of ADC. I really can't tell any difference between fixed unit and the one with this bug (but it still is a serious bug, we just got lucky here).
Not sure if choke would make any difference - it seems that nearly all noise is external, digital part takes too little power with too small fluctuations to really affect the signal.

  Are you sure? yes | no

Marcos wrote 08/04/2019 at 23:51 point

Yeah I figured it would still work, I asked because maybe it was on purpose.

Most chips have some light ESD protection, but its usually not enough. Try zapping that input with an ESD gun, or a stove lighter to prove its enough, because I'm pretty sure it isn't.

You don't need this... but I designed medical grade ECGs a few years ago and they needed to survive a defibrillator discharge -and recover in <5 seconds-. A series resistor + beefy tvs was enough protection and didn't skew the signal ;-)

  Are you sure? yes | no

the_3d6 wrote 08/05/2019 at 03:04 point

I think it won't survive stove lighter discharge :) Never thought that it might need to withstand defibrillator - but you are right, something as simple as 100k resistor and TVS would do just fine (and we have resistor on one side already), so probably we should add it

  Are you sure? yes | no

Marcos wrote 08/07/2019 at 03:21 point

Another tip: missing bypass caps on both supply pins of the ADC ;-)

Accel should have a bypass as well.

A fuse right at the battery connection is usually both wanted and required.

  Are you sure? yes | no

the_3d6 wrote 08/07/2019 at 07:12 point

In schematics you can see decoupling capacitor only on analog supply of ADC, but in fact on PCB it shares digital supply decoupling cap with one of NRF's. IMU also has decoupling cap placed next to its supply (it's not specifically outlined in schematics, but I kept placement in mind during PCB design). Although analog supply cap is too far from the pin, I really should change that (it still works, frequencies are relatively low there, but it isn't optimal).

Adding a fuse is a good idea, thanks! The main problem is possibility of accidental contact of battery wires with random PCB pads during soldering process (and fuse would save only power chips in such case, sensitive analog ones won't survive anyway), but I don't think it could be improved.

  Are you sure? yes | no

John Loeffler wrote 06/09/2019 at 14:28 point

I have been looking for those kind of connectors for grounding. Do you have a supplier/Part Number

  Are you sure? yes | no

Ultimate Robotics wrote 06/11/2019 at 11:33 point

Oh, these are indeed hard to find, we've been trying to find them under various names until we guessed the correct keyword :) We bought ours on taobao, shipped to us with Meest-China (it's a freight forwarder). Here: https://item.taobao.com/item.htm?spm=a1z09.2.0.0.21012e8dG3MeYB&id=563032312890&_u=b3i3ohmv647f

They're called "ECG snap connectors", the Chinese keyword is 心电扣. I believe I also saw them on aliexpress, but it's often faster (not to mention cheaper) to buy them in China directly and forward after that. Also, there is more choice, so for example I could buy our snap connectors from manufacturer directly. To find difficult stuff you can google by various keywords in Google images and then do an image search by uploading most prominent pictures.
Also here's some snap connectors on aliexpress: https://www.aliexpress.com/i/32852040439.html
(but they cost $24 here, while I bought the same amount for $5.5 on taobao)

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

the_3d6 wrote 04/26/2019 at 19:07 point

Thanks! We are getting it ready for production, hope to start crowdfunding really soon (we almost finished development, now the main goal is to get some visibility so we'll have enough bakers to produce the first batch)

  Are you sure? yes | no

Mark wrote 05/24/2019 at 21:36 point

Interesting.   Where are you crowdfunding and how much are you trying to raise?

  Are you sure? yes | no

Bud Bennett wrote 04/09/2019 at 20:00 point

I really hate it when people comment negatively on my projects, but I really love it that they are interested enough to make a comment. My background includes design of medical equipment in the olden days: 1977-1983. I took a look at your schematic and have a couple of questions, or comments for improvement.

1. It doesn't appear that you need to use a unity gain amplifier (the AC8606) to buffer the ADC. U1B is biased near GND and might have problems tracking signals below GND. U1A doesn't do anything at all, except draw current via the 10Ω load of R3.

2. The MCP3911 has a PGA that should eliminate the need for the AD8606. If you biased the CH0- input a few mV above GNDA and AC-coupled CH0+ it should be all that is needed. Yes, there is some uncertainty as to the input impedance of the MCP3911, but that doesn't worry you with regards to the time constant of C17. which uses that impedance.

3. The need for the onto-isolator U7 escapes me. Please elaborate.

4. The ADC doesn't include a 50-60Hz notch filter. Many other ∑-∆ converters include a 50-60 Hz notch. A notch would make the subsequent signal processing easier.

5. D2 is a mystery to me. Please explain.

Overall I'm impressed with your progress. I like it a lot.

  Are you sure? yes | no

the_3d6 wrote 04/09/2019 at 20:50 point

Hi! No problems with negative comments - but yours aren't negative at all :) Quite the contrary, thanks for taking a deep look at our schematics!

It seems that you've missed that we have not 2 but 3 grounds: GND is digital ground, GNDA is analog ground, and GNDS is a virtual "ground" which is actually at +0.6V and we measure all analog signals around it. Probably our symbols are misleading ))

1. U1A generates virtual ground - divider on its input sets level of about 0.6V and U1A repeats it (via 10R resistor just in case if something goes wrong, no real need in it since amplifier survives short circuit). That level of 0.6V is our zero point around which we work (and normally we stay within a few mV around).

2. MCP3911 has input impedance of about 30k when PGA is set to 32 amplification - and skin has impedance in a few MOhm area (measured that for gel pads and placement we are using) - so without buffering input with AD8606, it works like a voltage divider. Actually in our first iteration we made a mistake and had to omit amplifier completely - and it worked somehow, but signal was much, much worse and very sensitive to contact quality.

3. It is for connecting to external Arduino or other microcontroller: we are detecting heart beats onboard, and send them as short pulses there. Optocoupler makes external connection simple, eliminating possible problems (you can just connect it, and if it doesn't work - connect with opposite polarity). 

4. Yes - but check project logs, I'm really proud of the filter I've made! :) It's better than anything I saw before - including max30003 AFE which is specifically designed for ECG. Our result is seriously better (we work on another project based on max30003 in parallel, so I can compare them in identical conditions). And MCP3911 is the cheapest 16 bit AFE out there! )) (also uploaded illustration of how it works in extreme conditions: https://cdn.hackaday.io/files/1644867037369024/noise_removal_algo.png )

5. MCP3911 can be damaged if input voltage exceeds +2.0V on any ADC input. Normally we work around 0.6V point, but when the unit is not on the body, input can get anywhere. As soon as it exceeds approximately 1.2V, LED turns on, protecting the input and, at the same time, visually indicating that there is overload! And it actually works, when it's charging via usb, you really can turn it on by touching only one input! ))

  Are you sure? yes | no

Bud Bennett wrote 04/10/2019 at 00:48 point

Fair enough. I grok it now. There is a reason for everything in a schematic, if not entirely obvious. I'm an old school EE, so schematics should have wires connecting components instead of tags. It's easier for those not familiar with the design to understand what's going on. 

Thanks for the answers. Carry on. It obviously works.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates