Библиотека Arduino для мониторинга сердечного ритма с помощью пульсоксиметра

Библиотека Arduino для мониторинга сердечного ритма с помощью пульсоксиметра

Библиотека Arduino для мониторинга сердечного ритма с помощью пульсоксиметра

Один из параметров, отслеживаемых в моем проекте по управлению сном.

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

Содержание

    На этапе проектирования и испытаний устройство для измерения пульса Я разработал несколько небольших программ, которые помогут мне проверить правильность сборки. Во-первых, я написал код ниже, который время от времени (по крайней мере, каждый раз) брал измеренные значения. MAXIMUM_MEASUREMENT_TIME и максимум каждый MINIMUM_MEASUREMENT_TIME), когда они варьировали минимум между одним и предыдущим (значение, соответствующее MINIMUM_SIZE) и контролируется с компьютера с помощью приложения Python чтобы иметь возможность проанализировать их позже.

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

    график измерений пульсоксиметра с

    После сбора данных, как показано на изображении выше, следующей операцией было определить, позволяет ли плотность значений нам вычислить надежным, но «экономным» способом (не осуществляя выборку большего количества данных, чем необходимо) значение Pulso; Как видно на графике ниже, принятые меры, похоже, послужили достижению тех результатов, которых разумно ожидать.

    .

    измерение наличия оксигемоглобина с течением времени с помощью пульсоксиметра

    Далее, используя информацию выборки данных, необходимо было разработать алгоритм, который бы измерял частоту пульса. Придерживаясь графика, для простоты предполагается, что он представляет собой макет, аналогичный комплекс QRS, проще всего, по-видимому, измерить времена между наиболее выступающими частями, при более высоких значениях (что соответствует зоне деполяризации qRs желудочков) отбросить более плоскую и «шумную» зону, которую поэтому труднее обнаружить мера. Принятое решение, соответствующее приведенному ниже тестовому коду, работает согласно следующей процедуре:

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

      Выберите значения нисходящей зоны для измерения (Rs) вершины qRs, как можно ближе к максимуму кривой. Чтобы знать, что восходящая зона покидается, достаточно убедиться, что новое значение меньше предыдущего, и убедиться, что искомое значение еще не найдено, так как в нисходящей зоне вообще несколько значений. зона qRs в зависимости от плотности выборки. Для расчета времени импульса сохраняется значение момента, в который точка была найдена (миллисекунды, возвращаемые функцией миллис ()) и сравнивает его со следующим.

      Чтобы гарантировать, что измеренное значение является наибольшим в нисходящей зоне самой высокой кривой, используется переменная логический (Measure_pulse в этом примере и active_pulse_measurement в библиотеке), который активируется при входе в восходящую зону основной кривой и деактивируется при обнаружении первого нисходящего значения, то есть временного.

      Поскольку продолжительность пульса принято представлять в виде ударов в минуту (ppm), значение времени между полученными импульсами корректируется путем вычисления путем деления общего времени представления (одна минута, 60000 XNUMX миллисекунд) на интервал, полученный по формуле вычитание текущих миллисекунд (текущего значения) из ранее рассчитанных.

      Чтобы избежать ложных измерений (например, при измерении устройством в вакууме), прежде чем принимать его как должное, проверяется, что результат находится между максимальным и минимальным значениями. Хотя в среднем считается, что нормальное значение для здорового взрослого человека в состоянии покоя составляет от 60 до 100 ppm, ниже приведены допустимые значения, у спортсмена в состоянии покоя легко найти 40 ppm, до 200 ppm во время интенсивные физические упражнения и более 100 ppm у взрослых, ведущих малоподвижный образ жизни, в состоянии возбуждения, что является интересным фактором для проекта управления сном. что заставляет меня развивать это устройство для измерения пульса. По этой причине желательно сильно ослабить эти значения, чтобы не были потеряны крайности, которые могли бы точно показать соответствующие аспекты.

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

    Наконец, используя описанный ранее алгоритм, я разработал библиотеку для расчета пульса по обнаружению присутствия гемоглобин или оксигемоглобин (в зависимости от используемой длины волны света) из приведенного ниже кода.

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

    . В любом случае, судя по проведенным мной тестам, в этом нет необходимости; либо устройством, либо поведением Pulso, выборка с определенной частотой дает достаточно информации, и при ее увеличении получается не намного больше (релевантного), а также невозможно сильно уменьшить ее без потери важных данных для расчета; в ранних версиях кода для мониторинга чтения пульсоксиметр Я обнаружил, что нет необходимости придерживаться максимального времени измерения, поскольку, если правильно учитывать вариации последовательных значений, оно было очень близко к минимальному.

    В следующем примере программы показано, как использовать предыдущую библиотеку для измерения Pulso с пульсоксиметр. Помимо создания экземпляра класса Импульс мониторинг уровня оксигемоглобин/гемоглобин и с меньшей периодичностью значение Pulso расчетный и средний.

    Чтобы гарантировать актуальность измерений, перед отображением любого значения запрограммировано время ожидания. Поскольку значение может быть неправильным (например, если пользователь удаляет устройство), значения отображаются только в том случае, если они находятся в диапазоне допустимых значений.

    Оставить комментарий

    Вы могли пропустить