- Digitrode
- цифровая электроника вычислительная техника встраиваемые системы
- Пульсоксиметр своими руками на основе датчика пульсоксиметрии MAX30100 и Arduino
- Пульсоксиметр — устройство измерения кислорода в крови
- Пульсоксиметр своими руками
- Во время самоизоляции я попытался сделать пульсоксиметр из того, что уже есть у меня в закромах
- Подробности
- 1. Насыщение крови кислородом и COVID-19
- 2. Как работает измеритель пульса
- 3. Измерение пульса через обнаружение пиков сигнала с датчика
- 4. Взламываем датчик пульса KY-039 для измерения насыщения крови кислородом
- 5. Как измеряется насыщение
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 частей:
- Насыщение крови кислородом и COVID-19.
- Как работает измеритель пульса.
- Измерение пульса через обнаружение пиков сигнала с датчика.
- Изменение датчика пульса KY-039 для измерения насыщения крови кислородом.
- Как измеряется насыщение.
Подробности
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 получаются не очень стабильными, и коэффициент насыщения сильно скачет. Думаю, результаты были бы лучше, если бы я смог усилить сигнал.
Чтобы не зависеть от окружающего освещения, я добавил в схему ещё один, белый светодиод, и стал считывать показания, закрывая всё тёмной тканью. Так получается гораздо лучше, чем просто прикрывать всё тканью – идёт сильный сигнал, не зависящий от освещения в помещении.
Источник