Схемы на все случаи жизни

Теория без практики — мертва! Практика без теории — слепа!

Дата публикации:

Дата изменения:

Портативный пульсоксиметр

Добрый день, уважаемые радиолюбители.

Одной из популярных тем в радиолюбительской среде является изготовление медицинских приборов различного назначения: ЭКГ-мониторов, высокоточных термометров, пульсометров, пульсоксиметров, слуховых аппаратов и пр. Решили и мы немного приложить к этому руку — сконструировать портативный пульсоксиметр.

Сразу следует отметить, что над проектом работала смешанная команда, состоящая из школьников и студентов. При этом студенты выступали в роли наставников и старших товарищей, помогая разобраться школьникам в различных технических деталях: основах электроники и программирования, основах электро- и радиоизмерений, основах 3D-моделирования и проектирования, основах электро- и радиомонтажа. Об итоговых результатах работы мы вам сегодня и расскажем.

Итак, начнём со схемы электрической принципиальной, представленной на рисунке ниже. 

Схема электрическая принципиальная пульсоксиметра

По представленной схеме хорошо видно, что основой пульсоксиметра служит специализированный модуль GY-MAX30102, выполненный на одноимённой микросхеме MAX30102. Данная микросхема является высокочувствительным пульсоксиметром и датчиком сердечного ритма для переносных устройств. На основе MAX30102 выпускается множество различных модулей, но в основном они отличаются друг от друга только размером, а также наличием или отсутствием встроенных стабилизаторов напряжения. Структурная схема микросхемы представлена на рисунке далее [6,7].

Схема электрическая структурная датчика MAX30102

В своём составе MAX30102 содержит 2 светодиода: красный, излучающий на длине волны 660 нм и инфракрасный, излучающий на длине волны 880 нм. Кроме того, в составе микросхемы есть приемник излучения – фотодиод.

Для измерения пульса и насыщения крови кислородом используется метод фотоплетизмографии. MAX30102 излучает свет двух длин волн в ткань и измеряет интенсивность отражённого света. Пульсовая волна, распространяясь от сердца по артериям достигает периферических тканей, вызывая ритмичные изменения объёма крови в периферических кровеносных сосудах. Эти изменения модулируют свет, создавая слабые пульсации сигнала (AC-составляющая) на фоне сильного постоянного отражения (DC-составляющая) от неподвижных тканей, венозной крови и не пульсирующей части артериальной крови (см. график ниже).

Принцип определения пульса и насыщения крови кислородом

При измерении частоты пульсовой волны в периферических сосудах из сигнала выделяется пульсирующая АС-компонента и удаляется постоянная DC-компонента. Далее программно выделяются пики (либо фронты) пульсовой волны в этой АС-компоненте. После этого остаётся только измерить среднее время между пиками (фронтами) и пересчитать в частоту пульсовой волны. Но при чем тут частота сердечных сокращений (ЧСС)? А дело в том, что в норме у здорового человека ЧСС совпадает с частотой пульсовой волны. Но бывают и исключения…

В медицинской практике существует состояние, называемое дефицитом пульса. В таком состоянии частота сердечных сокращений выше, чем частота пульсовой волны. Суть в том, что не каждое сокращение сердца приводит к эффективному выбросу крови и появлению пульсовой волны в периферических сосудах. В таком состоянии истинную частоту сердечных сокращений можно определить только по ЭКГ. В связи с этим данные понятия всё же стоит разделять.

При измерении же насыщения крови кислородом производится измерение интенсивности отражения красного и инфракрасного света. Дело в том, что разные формы гемоглобина по-разному поглощают свет с разными длинами волн (см. график ниже).

Принцип определения пульса и насыщения крови кислородом

Изначально предполагается, что количество метгемоглобина и карбоксигемоглобина мало. Соответственно основными циркулирующими в крови формами является гемоглобин и оксигемоглобин. Таким образом, при измерениях в реальности оценивается отношение оксигемоглобина ко всему гемоглобину, способному переносить кислород (сумме оксигемоглобина и гемоглобина) т.е. SpO₂≈[HbO₂]/([HbO₂]+[Hb])×100% [1].

На первом этапе для двух длин волн выделяются пульсирующая AC-составляющая и постоянная DC-составляющая. Далее вычисляются нормированные амплитуды пульсаций для каждой длины волны и их отношение т.е. R=(AC_R/DC_R)/(AC_IR/DC_IR). Полученное отношение R эмпирически коррелирует с насыщением артериальной крови кислородом SpO₂. Для перевода отношения R в величину SpO₂ используются специализированные калибровочные таблицы. Такие таблицы составляются заранее на здоровых добровольцах.

Основная проблема пульсоксиметров такого рода – мы изначально предполагаем, что в крови содержится небольшое количество метгемоглобина и карбоксигемоглобина. Но что будет, если человек отравился угарным газом и в крови содержится большое количество карбоксигемоглобина?

По графику зависимости поглощения от длины волны хорошо видно, что карбоксигемоглобин и оксигемоглобин практически одинаково поглощают свет в красной области. Но при этом карбоксигемоглобин практически не поглощает в инфракрасной области. По итогу пульсоксиметр покажет сильное завышение насыщения крови кислородом т.к. алгоритм ошибочно интерпретирует присутствие карбоксигемоглобина как аномально высокую долю оксигемоглобина…

Для устранения данного недостатка и получения возможности различить все 4 формы гемоглобина измерения необходимо проводить минимум на 4 различных длинах волн. Впрочем, это уже совсем другая история [1,2].…

Ну что же, вернёмся к дальнейшему рассмотрению аппаратной части нашего пульсоксиметра.

Микросхема MAX30102, помимо упомянутых выше светодиодов и фотодиодов имеет блок подавления фоновой засветки, встроенный датчик температуры кристалла, цифровой фильтр, набор регистров, драйверы светодиодов, встроенный опорный генератор и блок I2C интерфейса. Соответственно коммуникация модуля GY-MAX30102 с другими устройствами осуществляется как раз по интерфейсу I2C.

Вся обработка данных, а также вывод итоговой информации реализован на плате ESP32-S3 Super Mini. Вычислительных возможностей и имеющейся в распоряжении памяти более чем достаточно для построения пульсоксиметра даже с применением программных цифровых фильтров, а также возможностью передавать данные по интерфейсам Wi-fi или Bluetooth.

Результаты обработки поступающей информации выводятся на дисплей TFT 1.8 дюйма на основе популярного контроллера ST7735 по интерфейсу SPI.

Модуль часов точного времени (RTC) DS3231 mini предназначен для фиксации точного времени момента измерения ЧСС и насыщения крови кислородом. Это позволяет оценивать динамику изменения показаний во времени. Модуль часов работает на той же физической шине I2C, что и датчик пульсоксиметра. Это возможно благодаря различию индивидуальных адресов устройств, подключенных к общей шине I2C.

Линейный стабилизатор напряжения на основе AMS1117-3.3 обеспечивает модуль часов стабильным напряжением питания 3.3 вольта. Дело в том, что модули, подключённые к одной физической шине I2C, должны иметь одинаковые логические уровни сигналов для корректной работы. В модуле пульсоксиметра стабилизатор напряжения питания на 3.3 вольта расположен на самой плате модуля. Именно поэтому на модуль пульсоксиметра исходно подается напряжение питания 5 вольт. А на плате модуля часов такого стабилизатора нет – поэтому потребовался внешний стабилизатор напряжения питания.

Двухцветный светодиод HL1 – индикатор процесса заряда встроенного АКБ. Фактически при сборке пульсоксиметра необходимо с модуля USB зарядки АКБ с DC-DC преобразователем удалить родные SMD светодиоды и подключить двухцветный светодиод, расположенный на лицевой панели корпуса пульсоксиметра. Модуль зарядки не содержит какого-то фирменного названия – его внешний вид можно увидеть на фото с процессом сборки пульсоксиметра в корпус.

Двухцветный светодиод HL2 предназначен для отображения различных режимов работы пульсоксиметра: передачи данных по BLE, отсутствия пальца на датчике пульсоксиметра.

Светодиод HL3 – встроенный в кнопку S1 светодиод. Данный светодиод может быть использован для индикации состояния резервного источника питания.

В качестве резервного источника питания использован литий-полимерный АКБ типоразмера 405070 ёмкостью 3000 мА·ч с номинальным выходным напряжением 3.7 вольта. Данный АКБ размещается в корпусе в отдельном аккумуляторном отсеке, отделённом от основной части корпуса перегородкой.

Контроль степени остаточного заряда осуществляется оценочно по величине напряжения на АКБ. Напряжение снимается с делителя R3-R4, фильтруется конденсатором С1 и подается на вход АЦП ESP32-S3 Super Mini.

Следует признать, что данный способ контроля является простейшим и не позволяет сказать точно на каком уровне на данный момент находится заряд АКБ. Таким способом можно в основном определить, когда АКБ практически полностью заряжен или практически полностью разряжен. Связано это с формой кривых заряда и разряда литий-ионных АКБ: в диапазоне от 20 до 80% заряда кривая практически параллельна горизонтальной оси т.е. изменение напряжения на АКБ в данном диапазоне мало и обычно составляет около 0.2-0.3 вольта.

Крайние значения напряжения на «линейном» участке были определены экспериментально для использованного экземпляра АКБ путём снятия кривых заряда и разряда. Соответственно для других экземпляров АКБ пороговые уровни могут отличаться и требуют корректировки в коде программы. Среднее значение на линейном участке было получено математически. Таким образом индикатор уровня заряда имеет 3 градации: АКБ заряжен, АКБ разряжен и промежуточное значение между ними.

Конденсаторы С2, С3, С5 – дополнительный фильтр напряжений питания. Конденсатор С2 – общего напряжения питания. В качестве данного конденсатора необходимо использовать конденсатор с низким эквивалентным последовательным сопротивлением (LOW ESR). Конденсатор С3 устанавливается как можно ближе к выводам питания модуля ESP32-S3 Super Mini. Конденсатор С5 устанавливается как можно ближе к выводам питания модуля GY-MAX30102 [3,4].

Кнопка S1 одновременно отключает общее напряжение питания устройства и АКБ от зарядного устройства. Такой подход позволяет исключить дополнительный разряд АКБ когда пульсоксиметр не используется. Правильнее было бы перенести группу контактов кнопки S1.2 на отключение напряжения питания не после модуля зарядки, а перед ним. Но такой подход потребует демонтажа родного USB разъема зарядки и установки отдельного разъёма на корпус с соответствующей распайкой выводов. Либо на плате зарядки необходимо перерезать соответствующие дорожки и припаять к ним провода кнопки…

Сборка пульсоксиметра в корпус не представляет сложности – необходимо все модули установить в пазы в корпусе и зафиксировать клеем из термопистолета. После этого производится распайка модулей в соответствии со схемой электрической принципиальной. Программирование платы ESP32-S3 Super Mini производится из среды Arduino IDE стандартным способом с использованием углового USB-разъёма.

В архиве puls-1-1.zip размещены все необходимые материалы для самостоятельной сборки пульсоксиметра: корпуса основного блока пульсоксиметра и выносного датчика в формате Компас-3D V18.1 и формате STL, полный текст программы пульсоксиметра, схема электрическая принципиальная в формате SPlan. Основной файл программы: Puls-ESP32.ino. Файл User_Setup.h – файл конфигурации дисплея для библиотеки TFT_eSPI.

Программа работает достаточно просто: при включении пульсоксиметра происходит начальная настройка портов ввода-вывода, разрядности АЦП, параметров интерфейсов SPI и I2C. Далее подаётся короткий звуковой сигнал – сигнал начала инициализации периферийных устройств.

Первым инициализируется дисплей и проводится его самотестирование в формате RGB. В приложенном варианте программы функция самотестирования отключена – данный блок кода закомментирован. Далее на дисплей последовательно выводится логотип ОмГТУ, логотип пульсоксиметра, выводится надпись «Sensor search».

После этого производится инициализация RTC и при первом запуске программы сразу после прошивки производится установка даты и времени, соответствующей дате и времени прошивки.

Далее происходит проверка подключения модуля GY-MAX30102 и его первичная настройка: настраивается яркость светодиодов, величина усреднения показаний, режим работы, частота дискретизации, ширина импульсов через светодиоды, разрядность квантования уровней и пр.

В заключении процесса инициализации производится инициализация и настройка BLE.

В основном цикле программы производится вычисление ЧСС и насыщения крови кислородом, получение даты и времени с RTC, оценка уровня заряда АКБ и вывод всех соответствующих данных на дисплей и передача по BLE.

Более подробно ознакомиться с алгоритмом программы можно изучив исходный код программы, содержащий достаточно подробные комментарии.

На фото ниже представлен внешний вид основного блока пульсоксиметра с посадочными местами под модули.

Внешний вид корпуса пульсоксиметра

А в следующей подборке фото представлено 2 варианта верхней крышки основного блока пульсоксиметра. Нетрудно заметить, что во втором варианте отсутствует пара светодиодов. Именно поэтому на схеме электрической принципиальной есть соответствующее примечание. В таком варианте функционал индикации уровня заряда от USB-зарядки, режим передачи показаний по BLE и индикация отсутствия пальца на датчике пульсоксиметра не используется.

В подборке фото ниже представлен корпус выносного датчика перед сборкой, процесс сборки основного блока пульсоксиметра, выносной датчик в собранном виде, а также полностью собранный пульсоксиметр.

А на фото далее представлен пульсоксиметр при проведении испытаний. Хорошо видно, что ЧСС, насыщение крови кислородом, дата и время выводятся как на дисплей, так и в BLE-терминал телефона.

Пульсоксиметр в процессе испытания

В качестве усовершенствования ПО данного пульсоксиметра можно предложить добавить автоматическую индивидуальную калибровку при первом размещении пальца на датчике после включения. Это позволит сделать работу пульсоксиметра более корректной с разными типами кожи. Оптимальный режим после калибровки можно определить по максимальной величине АС-составляющих сигналов для красного и инфракрасного каналов, а саму калибровку выполнить путём перебора в цикле основных параметров настройки модуля пульсоксиметра.

В качестве другого улучшения ПО можно предложить вынести повторяющиеся части кода программы в отдельные функции: функцию измерения ЧСС, функцию измерения насыщения крови кислородом, функцию вывода информации на дисплей и пр. Кроме того можно добавить возможность ручной настройки основных параметров пульсоксиметра через BLE.

На фото ниже – часть команды, работавшей над пульсоксиметр с тремя его версиями: от первого прототипа до конечного варианта устройства.

Подведение итогов проекта

Рассмотренный в данной статье пульсоксиметр по итогу стал победителем международного научно-технического системно-инженерного конкурса-акселератора НТСИ SkART, международной научно-практической конференции школьников Политех-2025 и ряда других конкурсов.

А на этом на сегодня всё. С уважением, Андрей Савченко, Колесников Михаил, Неупокоева Анна, Мыштаев Дархан, Веревкин Александр, Пиньгин Павел.

P.S. На видео ниже [5] показан итоговый видеоролик, посвящённый данному проекту.

Список использованной литературы:

1. Медицинские приборы. Разработка и применение. – М.- Медицинская книга, 2004. – 720 с.

2. Джуди Херман. Оптомеханическая интеграция мониторов сердечного ритма в носимые на запястье устройства. Журнал «Электронные компоненты», №7, 2020 год.

3. Хоровиц П., Хилл У. Искусство схемотехники: В 3-х томах/ Пер. с англ.: Б. Н. Бронина, И. И. Короткевич, А. И. Коротова и др. — Изд. 4-е, переработанное и дополненное. — М.: Мир, 1993

4. Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство / Перевод с нем. под ред. д-ра техн. наук А. Г. Алексенко. — М.: Мир, 1982. — 512 с.

5. Портативный пульсоксиметр (итог)

6. Виктор Чистяков. Пульсоксиметрия от Maxim: новый датчик MAX30102. Журнал «Новости электроники», номер 7, 2016 год

7. MAX30102. Техническая документация

Главная страница » Портативный пульсоксиметр

Последние публикации:

Яндекс.Метрика
Top.Mail.Ru