Как настроить пульсоксиметр MAX30100
В статье описаны основные параметры настройки модуля «Пульсоксиметр MAX30100». Это высокотехнологичный двухлучевой фотоплетизмограф со встроенной системой компенсации фонового излучения и своим сигма-дельта АЦП.
Упакован в миниатюрный корпус, который располагается на плате с необходимой обвязкой.
Данный модуль можно достать из Склада по ссылке.
Обязательно посмотрите предыдущее видео о его модификации для работы с 5 В Ардуино!
Настройка параметров пульсоксиметр MAX30100
Для подключения датчика используем шину I2C Ардуино.
У модуля достаточно использовать эти 4 вывода: VIN — идет к 5В, GND — к земле, SCL и SDA — к соответствующим выводам на Ардуино. Например, на NANO SCL — A5, SDA — A4, у Arduino ProMicro (это такая уменьшенная версия Леонардо), тут подключается SCL к D3 и SDA к D2.
На ПК использовалась библиотека MAX30100lib она в отличии от некоторыз других неплохо с ним работает. Модифицировал пример RAWDATA.
У модуля есть 4 ключевых параметра.
SAMPLING_RATE — определяет частоту дискретизации от 50 до 1000 Гц, но она сязана со следующим параметром PULSE_WIDTH, определяющим ширину импульса для мигания светодиодов. Их два, а сенсор один, поэтому им нужно мигать поочередно. Но если это делать слишком быстро АЦП не успеет хорошо их оцифровать.
По таблице видим, что максимальное разрешение в 16 бит, а значит точность передачи амплитуды достигается при ширине импульса 1.6 мс. В этому случае у нас есть на выбор две частоты дискретизации 50 и 100. Максимальная частота пульсовой волны 30 Гц, а значит по теореме Котельникова частота дискретизации не должна быть меньше 60 Гц. Поэтому берем 100 Гц с запасом.
Ну а важным настраиваемым параметром является токи на этих светодиодах. Имеются два светотодиода красный и инфракрасный. Инфракрасный обычно используется для получения кривой пульса (фотоплетизмограммы), а красный — добавляется для получения информации о содержании кислорода в крови (сатурации).
Чем больше ток, тем выше яркость, а значит чище сигнал, но выше поднимается смещение. Их нужно настроить так, чтобы амплитуда сигнала была максимальна, но не выходила за пределы АЦП (для 16 бит это 65536 дискретов).
За это отвечают параметры IR_LED_CURRENT и RED_LED_CURRENT.
Посмотрим нарезку сигнала ИК канала с разными токами.
4.4 мА
24 мА
50 мА
Как видно, сигнал постепенно становится все чище, но смещается вверх. Для ИК канала он так и не превысил максимума АЦП.
Теперь сделаем тоже для красного канала
4.4 мА
24 мА
50 мА
Картина аналогичная, но на верхних значениях токов, особенно 50 мА сигнал иногда выходил за границу АЦП, что недопустимо. Значит уровень красного диода должен быть меньше ИК.
Совместные записи Красного и ИК каналов
Если посмотреть эти каналы вместе, то можно подстроить ток красного светодиода точнее.
В итоге получилось, что кривые имеют близкие базовые линии при токе красного 33.8 и ИК 50 мА.
Эту информацию можно использовать в разработках!
Конечно, не исключено, что потребуется учесть другие влияющие факторы для измерения содержания кислорода в крови, но в качестве отправной точки вполне достаточно.
Видеодемонстрация
Следующим шагом будет создание своей версии пульсоксиметра, как части большой измерительной системы.
Не забывайте подписаться на группу ВК и канал YouTub, чтобы оперативно узнать об этой разработке!
(c) Роман В. Исаков, 2021