Датчик пульса Pulse Sensor: принцип работы и связка с Arduino

Как оптический датчик Pulse Sensor регистрирует сердечный ритм, как подключить его к Arduino и вывести частоту пульса и график на компьютер.
Что измеряет датчик
Пульс — это ритмичные колебания стенок сосудов, возникающие при сокращениях сердца. Самый понятный его параметр — частота, выражаемая в ударах в минуту. Наблюдение за ней важно при диагностике сердечно-сосудистых заболеваний и полезно во время занятий спортом, чтобы не допускать перегрузки организма.
Pulse Sensor — доступный аналоговый датчик сердечного ритма, рассчитанный на работу с микроконтроллерами.

Метод фотоплетизмографии
В основе датчика лежит фотоплетизмография. Объём крови в сосудах меняется в зависимости от фазы сердечного цикла, а вместе с ним меняется оптическая плотность участка тела, на котором ведётся измерение, — например, пальца или мочки уха. На плате расположены зелёный светодиод и фотоприёмник: напряжение на фотоприёмнике колеблется в такт пульсациям.

Записанный во времени сигнал образует характерную кривую — фотоплетизмограмму, или ППГ-диаграмму.

Датчик усиливает сигнал и нормализует его относительно середины напряжения питания (V/2). Он реагирует на относительные изменения интенсивности света: при неизменной освещённости сигнал держится около середины диапазона АЦП, при росте интенсивности кривая идёт вверх, при снижении — вниз.

Частоту пульса определяют по интервалу между точками графика, в которых сигнал на переднем фронте импульса достигает 50% амплитуды волны.
Параметры и подключение
| Напряжение питания | 5 В |
| Ток потребления | 4 мА |
| Выход | аналоговый |
Выводов три: VCC — 5 В, GND — земля, S — аналоговый выход. Контакт S соединяют с аналоговым входом Arduino; в примере это A0. Кроме платы Arduino Uno и самого датчика, ничего не требуется.
Чтение пульса в скетче
Пример построен на библиотеке iarduino_SensorPulse. Объект датчика создаётся с указанием входа A0, в setup запускаются последовательный порт на 9600 и сам датчик. В цикле сначала проверяется, приложен ли датчик к пальцу: Pulse.check(ISP_VALID)==ISP_CONNECTED. Если да, в порт выводятся два числа — текущее аналоговое значение (ISP_ANALOG) и вычисленная частота пульса (ISP_PULSE). Если контакта нет, печатается «error».
Визуализация на компьютере
Чтобы увидеть фотоплетизмограмму на экране, используют среду Processing, внешне похожую на Arduino IDE. На плату загружается скетч PulseSensorAmped_Arduino_1dot1, а на компьютере в Processing запускается парный скетч PulseSensorAmpd_Processing_1dot1: он принимает данные из последовательного порта и строит по ним график. Для компьютеров Mac есть ещё один вариант — программа Pulse Sensor, которая с тем же скетчем на Arduino показывает график, уровень сигнала и значение пульса.
Советы по измерению
- Если зелёный светодиод не горит, следует проверить правильность подключения.
- Если значения «скачут», датчик с одной стороны оборачивают чёрной лентой, чтобы внешний световой фон оставался постоянным.
- При явно неверных показаниях стоит проверить положение датчика: его прикладывают между центром подушечки и сгибом пальца.