В основе платы для считывания ЭКГ располагается инструментальный ОУ. На рынке представлено много таких ИМС. Одни основаны на КМОП технологии ( например, INA321 ~ 170 руб), другие на биполярных транзисторах (например, AD620 – 450 руб).
При сравнении параметров ОУ по чувствительности к входному сигналу выигрывают биполярные, в то время как полевые выигрывают в цене и току потребления. Для считывания ЭКГ была выбрана INA321.
Основные технические характеристики ИОУ INA321:
1. Напряжение питания однополярное Vcc +5 V.
2. Потребляемый ток 45мкА (max).
3. Микросхема изготовлена по КМОП технологии.
4. Значение подавления синфазных помех: 95дБ.
5. Коэффициент усиления дифференциального сигнала от 5 до 500 раз, определяемый внешним резистивным делителем.
6. Уровень собственного шума: 10 uV.
В техническом описании на ИМС приводится принципиальная схема для ЭКГ. Для оцифровывания сигнала воспользуемся звуковым чипом с материнской платы ПК ALC662 (или аналогичный). Совместив принципиальные схемы двух устройств, получилась такая схема:
Рис. 1 Принципиальная электрическая схема
Так как сигнал ЭКГ не высокочастотный, то частоты оцифровывания звуковым устройством хватит с лихвой. При измерении столь малых напряжений, как ЭЭГ и ЭКГ, ОУ устанавливаются в усиление сигнала в тысячи раз. Но это усиление делается не на одном ОУ, а каскадом. Соответственно в основе платы устройства лежит INA321 и ОУ общего назначения LM358.
Рис. 2 Расположение измеряемых напряжений
Общее регулируемое усиление платы по расчетам составляет от 1200 до 3300 раз (регулировка подстроечными резисторами). Плата спроектирована таким образом, что имеет большой диапазон изменения коэффициента усиления и при минимальном значении в 1200 раз соответствует платам, с помощью которых получают сигнал ЭКГ с тела человека. Плата сделана по технологии ЛУТ. USB используется только для питания, сигнал передается через 3.5 jeck.
Рис. 3 Плата для ЭКГ. Вид сверху
Сигнал с платы после усиления поступает на звуковой чип материнской платы ПК, оцифровывается, обрабатывается драйвером и потом передается конечной программе для обработки.
Рис. 4 Точки подключения электродов
По стандартной схеме подключения электродов для считывания ЭКГ два электрода размещаются на запястье рук и фиксируются там, а третий электрод располагается на ноге для подачи на нее опорного напряжения. Электроды были сделаны из поролона с фольгированной оболочкой площадью ~ 2 см2 и смачивались солевым раствором для понижения сопротивления рогового слоя эпидермиса.
Рис. 5 Электроды для снятия сигнала ЭКГ
Для записи сигнала (звука) использовалась программа Sound Forge Pro 11. После первой пробной записи результат был такой:
Рис. 6 Первый график ЭКГ — совсем не ЭКГ
После аппаратных доработок, настройки программы и драйвера и прочих танцев с бубном получить стабильную ЭКГ все таки удалось.
Рис 7. Примеры полученных графиков ЭКГ
Сверху расположена ось времени, которая позволяет подсчитать частоту ударов в минуту. Полученные результаты подсчета подтверждают, что наблюдаемый график и есть ЭКГ – фиксируется 75 ударов в минуту с четкой периодичностью между соседними ударами в 0.8 сек. График оцифровывался в разрешении — 8bit, частота дискретизации — 8kHz. Хотя для частоты в 75Гц выборки в 8кГц многовато.
В программе Sound Forge есть возможность провести обработку записанной дорожки с помощью XFX плагинов. При определенной настройке в программе можно подавлять 50Гц наводку, после чего график становится более похожим на тот, что получается при записи ЭКГ в больнице.
Например, изначальный график:
После применения эффекта эквалайзера к графику:
Так как у нас сигнал оцифрован в звуковую дорожку, то есть возможность сохранить её и прослушать. Услышанный сигнал очень сильно напоминает звук, который слышит человек, когда слушает пульс через стетоскоп, например, при измерении давления.
При считывании сигнала нужно постоянно обеспечивать контакт всех электродов с телом. Солевой раствор для этого подходит плохо. Признаком потери контакта и, соответственно, роста сопротивления между электродом и кожей является усиление 50-55 Гц наводки на графике и пропадание ритма.
Рис. 8 Пропадание сигнала и усиление шума.
Колебания напряжения питания также очень хорошо улавливаются схемой. Шумы в питающем напряжении изменяют значение опорного напряжения, которое должно быть как можно более стабильным, потому как оно подается на тело и относительно него идет получение сигнала. Колебания опорного напряжения накладываются на снимаемый сигнал и усиливаются ОУ, отпечатываясь на получаемом графике. При переключении платы на питание об батареи шумы питающего напряжения заметно ослабевают.
Рис. 9 Шумы в питающем напряжении при питании от сети и от батареи (один график).
Также учтем, что есть собственные генерируемые шумы ИМС. Например, согласно технической документации на INA321, график её собственных шумов, хотя он намного слабее сигнала ЭКГ:
Рис. 10 График шумов напряжения INA321
Проблема в том, как отличить, что будущий планируемый график ЭЭГ это не собственные шумы ИМС или не какие-либо еще? График ЭКГ получился, но мы знаем как он должен выглядеть. А как должен выглядеть ЭЭГ сигнал? При получении сигнала ЭЭГ есть риск получить вообще не тот сигнал, и потратить кучу времени на него.
Заключение.
Получение сигнала ЭЭГ нужно в конечном итоге для создания интерфейса компьютер-мозг. Это сложная задача и занимаются ей много институтов по миру. Не знаю как у них организован процесс проведения исследований, но мне приходится работать на своих началах и делать платы буквально “на коленках”, что дает свою закалку, а потом в лабораторных условиях все так легко будет казаться делать.
Комментарии (43)
Meklon
15.12.2015 20:52А давай про танцы с бубном по звуковой карте? Я тоже собирался её как АЦП использовать.
RomanSansay
15.12.2015 21:01А конкретно вопрос в чем? Используй как АЦП. Что не получается?
Meklon
15.12.2015 21:04+1Ещё не пробовал по факту. Какое предельное напряжение на line in? У меня сниматься сигнал с пьезо-пленки будет.
smart
16.12.2015 06:40На микрофонном входе (большинство карт) максимум порядка 0.7V, на линейном по идее должно быть побольше. Говорят, что карты обычно спокойно переживают пару-тройку вольт, больше – есть риск спалить.
Я делал «осциллограф» на звуковой карте (чтобы не рисковать ноутбуком, брал внешнюю USB), в целом для некоторых задач полезно, но полезная полоса очень узкая. У звуковух обычно встроено автоматическое выравнивание «нуля» (bias), поэтому низкочастотные сигналы эта хрень здорово искажает. Сверху, понятно, ограничено из-за низкой частоты дискретизации (на 44kHz реально можно разглядывать сигнал до 5kHz).
И да, ноутбук – это единственный вариант, ибо при питании от сети даже без усиления от 50Гц наводки жуткие, а если там 1000-кратное усиление, я представляю что это будет.Alexeyslav
16.12.2015 10:21Для линейного входа — 0.7В RMS, это амплитудное 1В для синуса или 2В пик-пик для других сигналов. Микрофонный вход — это чувствительность 20мВ и 2мВ если поставить галочку «усиление микрофона» но это как правило бесполезно — при 24битах оцифровки количество полезного сигнала не добавляется, только растут шумы.
От 50Гц можно избавится режекторным фильтром высокого порядка… но они все искажают сигнал, да и сам тракт звуковой карты очень далёк от идеала — очень неровная АЧХ.
Использовать звуковую карту в качестве АЦП можно для низкочастотных сигналов, промодулировав его опорной частотой по амплитуде как это делается в УПТ с МДМ.Meklon
16.12.2015 10:34У меня пьезоэлемент. Токи мизерные, но размах напряжения большой. Чем защитить? По идее просто резистор потушит без проблем, там вроде микроамперы. Что-то типа стабилитрона поставить для отсекания выше порогового? Пусть тупо сигнал в насыщение уйдёт.
sergku1213
16.12.2015 12:20Трансформатор? Плюс будет в том, что во сколько раз напряжение снизим, во столько станет больше ток.
Meklon
16.12.2015 12:26Эмм… Как-то глобально. Мне бы тупо отсечь.
sergku1213
16.12.2015 12:48Не знаю, взять горелую лампу-энергосберегайку — там ферритовый сердечник всегда есть, да и намотать. Хоть и монтажным проводом.Просто мне кажется, так весь диапазон будет виден, а если отсекание — то будет сильно искажать сигналы в верхней части. Ну Вам виднее, что в опыте требуется.
Meklon
16.12.2015 12:53ТАм все просто. Есть регулятор чувствительности. Если ушли в отсечение верхней части — снизить усиление. Главное, что не спалим ничего. На всякий случай можно еще у DIHALT уточнить.
sergku1213
16.12.2015 13:13Видите ли, если Вас интересует изменение уровня выходного сигнала во всем диапазоне — то трансформатор нужен, если же Вы подключите пару резистор-стабилитрон, то Выше определённого напряжения линейность передаточной характеристики будет меняться. Причём я не уверен, что на очень малых токах (как от пьезодатчика) стабилитрон будет нормально работать. Вам, вероятно, придётся пользоваться буферным усилителем? Тогда его можно сделать нелинейным. Видел схемы логарифмических усилителей на ОУ. А если волнует сугубо наличие/отсутствие сигнала — то оптопара (оптрон)?
smart
21.12.2015 21:15Можно после делителя напряжения поставить встречно направленные диоды (пример тут) – при превышении напряжения открытия они будут открываться и «сбрасывать» излишки накоротко. Если нужно ограничить большим напряжением, можно несколько диодов последовательно.
Alexeyslav
16.12.2015 14:26Усилитель-повторитель нужен на полевиках, это как бы само собой.
А защита… два стабилитрона(в обе стороны) включенные параметрическим стабилизатором, т.е. на них должно поддерживаться напряжение порога ограничения и диодами подключить ко входу.
Напрямую стабилитронами гасить сигнал НЕ СТОИТ, у них характеристика не такая уж крутая и они начинают проводить ваши микроамперы задолго до порогового напряжения, учитывая что у вас токи и так мизерные — стабилитрон будет сильно искажать напряжение на входе задолго до порога. Я на эти грабли уже наступил.
А так идея очень простая — пока напряжение меньше порога — диод закрыт и имеет очень большое сопротивление(Гигаомы даже для 1N4148) не влияя на измеряемое напряжение. Как только напряжение перевалит за напряжение стабилитрона, диод потихоньку откроется и по меньшей мере на Uст+0.5В будет уже полностью открыт. Смотря на выходное сопротивление пьезоэлемента, ток с него можно и не ограничивать.
Но вообще надо учесть что такое ограничение скажется на самом пьезоэлементе обраткой… как бы это не повлияло на сам эксперимент.
smart
21.12.2015 21:42Промодулировать НЧ сигнал – интересная идея, но разве это поможет обмануть алгоритмы bias adjust, которые все портят? Насколько я понимаю, они тупо смотрят «накопленный» средний уровень и сводят его к нулю – если они так делают на чистом НЧ-сигнале, то добавление ВЧ средний уровень не изменит. Но попробовать можно.
Alexeyslav
21.12.2015 23:10+1Конечно не изменит. В этом вся соль — НЧ составляющая передаётся в амплитуде модулированного сигнала, а не в нём самом, а на амплитуду смещение ноля не влияет.
RomanSansay
22.12.2015 22:33При частоте в 44 кГц частота Найквиста 22 кГц по теории. Не знаю как на практике.
Про напряжение на входе микрофона размышления были такие:
У нас выставляется в драйвере опорное напряжение на микрофон 2.5 \ 3.2 \ 4.2 В. Относительно этого напряжения и происходят колебания в плюс и в минус. Я выставлял 2.5 вольт на звуке, на устройстве своем тоже 2.5 вольт. А размах у меня шел rail-to-rail и ограничивался питающим напряжением. У второго усилителя до +5 вольт на выходе по идее должно было быть. Я предполагал звуковой чип должен оцифровывать диапазон от 0 до 5 вольт и давал ему этот диапазон. Может я еще чего не понимаю, но со звуком ничего не случилось, возможно потому, что мощность сигнала слабая.Alexeyslav
23.12.2015 09:36В каком драйвере выставляется опорное напряжение? там банальный подтягивающий резистор или источник тока для питания транзистора электретного микрофона, дальше идёт развязывающий по постоянке конденсатор, предусилитель и оцифровка в АЦП. Для микрофонного входа чувствительность 2мВ/20мВ а не 5 вольт. Можно конечно дать 5В но это приведёт к перегрузке предусилителя и соответственно клипингу и не будет разницы подадите туда сигнал амплитудой 100мВ или 5В.
RomanSansay
23.12.2015 20:091. Из датащита: Software selectable 2.5 \ 3.2 \ 4.2 VREFOUT as bias voltage for analog input.
2. Programmable +10\+20\+30 dB boost gain for analog microphone. Вот это выбирается в драйвере звукового уст-ва точно. Так предполагаю они взаимосвязаны.
Также посчитал, что период удара сердца на графике составляет 1\12 секунды. То есть частота ударов сердца, если их соединить, составит 12 Гц. На частоте 10 Гц у АЦП усиление составляет -3dB. Если перевести в разы, то сигнал на этой частоте умножается на 0.78. То есть при входящем напряжении в 1 вольт у нас запишется амплитуда 0.78 вольт, что считаю не критичным.
Фух, как трудно общаться через переписку. На словах куда удобнее объяснять, а так каждое слово приходится обдумывать.Alexeyslav
23.12.2015 20:32Для ЭКГ нижний частотный диапазон вроде 0.4Гц или нет?
Какая-то не очень стандартная звуковая карта, обычно напряжение питания микрофона не выбирается никак, и предназначен этот BIAS только для питания микрофона, на АЦП подаётся сигнал без этого смещения за счет конденсатора отсекающего постоянную составляющую. Усиление 10...20...30дБ это уже после отсечения постоянной составляющей и до подачи на АЦП. И еще, кстати, сигнал проходит аттенюатор который может понижать чувствительность микрофона.
tzlom
15.12.2015 21:23Фильтры из схемы можно убрать или это принципиально для функционирования? Для ЭЭГ имеет смысл брать диапазон по-выше, например на не очень хорошем усилителе я беру 0.5-45 Гц, НО это уже цифровой фильтр. Лично я за то чтобы сигнал шёл как можно менее фильтрованным — разные алгоритмы требуют разных полос, фильтрануть всегда можно и потом.
Для теста предлагаю нулевую точку на лоб (под самую кромку волос) а электроды на Cz и Pz, после этого пишем 2 записи — просто сидим смотрим в монитор и сидим с закрытыми глазами расслабившись. Дальше давим 50Гц и полосу типо того что я написал (хотя возможны варианты, возможно даже в вашей полосе получится). На отдыхе будет виден веретёнообразный сигнал называемый альфа-ритм, частота 10-12 Гц. Для успеха нужно точно снижать сопротивление с кожей, протирайте спиртом, крутой раствор соли помогает, но лучше не алюминий а медь (серебро, золото, Ag/Ag-Cl но добыть их сложнее, медяха пойдёт но будет портиться солью), можете попробовать использовать в роли электрода туго свёрнутую ватку пропитанную солевым раствором.
И как верно заметил Meklon — питайтесь от батареи (и без воткнутого Ethernet), иначе там будет одна наводка.
Если есть вопросы или запишете сигнал — скиньте пожалуйста, интересно что можно получить на такой схеме :)
AlexanderG
15.12.2015 22:20Возможно, проще всего откалибровать ЭЭГ будет по альфа-ритму. Он наблюдается почти у всех, постоянно, имеет приличную амплитуду и известны частоты.
aitras
16.12.2015 09:18+2Третий конец подстроечников хорошо бы подключить к средним выводам.
Допустим, нам надо сделать переменное сопротивление. Выводов нам надо два, а у девайса их три. Вроде бы напрашивается очевидная вещь — не использовать один крайний вывод, а пользоваться только средним и вторым крайним. Плохая идея! Почему? Да просто в момент движения по полоске подвижный контакт может подпрыгивать, подрагивать и всячески терять контакт с поверхностью. При этом сопротивление нашего переменного резистора становится под бесконечность, вызывая помехи при настройке, искрение и выгорание графитовой дорожки резистора, вывод настраимого девайса из допустимого режима настройки, что может быть фатально.
Решение? Соединить крайний вывод с средним. В этом случае, худшее что ждет девайс — кратковременное появление максимального сопротивления, но не обрыв. (С)KOLANICH
16.12.2015 12:00Промахнулся немного постом, но пофиг.
есть такой проект https://github.com/OpenBCI, они тоже типа разрабатывают open hardware для снятия eeg
RomanSansay
16.12.2015 20:10У тебя написано про другие подстроечные резисторы. " искрение и выгорание графитовой дорожки резистора" эти резисторы я не использую, потому что одни проблемы с ними
ignat99
16.12.2015 15:03+2Есть готовые системы:
http://www.olimex.com/Products/Duino/Shields/SHIELD-EKG-EMG-PA/open-source-hardware
http://www.olimex.com/Products/Duino/Shields/SHIELD-EKG-EMG/open-source-hardware
http://www.olimex.com/Products/Duino/STM32/OLIMEXINO-STM32/open-source-hardware
Всё вменсте около 40 евро стоит. Сделано хорошими специалистами с качественной аналоговой схемой. Которая работает лучше чем многие китайские поделки (которые используют АЦП с большим количеством битов в отсчёте но в итоге получают сигнал гораздо хуже).
Кстати, по ссылкам есть вся документация на железо (OSH — open-source-hardware), можно просто взять и форкнуть проект платы.
wormball
20.12.2015 15:07Очень познавательная статья, надеюсь, когда-нибудь дойдут руки до того, чтобы ею воспользоваться. Но я вас умоляю — никогда не растягивайте рисунки (да и фотографии тоже) в растровом графическом редакторе! Во-первых, это некрасиво, во-вторых, хабр сам растягивает, когда надо, в крайнем случае можно размер в ХТМЛ прописать. И рисунки лучше в ПНГ выкладывать.
RomanSansay
20.12.2015 22:28Изображения не растягивал. Это хабр. Так изображения маленькие и большие аккуратные были, а он растянул. Про задавать размеры не подумал, попробую отредактировать завтра статью.
wormball
21.12.2015 00:20Ну вот, например, здесь не растянул: geektimes.ru/post/267986 И в моих статьях не растягивал. И вообще я не помню, чтобы кто-то на такое жаловался. Посему я сомневаюсь, что это хабр виноват.
mkovalevich
Высокие частоты, которые убрали эквалайзером, это только шумы техники или характеристика самих ЭК потенциалов тоже?
Про получение ЭЭГ будет интересно почитать.
RomanSansay
Эти частоты приходятся на частоту 50 Гц, а это частота питания сети 220 вольт. Данная наводка не связана с организмом, и её убирают. А про ЭЭГ хочу здесь услышать советы, может кто что делал.
Meklon
Как минимум рекомендую автомобильный аккумулятор как источник питания. Сразу минус наводки по сети.
RomanSansay
Если бы было так просто.
Meklon
Да знаю. Мы у крысы потенциалы снимали. Там ещё веселее. Амплитуды никакие. Но у нас готовый усилитель