Прибор для измерения сатурации своими руками

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino

В этом проекте мы будем использовать интерфейсный датчик пульсоксиметра MAX30100 с Arduino, который может измерять содержание кислорода в крови и частоту сердечных сокращений и отображать это на ЖК-дисплее 16×2. Концентрация кислорода в крови, обозначаемая как SpO2, измеряется в процентах, а частота сердечных сокращений / пульса измеряется в BPM (ударах в минуту). MAX30100 – это прекрасное решение для пульсоксиметрии и создания пульсометра.

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

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

Здесь-то нам и пригодится датчика пульсоксиметра, такой как MAX30100. Это датчик представляет собой интегрированный датчик для пульсоксиметрии и создания пульсометра. Он объединяет два светодиода, фотодетектор, оптимизированную оптику и обработку аналогового сигнала с низким уровнем шума для обнаружения сигналов пульса и сердечного ритма. Он работает от источников питания 1,8 В и 3,3 В и может быть отключен с помощью программного обеспечения с незначительным током в режиме ожидания, что позволяет источнику питания всегда оставаться подключенным.

Устройство имеет два светодиода: один излучает красный свет, другой излучает инфракрасный свет. Для частоты пульса нужен только инфракрасный свет. И красный свет, и инфракрасный свет используются для измерения уровня кислорода в крови.

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

Оказывается, насыщенная кислородом кровь поглощает больше инфракрасного света и пропускает больше красного света, в то время как деоксигенированная кровь поглощает красный свет и пропускает больше инфракрасного света. Это основная функция MAX30100: он считывает уровни поглощения для обоих источников света и сохраняет их в буфере, который может быть считан через I2C.

Теперь давайте подключим датчик пульсоксиметра MAX30100 к Arduino и отобразим значение в последовательном мониторе. Итак, принципиальная схема и подключение приведена далее.

Подключите Vin-контакт MAX30100 к Arduino 5V или 3.3V, GND к GND. Подключите I2C Pin, SCL и SDA MAX30100 к A5 и A4 платы Arduino.

Исходный код программы для сопряжения пульсоксиметра MAX30100 с Arduino приведен далее. Этот код будет отображать значение в последовательном мониторе. Скопируйте этот код и загрузите его на Arduino. Файлы библиотеки можно скачать по адресу https://drive.google.com/open?id=15w7Hp_Lg7FVVQoou1A56JgNDZADBuN15.

После загрузки кода вы можете положить палец на датчик MAX30100 и открыть монитор последовательного порта, чтобы увидеть значения, как показано на следующем изображении.

Теперь давайте используем ЖК-дисплей 16X2 вместо последовательного монитора, чтобы увидеть значения BPM и SpO2. Соберите схему, как показано далее.

Подключите Vin-контакт MAX30100 к Arduino 5V или 3.3V, GND к GND. Подключите контакт I2C, SCL и SDA MAX30100 к A5 и A4 Arduino. Аналогичным образом подключите вывод LCD 1, 5, 16 к GND Arduino и от 2, 15 до 5 В VCC. Аналогичным образом подключите вывод 4, 6, 11, 12, 13, 14 ЖКД к выводу 13, 12, 11, 10, 9, 8 Arduino. Используйте потенциометр 10K на выводе 3 ЖК-дисплея, чтобы отрегулировать контрастность ЖК-дисплея.

Читайте также:  Кукольные домики своими руками легко

Исходный код программы:

После загрузки кода вы можете положить палец на датчик MAX30100, и на ЖК-дисплее начнут отображаться процентное содержание кислорода и количество ударов в минуту (BPM).

Источник

Пульсоксиметр — устройство измерения кислорода в крови

Одним из средств диагностики при COVID-19 является измерении уровня кислорода в крови. Сейчас эти измерения делают с помощью прибора — пульсоксиметра. Желательно производить ряд измерений при различных условия, так как у разных людей показания могут меняться.

Содержание кислорода в крови у здорового человека составляет 96-100%. Быстрое снижение показателя указывает на развитие легочных либо сердечно-сосудистых заболеваний. Показатель ниже 90% свидетельствует об острой дыхательной недостаточности. Уменьшение значения на 3-4% от обычного для человека уровня может указывать на наличие тяжелого заболевания. В состоянии покоя уровень кислорода в крови (сатурация) обычно увеличивается, во время сна и при физических нагрузках – снижается.

Более насыщенная кислородом кровь имеет более яркий оттенок красного цвета. С изменением насыщенности крови кислородом (сатурации) меняется степень поглощения и отражения лучей красного и инфракрасного света, направленных на капилляры. При этом, проходя через кровь и ткани, световой сигнал приобретает пульсирующий характер под воздействием изменяющегося объема кровеносных сосудов.

Во время начала эпидемии такие приборы сильно подскочили в цене. Впрочем, также подскочила цена и на бесконтактные термометры. Например, в апреле месяце цена на бесконтактные термометры доходила до 14 тыс.руб.

Сейчас цены уже пришли в норму и самый дешевый пульсоксиметр на Али можно купить за 300 рублей, а бесконтактный термометр и того дешевле.
Мастер предлагает нам собрать пульсоксиметр своими руками.





Шаг первый: общие сведения
В данной самоделке мастер использует сенсорный модуль MAX30102 представленный в начале 2016 года компанией Maxim Integrated. MAX30102 — это интегрированный модуль биосенсора пульсоксиметра и монитора сердечного ритма. Он объединяет красный и инфракрасный светодиоды, фотодетектор, оптические компоненты и малошумную электронную схему с подавлением окружающего света. MAX30102 работает от источника питания напряжением 1,8 В. Отдельный источник питания 5,0 В требуется для излучения встроенных светодиодов.

Взаимодействие с внешними устройствами происходит через стандартный интерфейс I2C.
Мастер подключит датчик к плате ESP32, чтобы принимать входные данные и отображать контролируемый уровень кислорода в приложении Blynk на смартфоне.







Подробно о приложении Blynk можно прочесть в этой статье.

Шаг четвертый: код
Прилагаемый здесь код является полным. Просто нужно внести некоторые изменения в соответствии с «Blynk Auth Token» пользователя и настройками Wi-Fi. Загрузка стандартная, с помощью Arduino IDE.
Max30102_Oxymeter.ino

Источник

Пульсоксиметр своими руками

Во время самоизоляции я попытался сделать пульсоксиметр из того, что уже есть у меня в закромах

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

  • Arduino Uno.
  • Датчик KY-039 – его можно собрать из двух резисторов и фотодиода.
  • Красный светодиод.
  • Резистор на 330 Ом – 2 шт.
  • Дисплей LCD 16×2 I2C.

Я разбил инструкцию на 5 частей:

  1. Насыщение крови кислородом и COVID-19.
  2. Как работает измеритель пульса.
  3. Измерение пульса через обнаружение пиков сигнала с датчика.
  4. Изменение датчика пульса KY-039 для измерения насыщения крови кислородом.
  5. Как измеряется насыщение.
Читайте также:  Микрометр для клапанов своими руками

Подробности

1. Насыщение крови кислородом и COVID-19

В данном невероятном периоде нашей жизни мы многое узнали о вирусах, лёгких, хирургических масках и о том, как правильно мыть руки. Все читали о таких симптомах, как кашель, повышение температуры и затруднение дыхания. Мы также знаем, что один из способов измерить затруднения дыхания – это узнать количество кислорода в крови.

Это можно сделать косвенным методом при помощи такого медицинского устройства, как пульсоксиметр. Вы, наверное, уже видели его – это неинвазивное устройство, цепляющееся на палец, за работу которого отвечают мигающие огоньки.

Если у вас всё в порядке со здоровьем, насыщение кислородом вашей крови составляет 95% или выше. Когда оно опускается ниже 90%, вы кашляете и у вас повышается температура – это проблема.

Так давайте же попробуем собрать пульсоксиметр!

2. Как работает измеритель пульса

Перед измерением насыщения крови кислородом нам нужно понять, как работает датчик пульса. У меня есть датчик KY-0039 с инфракрасным светодиодом и фотодиодом (вероятно, OP550A или LTR-301).

Я нашёл его в наборе из нескольких датчиков:

Как видно по схеме, это просто инфракрасный светодиод, светящий на фотодиод. У него есть ещё два резистора, для защиты светодиода и получения слабого сигнала с датчика. Палец помещается между фотодиодом и светодиодом, как на фото:

Излучаемый инфракрасным светодиодом свет частично поглощается ногтем, кожей и остальными частями пальца. Но поглощение не остаётся неизменным, поскольку оно меняется вместе с потоком крови, идущей по венам. Когда сокращается сердце, оно проталкивает кровь по венам, в результате чего меняется поглощение света. С контакта S датчика KY-039 можно снимать данные о токе, генерируемом светом, поглощённым фотодиодом.

3. Измерение пульса через обнаружение пиков сигнала с датчика

Качественно считать значение изменяющегося сигнала – задача непростая. В данном случае сигнал слабый, а шума много, поэтому для того, чтобы найти какие-то осмысленные значения, нам придётся провести определённые вычисления.

Выражаю благодарность Йохану Ха за его пост с объяснениями того, как строить среднее значение для небольшой выборки данных, а также удалять шум настольной лампы (содержащийся в её свете). Однако я обнаружил, что мой датчик хорошо считывает сигнал, в условиях хорошей освещённости, а если накрыть его тёмной тряпочкой, то шума становится больше.

В своём коде Ха создаёт массив, где хранит значения, а потом уменьшает их, вычисляя среднее на основе X последних значений, прочитанных с датчика. Он также описывает способ найти тот момент, когда сигнал начинает расти (когда N подряд значений сигнала превышают опорное), чтобы искать пики.

При помощи программы SerialPlot мне удалось лучше подобрать необходимое количество измерений, которое позволит нам корректно определить N (константа rise_threshold в коде). На примере графика ниже – если задать это число больше 7, то некоторые удары пульса программа пропустит и не заметит:

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

4. Взламываем датчик пульса KY-039 для измерения насыщения крови кислородом

Наша кровь поглощает свет по-разному в зависимости от длины его волны. Красный свет лучше поглощает кровь, содержащая больше кислорода, поэтому мы можем сравнить измерения и найти процентное содержание кислорода в крови. Это значение называется Sp02%.

Sp02% полностью называется «насыщение кислородом периферийных капилляров», и обозначает примерное содержание кислорода в крови. Точнее, это процентное соотношение насыщенного кислородом гемоглобина по сравнению с общим количеством гемоглобина в крови.

Читайте также:  Объемные ели своими руками

У нашего датчика KY-039 есть только один инфракрасный (950 нм) светодиод. Нам нужно добавить к схеме красный светодиод (600 нм), подсоединить его к контакту Arduino, а кроме того, нам надо отсоединить инфракрасный светодиод от Vcc и подключить его к ещё одному контакту Arduino. Я также использовал два резистора на 330 Ом для защиты светодиода.

Схема изменённого датчика:

Теперь мы можем включать инфракрасный светодиод, считывать показания с контакта S датчика KY-039, а потом выключать инфракрасный светодиод и включать красный светодиод, и снова считывать показания с контакта S.

Если мы построим два графика, мы увидим, что значения, полученные с ИД всегда меньше, чем значения красного светодиода.

5. Как измеряется насыщение

Насыщение измеряется как функция параметра R, который определяется через максимум и минимум двух сигналов:

Rnum = (REDmax — REDmin) / REDmin;
Rden = (IRmax — IRmin) / IRmin;

R = Rnum / Rden;
Уровень насыщения кислородом (SpO2%) – это функция от R (подробности я нашёл в данной работе одного студента из Миланского политехнического).

У каждого инструмента функция от R получается своей, и чтобы найти правильную функцию, соотносящую R и SpO2%, новый пульсоксиметр нужно откалибровать по показаниям другого пульсоксиметра.

Как указано в 3-м разделе, подсчитать количество пиков довольно легко. Но нам кроме этого нужно ещё найти максимумы и минимумы двух кривых (для красного светодиода и для инфракрасного светодиода).

Для этого нам нужно оценить «период» сердцебиений (длительность каждого из них) и поделить его на скорость считывания показаний (в моём коде это 40 мс – 20 для красного светодиода и 20 для инфракрасного светодиода). Период сердцебиения – это время между двумя пиками кривых сигнала.

Теперь мы можем проанализировать N последних запросов (N = период / 40) и найти REDmax, REDmin, IRmax и IRmin. Затем через max и min мы можем вычислить R. R, N и период вычисляются после каждого сокращения сердца.

Как откалибровать самодельный пульсоксиметр, чтобы перейти от R к SpO2%?

Функцию, связывающую R с SpO2%, можно аппроксимировать прямой (SpO2 = K * R + M). Нам понадобятся две точки, чтобы определить параметры K и M, определяющие уравнение прямой – то есть, две пары значений SpO2% и R. Единственный способ найти их – использовать другой пульсоксиметр и прочесть значения с него.

Во время калибровки необходимо быть внимательным – на наш самодельный пульсоксиметр влияет освещение, поэтому его уровень нужно поддерживать одинаковым во всех случаях. Я пробовал закрывать его тёмной тканью, однако при отсутствии света сигнал получается слишком слабым и его сложно отличить от шума.

Рекомендую делать много измерений. Для получения двух разных точек на графике рекомендую понижать значения SpO2%, задерживая дыхание или выдыхая и вдыхая их пластикового пакета.

Найдя две хороших точки, вам останется решить уравнение 2-го порядка. Так можно будет найти параметры K и M.

Я в итоге решил добавить ещё и дисплей, чтобы сразу видеть все показания, а также добавил в код массив измерений. Я вывожу на дисплей измерения, только когда нахожу не менее 5 значений подряд, не сильно отличающихся друг от друга. Таким образом я избавляюсь от шума, вызванного недостаточно качественными компонентами или освещением. Однако всё равно измерения R получаются не очень стабильными, и коэффициент насыщения сильно скачет. Думаю, результаты были бы лучше, если бы я смог усилить сигнал.

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

Источник

Оцените статью
Своими руками