В этой статье вы познакомитесь с конструкцией прибора, позволяющего измерять пульсовую волну и передавать данные по радиоканалу на андроид устройство.
Лирическое вступление
Фотоплетизмограф – прибор, который определяет изменение размера органов человека с помощью фоточувствительных элементов. Он может использоваться для измерения пульса. В этом случае регистрируется изменение интенсивности света от искусственного источника из-за прохождения пульсовой волны. Как правило, для регистрации используются последняя фаланга пальца, мочка уха, запястье или висок. Очень часто принцип фотоплетизмографии применяется в различных спортивных аксессуарах.
Для регистрации фотоплетизмограммы нужны источник света и фотоприемник. Источником обычно служит светодиод, а приемником – фототранзистор или фотодиод. Свет, излученный источником, поглощается телом человека. В первом приближении можно сказать, что степень поглощения зависит от количества крови в той точке тела, где находится датчик. При изменении количества крови, изменяется поглощение света и сигнал на выходе фотоприемника.
По отношению друг к другу источник и приемник могут располагаться двумя способами. Эти способы называются «на отражение» и «на просвет». В случае «на отражение» приемник и источник располагаются в одной плоскости. Свет от источника попадает на кожу, частично поглощается и, отражаясь, попадает на приемник. На следующем рисунке чувствительный элемент собственного производства. Он состоит из печатной платы, с напаянными на неё фототранзистором и светодиодом. Провод идет к измерительной коробочке.
В варианте «на просвет» источник и приемник располагаются по разные стороны от части тела. На следующем рисунке они находятся в разных половинках пульсометрической клипсы. Излученный свет проходит палец насквозь и попадает в фотоприемник. Эта клипса предназначена для измерения пульса с мочки уха. На картинке палец, потому что так удобнее фотографировать.
Сигнал с фотоприемника поступает на схему усиления и фильтрации. Пример такой схемы приведен на следующем рисунке. Резисторы R1 и R2 задают ток светодиода и рабочую точку фототранзистора соответственно. Разделительный конденсатор C1 убирает постоянную составляющую, которая возникает из-за освещенности помещения, где происходит измерение. Подтягивающий резистор R3 сдвигает напряжение в положительную область (так как усилитель однополярный). Напряжение сдвига подается также в обратную связь усилителя, чтобы избежать насыщения. После усиления сигнал поступает на еще один разделительный каскад, чтобы окончательно убрать напряжение сдвига. Затем происходит оцифровка данных с помощью АЦП.
Эта схема является распространённой, но не единственной. Все желающие могут пройти по ссылке к интересной статье фирмы Микрочип. Кроме измерения пульса с помощью фотодиодов вы там прочитаете о принципах измерения насыщения крови кислородом (оксигенации), там же приведены используемые типовые схемные решения, и программы для микроконтроллера. Кстати, совсем недавно у Микрочипа появилась демонстрационная плата для пульсометрии.
Описание фотоплетизмографа
Для повышения мобильности измерения пульсограммы было разработано устройство, содержащее сенсор «на отражение», схему усиления, микроконтроллер и радиомодуль HC-05 стандарта блютус.
Принцип действия
Основным элементом датчика является микроконтроллер PIC16F1705. У него на борту встроенный операционный усилитель, АЦП, ЦАП, COM порт и достаточно ресурсов для проведения несложных вычислений. Первоначально разработанная схема включения усилителя соответствовала приведенной выше. После испытаний некоторые узлы были изменены. В частности, в обратную связь вместо напряжения смещения добавлен конденсатор 47 мкФ. Он выполняет функцию устранения постоянной составляющей, которая создается делителем напряжения. Для снижения энергопотребления светодиод подключается к выходу ЦАП, который работает только в момент выборки данных АЦП. Питающее напряжение поступает от Li-Ion аккумулятора LP502030 емкостью 250 мАч. Зарядка происходит через разъем мини-USB и схему, реализованную на контроллере заряда MCP73831. Радиосвязь обеспечивается модулем HC-05. Для связи с компьютером или смартфоном используется символьный протокол. Датчик располагается в корпусе OKW minitec, в комплекте с которым может идти ремешок для крепления на запястье.
Датчик имеет следующие характеристики:
- измерение пульсовой волны;
- частота дискретизации 200 Гц;
- аккумулятор 250 мАч, заряд от USB;
- не менее пяти часов непрерывной работы;
- размеры 50 х 45 х 16 мм;
- вес 20 г.
Программа для Android, обработка данных
Для отображения пульсовой волны на графике и сохранения данных было разработано андроид приложение. Подпрограмма работы с блютус модулем использует коды из свободно распространяемой программы терминала BlueTerm. От блютус адаптера данные передаются в класс-декодер для расшифровки, а затем в класс-обработчик для формирования массива выборок и, возможно, проведения необходимых расчетов. В настоящий момент библиотеки расчета ЧСС и других значимых параметров не подключены. После обработчика данные поступают в главное окно приложения, где выводятся на графике и сохраняются в файл, который может быть открыт сторонним приложением. Во время работы над проектом я наткнулся на хорошую программу LabChart, которая работает с несколькими форматами файлов, в том числе текстовыми. Существуют платная и бесплатная версии этой программы. Бесплатная отображает данные на графике и позволяет проводить математическую обработку: сглаживание, фильтрацию и Фурье анализ. На следующем рисунке изображено окно этой программы с графиком данных, полученных от датчика. Применен фильтр высоких частот.
Платная версия программы пока не попала мне в руки. На сайте разработчика описываются весьма любопытные характеристики. Программа позволяет рассчитывать ЧСС, моду, амплитуду моды, строить интервалограммы и многое другое.
Продолжение следует
В следующих статьях я расскажу о некоторых деталях, которые необходимо учитывать при проектировании аппаратной части фотоплетизмографа, методах обработки данных, устранения помех и артефактов.
P.S.
Вы можете ознакомиться с чертежами и программой датчика, а также с исходными кодами андроид приложения.
Добавлено (20.05.2015)
— в репозиторий в папку info/ добавлен файл с записью пульсограммы за 10 минут;
— добавлена АЧХ аналоговой части датчика, её оригинальный файл также в репозитории;
Комментарии (31)
Delsian
17.05.2015 13:56Если мне не изменяет память, HC-06 имеет только ВТ-2.0, в то время как Heart Rate Profile определен в спецификации ВТ4.0. Неувязочка. К тому же новые модули с BLE стоят уже как бы дешевле старых НС-06
abrakada Автор
17.05.2015 14:43+1Вы правы, HRP не поддерживается, данные записываются в файл и могут быть проанализированы с помощью стороннего ПО, например physionet.org или упомянутого LabChart
wowscheg
17.05.2015 17:21+3Линейка зачет. Хороший рекламный ход, демонстрация возможностей так сказать. Как получить такую?
abrakada Автор
17.05.2015 19:38+1Любимая линейка, заказывал платы на этом заводе, дали в довесок. Удобна тем, что измерение начинается от края, а не как обычно с отступом. На обратной стороне еще для справки технологические возможности приведены.
valexey
18.05.2015 08:54+1У вас фотоплетизмограмма очень похожа на производную от фотоплетизмограммы по времени. Либо вы ОЧЕНЬ сильно прижали сенсор к пальцу.
valexey
18.05.2015 09:08+1Быть может это последствия устранения постоянной составляющей? То есть вы на аппаратном уровне взяли производную, таким образом убрав постоянку, но в итоге у вас не фотоплетизмограмма, а лишь производная от нее.
Кстати, вместе с постоянной составляющей вы выплеснули и ребенка — на фотоплетизмограмме видно мого интересного и кроме ударов сердца :-) Впрочем, поскольку у вас лишь 10 bit, то выбора конечно нет, иначе даже пульс не увидеть.abrakada Автор
18.05.2015 09:57Спасибо за комментарий. Да, сигнал поступает на АЦП после дифференцирования. Поясните пожалуйста, что именно теряется. Насколько я знаю, постоянная составляющая устраняется даже в диагностических кардиографах. На всякий случай сниму АЧХ, чтобы точно знать, какие частоты подавляются.
valexey
18.05.2015 10:18Ну, например вы таким образом скорее всего не сможете увидеть на фотоплетизмограмме дыхание и другие интересные низкочастотные явления.
Если добавить еще красный светодиод, то можно было бы попробовать считать сатурацию (SpO2), но после дифференцирования это тоже, мягко говоря, будет проблематично сделать.
Из фотоплетизмограммы можно вытаскивать далеко не только пульс ;-)abrakada Автор
18.05.2015 10:32Я согласен, что лучше использовать полный сигнал, но дыхательную аритмию можно посчитать по изменению ЧСС. А сатурацию тот же Микрочип считает используя схему с разделительными конденсаторами (ссылка в статье).
kenoma
18.05.2015 10:38+1Дыхательная аритмия у разных возрастов по разному проявляется, не говоря уже о том, что далеко не все частоты дыхания сказываются на ЧСС.
valexey
18.05.2015 10:51Для подсчета дыхания не достаточно дыхательной аритмии.
abrakada Автор
18.05.2015 10:59Вы имеете ввиду частоту дыхания?
valexey
18.05.2015 11:01+1Да, конечно. Дахательная аритмия может проявляться по разному, может вообще практически не проявляться. Ловить дыхание только на нее полагаясь — нельзя.
Более того, на изменение интервалов ударов сердца влияет не только дыхание. И порою отличить одно от другого там сложно.abrakada Автор
18.05.2015 11:06Ну, точнее получится, если использовать датчики экскурсии дыхания, то есть движения груди или живота, как это делают в полиграфах и аппаратах БОС. Но мне кажется, вы намекаете, что можно посчитать частоту дыхания по плетизмограмме, если не секрет, поделитесь знаниями, конкретно этот момент меня очень заинтересовал.
valexey
18.05.2015 11:17Я не намекаю, я прямо говорю :-) Более того, это уже довольно успешно делают. Есть пачка патентов и статей на эту тему.
Но это намного тяжелее алгоритмически чем считать пульс. Частенько используют комбинацию например вейвлетов + какой-то метод машинного обучения чтобы из результатов вейвлет-преобразования вытащить дыхание.
valexey
18.05.2015 10:19Кстати, а можно посмотреть на картинку не фильтрованного сигнала?
abrakada Автор
18.05.2015 10:36Конечно, файл данных, которые идут от датчика, есть в репозитории в папке info. В программе МК используется усреднение со скользящим окном, постараюсь в ближайшее время вывести в файл данные напрямую от АЦП и постараюсь привести АЧХ и осцилограмму с эмиттера фототранзистора.
valexey
18.05.2015 10:58+1А кстати, зачем городить огород с собственной аналоговой частью и АЦП, если можно воспользоваться например вот этим: moderndevice.com/product/pulse-heartbeat-sensor
moderndevice.com/news/pulse-sensor-ii-getting-the-lights-on
Ну или использовать не готовую эту платку, а именно Si1143, если хочется именно такой форм-фактор как у вас. Это будет и дешевле, и качественней.abrakada Автор
18.05.2015 11:12Спасибо, буду изучать. Мой датчик это кусок от другого более сложного прибора из области реабилитационных вибротренажеров, который я в свободное время превратил в такой вот гаджет.
valexey
18.05.2015 12:59Скользящее окно конечно хорошо, но наверно лучше бы (если хватает производительности, а её таки должно хватить) спроектировать нормальный fir-фильтр и польоваться им. Ну или вообще без фильтрации выдавать.
PS. Если будет возможность выложить данные хотя бы 10 минут измерения, было бы интересно взглянуть.abrakada Автор
18.05.2015 13:15Обязательно выложу. Данные с АЦП можно фильтровать в LabChart. Микрочип, кстати, тоже радует в этом смысле — пользуюсь вот таким дизайнером фильтров для МК
kenoma
Насколько мне известно, ритмограмма сердца длительностью меньше 30-40 минут особой информационной ценности для здорового человека не представляет. Как долго может вести запись ваше устройство с учетом комфортности для пользователя?
abrakada Автор
Несколько часов, сенсор на пальце, датчик на запястье. Можно собрать прибор с ушной клипсой. При умеренной двигательной активности качество пульсограммы хорошее. Есть также наработки по устранению артефактов от движения, они пока тестируются.